Oracle 数据库中 DB_FILES 定义了数据库中数据文件的个数 如果创建数据库文件时超过DB_FILES 定义的值就回报 ORA-00059 这个错误。
那么如何解决这个 ORA-00059 问题呢,请参考以下教程。
01、首先我们通过SQL查询出目前DB_FILES 定义值是多少。
通过 SSH 登录数据库服务器,如果是Oracle RAC 环境,登录任意一个节点都可以。
通常使用的是 oracle 帐号,命令如下:
ssh oracle@xxx.xxx.xxx.xxx
登录成功后,执行如下命令
sqlplus / as sysdba
SQL> show parameter db_files;
输出如下:
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_files integer 200
一般Oracle默认值是200,当然你可以修改的更大一点,
02、修改 DB_FILES 的默认值
根据实际情况调整 DB_FILES 需要的值,这里举例设置成400,DB_FILES 生效需要重启数据库实例。
单机 Oracle 修改 DB_FILES 步骤如下:
1、通过如下命令进行修改 DB_FILES 值
SQL> alter system set db_files=350 scope=spfile;
2、关闭数据库
SQL> shutdown immediate
关闭过程需要一段时间,等执行完成后在执行第3步。
3、重启数据库
SQL> startup
等待命令执行成功,服务正式启动。
4、检查修改后的 DB_FILES 值
SQL> show parameter db_files;
输出结果如下:
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_files integer 400
至此单机Oracle环境修改 DB_FILES 值完成。
RAC 环境下修改 DB_FILES 值步骤如下:
1、登录任意一个节点执行如下命令
SQL> alter system set db_files=350 scope=spfile sid='*';
这里sid=’*’是指在所有实例上生效。
2、在第一个节点上关闭数据库
SQL> shutdown immediate
关闭过程需要一段时间,等执行完成后在执行第3步。
3、在第一个节点上重启数据库
SQL> startup
等待命令执行成功,服务正式启动。
4、检查修改后的 DB_FILES 值
SQL> show parameter db_files;
输出结果如下:
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_files integer 400
至此RAC环境中该节点 DB_FILES 值完成。
PS:其他节点逐次按照该步骤进行,需要注意的时不要在一个节点数据库实例没有启动完成就去做第二个节点,否则会出错。
写在最后
至此如果在 Oracle 中修改 DB_FILES 介绍完了,当然这里在重启数据库 shutdown immediate 命令执行之前并没有做停止监听的操作,根据需要可先执行停止监听的操作,需要注意的是rac环境中,停止监听的命令一般都是在 grid 帐号下执行。
如果你有不同看法或更好的建议请留言。