说明
Oracle数据库中DB_FILES定义了数据文件的个数,其参数默认值是200,在默认情况下也是数据库的最大大小,大约是200*30G的大小,此参数不做修改没关系,一旦数据文件总量大于此范围后,必须做相应调整,否则将无法增加表空间的容量。
ORA故障
如果数据库的数据文件超过DB_FILES默认大小,将会报ORA-00059这个错误。如下:
ORA-00059: maximum number of DB_FILES exceeded |
准备工作
备注:本次为生产环境下完成DB_FILES调整,建议调整前将完成数据备份,避免操作失误导致数据库数据丢失。
环境
Oracle版本:Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
Oracle规划:Oracle RAC
查看DB_FILES当前参数
SQL> show parameter db_files NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_files integer 200 |
查看当前数据文件的总量
SQL> select count(*) from dba_data_files; COUNT(*) ---------- 200 |
备份spfile文件
提示:rac环境下,请不要轻易使用“create pfile from spfile;”命令创建PFILE文件,否则数据库无法启动。
建议:增大db_files参数需要修改参数文件,为此修改参数文件前需要备份参数文件。
SQL> create pfile='/u01/app/oracle/dbpfile.ora' from spfile; |
调整db_files参数大小
注意:若是生产环境,建议和操作系统的limit参数核实,避免超过操作系统的open file数量,避免调整db_files参数大小时将出现报错等问题。
本次修改按顺序对实例1和实例2完成。如下:
SQL> alter system set db_files=600 scope=spfile sid='gszhdb1'; System altered. SQL> alter system set db_files=600 scope=spfile sid='gszhdb2'; System altered. |
备注:若是对RAC环境下所有实例同时调整,可以将sid实例名改为“*”。如下:
SQL> alter system set db_files=600 scope=spfile sid='*'; 此操作在rac环境下的任意节点执行都能完成。 |
停止rac节点的监听
如下操作用户为:grid
方式1:通过lsnrctl命令停止监听
# 登录到grid用户完成停止监听(rac节点都要执行) lsnrctl stop # 查看监听状态(rac节点都要执行) lsnrctl status |
方式2:通过srvctl命令停止监听(推荐该方式)
# 节点1停止监听完成 srvctl stop listener -n db1 # 节点2停止监听完成 srvctl stop listener -n db2 # 查看监听状态 srvctl status listener -n db1 srvctl status listener -n db2 参数“-n”是节点的主机名称 |
也可以通过如下命令停止rac节点的监听,如下:
srvctl stop listener srvctl status listener 此操作在rac环境下的任意节点执行都能完成。 |
说明:没有使用lsnrctl命令,个人感觉lsnrctl命令不适合管理RAC环境的监听,lsnrctl对监听的操作有时会同步不到crs中,因此一直不建议使用lsnrctl。
停止和启动rac节点实例
如下操作用户为oracle
方式1:通过sqlplus方式停止和启动实例
注意:必须按顺序一个一个停止rac节点的实例,再按序启动rac节点实例,不能再一个节点完成停止和启动实例后再去另一个节点完成停止和启动实例,否则将提示数据库不兼容问题。
# 节点1停止实例完成 SQL> shutdown immediate; # 节点2停止实例完成 SQL> shutdown immediate; # 节点1启动实例完成 SQL> startup mount SQL> alter database open # 节点2启动实例完成 SQL> startup mount SQL> alter database open |
方式2:通过srvctl命令停止和启动实例
can启动rac节点的监听
如下操作用户为:grid
# 节点1启动监听完成 srvctl start listener -n db1 # 节点1启动监听完成 srvctl start listener -n db2 # 查看监听状态 srvctl status listener -n db1 srvctl status listener -n db2 |
检查rac集群状态
如下操作用户为:grid
crs_stat -t |
检查db_files设置参数值
# 检查节点1 SQL> show parameter db_files NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_files integer 600 # 检查节点2 SQL> show parameter db_files NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_files integer 600 |
实操总结
Oracle RAC数据库修改静态参数,不能使用轮流启动的方式,必须把RAC所有节点的实例都全部关闭,然后再启动所有实例,否则回提示数据库参数不兼容,实例将无法启动。