文件说明:这里所说的参数文件指的是spfile,该文件存储的是实例启动的参数和控制文件的路径
模拟故障:清空该文件
echo ‘’ > $ORACLE_HOME/dbs/spfileorcltest.ora
现象:修改数据库参数时会报错
SQL> alter system set open_cursors=400;
alter system set open_cursors=400
*
ERROR at line 1:
ORA-01565: error in identifying file
'/u01/app/oracle/product/11.2.0/db_1/dbs/spfileorcltest.ora'
ORA-27046: file size is not a multiple of logical block size
Additional information: 1
修复:使用rman还原参数文件
RMAN> list backup of spfile;
BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
22 Full 9.73M DISK 00:00:02 17-MAR-20
BP Key: 22 Status: AVAILABLE Compressed: NO Tag: TAG20200317T133602
Piece Name: /home/oracle/backupdir/c-2750922031-20200317-00
SPFILE Included: Modification time: 17-MAR-20
SPFILE db_unique_name: ORCLTEST
RMAN> restore spfile to ‘/home/oracle/spfileorcltest.ora’ from ‘/home/oracle/backupdir/c-2750922031-20200317-00’;
mv /home/oracle/spfileorcltest.ora /u01/app/oracle/product/11.2.0/db_1/dbs/
SQL> shutdown immediate
SQL> startup
注意在还原spfile的时候如果还原到spfile原先的位置,会报ORA-32011: cannot restore SPFILE to location already being used by the instance
所以需要还原到一个新的路径,然后手工移过去
PS:参数文件也可以从内存中直接创建一个新的,更省事(create spfile=’/home/oracle/spfileorcltest.ora’ from memory;)