Oracle 数据库中 DB_FILES 定义了数据库中数据文件的个数,如果创建数据库文件时超过DB_FILES 定义的值就会报 ORA-00059 这个错误。

DB_FILES参数值,默认200,所以在默认情况下,数据库的最大大小,大约是200*30G大小,此参数不做修改没关系。但当数据量大于此范围后,就需要做相应调整。以下操作是在11G环境中进行的。当然,在11g以上环境可在PDB级别操作。主备库的环境中,应具有相同的参数值。

此参数,重启数据库后生效。RAC实例需全部重启。

那么如何解决这个 ORA-00059 问题呢,请参考以下。

01 查看参数值

首先我们通过SQL查询出目前DB_FILES 参数值是多少。一般Oracle默认值是200,当然你可以修改的更大一点,

SQL> show parameter db_files;

NAME                                 TYPE         VALUE
------------------------------------ ------------ ------------------------------
db_files                             integer      200

02 修改参数值

修改 DB_FILES 的默认值 根据实际情况调整 DB_FILES 需要的值,这里举例设置成600,DB_FILES 生效需要重启数据库实例。

1 单机环境修改步骤

1 修改 DB_FILES 参数值

SQL> alter system set db_files=600 scope=spfile;

2 关闭数据库

SQL> shutdown immediate

关闭过程需要一段时间,等执行完成后,再执行第3步。

3 重启数据库

SQL> startup

等待命令执行成功,服务正式启动。

4 检查参数值

检查修改后的 DB_FILES 值

SQL> show parameter db_files;

单机Oracle环境修改 DB_FILES 值完成。

2 RAC 环境修改步骤

1 修改 DB_FILES 参数值

在第一个节点执行如下命令(第二个节点也可以)。

SQL> alter system set db_files=600 scope=spfile sid='*';

这里sid=’*’是指在所有实例上生效。

2 关闭数据库

这里,在第一个节点上关闭数据库。

SQL> shutdown immediate;

关闭过程需要一段时间,等执行完成后在执行第3步。

3 重启数据库

SQL> startup

等待命令执行成功,服务正式启动。

4 检查参数值

修改后的 DB_FILES 值

SQL> show parameter db_files;

RAC环境中该节点 DB_FILES 值完成。

注:rac环境中,停止监听的命令一般都是在 grid 帐号下执行。