$ORACLE_HOME/dbs目录下的的spfileORCL.ora是一个二进制文件,不能手动编辑,修改后会导致oracle数据库无法正常启动。某日在操作数据库的过程中不慎将其修改,并且没有备份。我在这里描述一下恢复的过程,方法不一定特别好,凑合能用。
1. 用dbca新建一个oracle数据库实例dborcl
[oracle@cat dbs]#dbca
建立实例完成后,$ORACLE_HOME/dbs目录下会生成文件spfiledborcl.ora
2. 删除已经换掉的spfileORCL.ora文件,将$ORACLE_HOME/dbs/spfiledborcl.ora拷贝为spfileORCL.ora
[oracle@cat dbs]#rm spfileORCL.ora
[oracle@cat dbs]#cp spfiledborcl.ora spfileORCL.ora
3. 重启oracle服务器
本机设置了自动启动ORCL实例,如果没有设置开机自启动,也可以收到启动,启动实例完成后用lsnrctl status查看,实例名字却显示为ORCL,登陆数据库可以看到确可以看到数据库里面的内容为新建的实例。这可以看出oracle启动的时候会去找dbs目录下的找初始化文件spfile,按照系统配置的变量启动了dborcl实例。
4. 导出oracle初始化文本文件
[oracle@cat dbs]#sqlplus / as sysdba
SQL> create pfile="pfile.ora" from spfile="spfileORCL.ora"; --生成的文件会在当前目录下
SQL> shutdown immediate; --关闭数据库
SQL> exit
5. 编辑文本文件pfile.ora,修改文件路径
*.audit_file_dest='/home/oracle/app/admin/ORCL/adump'
*.audit_trail='db'
*.compatible='11.2.0.0.0'
*.control_files='/home/oracle/app/oradata/ORCL/control01.ctl','/home/oracle/app/fast_recovery_area/ORCL/control02.ctl'
6. 将编辑后的pfile.ora文件生成为spfileORCL.ora
[oracle@cat dbs]#sqlplus / as sysdba
SQL> create spfile="spfileORCL.ora" from pfile="pfile.ora"; --生成的文件会在当前目录下
SQL> startup --启动数据库
SQL> exit
7. 完成