本文测试了误删除spfile,pfile,init.ora等文件后的恢复方法,考虑多种场景,在不同场景下进行参数文件恢复。
第一步:连上数据库,查看spfile文件所在路径
第二步:查看参数文件路径下文件信息
第三步:为了便于测试,这里创建一个pfile文件
查看新创建的pfile文件
查看每个参数文件的内容
第四步:模拟参数文件被误删除
第五步:检查数据库是否还能正常工作
显然,现在数据库是可以正常工作的,因为数据库启动过程中已经将spfile参数文件的信息读到内存中。
第六步:这里模拟在数据库运行时,及时发现参数文件被误删除,进行恢复。
这里需要用到Oracle11gR2的新特性,对于Oracle官方文档的路径为:
Home / Database / Oracle Database Online Documentation 11g?Release 2 (11.2) / Database Administration/SQL Language Reference/What's New in the SQL Language Reference?
可以找到
CREATE PFILE has new syntax that lets you create a parameter file from current system-wide parameter settings.
CREATE SPFILE has new syntax that lets you create a system parameter file from current system-wide parameter settings.
点击create pfile或者create spfile进入链接页面,可以找到SQL命令:
CREATE PFILE [= 'pfile_name' ]
FROM { SPFILE [= 'spfile_name']
| MEMORY
} ;
CREATE SPFILE [= 'spfile_name' ]
FROM { PFILE [= 'pfile_name' ]
| MEMORY
} ;
这里执行恢复语句:
查看恢复后的spfile和pfile文件:
第七步:重启数据库,检查恢复后的参数文件能否正常使用,并进行分析
这里出现ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance的问题,是因为background_dump_dest和user_dump_dest两个参数在11gR1中废弃了,在alert日志中可以看到明确提示:
对于两个废弃参数信息,可以查看官方文档
Home / Database / Oracle Database Online Documentation 11g?Release 1 (11.1) / Database Administration/Reference/1?Initialization Parameters
在BACKGROUND_DUMP_DEST目录下看到:
Note:
This parameter is ignored by the new diagnosability infrastructure introduced in Oracle Database 11g Release 1, which places trace and core files in a location controlled by the DIAGNOSTIC_DEST initialization parameter.
在USER_DUMP_DEST目录下看到:
Note:
This parameter is ignored by the new diagnosability infrastructure introduced in Oracle Database 11g Release 1, which places trace and core files in a location controlled by the DIAGNOSTIC_DEST initialization parameter.
第八步:调整pfile参数文件,并创建spfile文件后启动
打开pfile文件,可以看到两个弃用的参数后面都有注释“#Deprecate parameter”
将两个废弃的参数注释,然后生成spfile文件后启动
第九步:模拟在第六步的时候未能及时发现参数文件被误删除,然后数据库关闭了,启动的时候报错。
第十步:找到alert日志,通过alert日志中的启动信息恢复pfile参数文件。
找到最近几次成功的日志信息,选取其中正确无误的一条日志信息:
创建pfile文件initcams.ora,将alert日志中的参数信息填入:
直接使用pfile文件启动数据库:
第十一步:这里假设第十步的alert日志中没找到参数信息,需要进行恢复,假设init.ora还能找到。
然后根据实际环境情况修改initcams.ora,启动数据库,不过可能会出现部分参数的值与原数据库不一致,需要DBA进行调整。
第十二步:这里假设第十步的alert日志中没找到参数信息,需要进行恢复,假设init.ora不能找到。
使用pfile启动数据库:
检查alert日志
修改pfile文件,指定control_files参数(如果真的忘了,可以用linux命令查找)
再次使用pfile启动数据库
查看错误信息
这里需要在参数文件配置一个compatible参数
再次使用pfile启动数据库
数据库启动成功。同时,我们也从测试过程中知道,参数文件至少需要配置db_name,control_files和compatible等3个参数信息,可以让数据库成功启动。不过启动之后也需要DBA对数据库参数进行调整。