spfile一般在$ORACLE_HOME/dbs(linux)目录,如果你丢失了spfile并不会引起实例立刻停掉,你的实例可以继续操作,尽管当你restore spfile的时候需要关闭重启实例,那么可以通过多种方式进行恢复
1).通过alert_sid.log,alert里面包含你修改过的所有参数,可以根据alert日志重新创建pfile,再创建spfile恢复
2).如果pfile还存在
shutdown immediate;
create spfile from pfile;
创建spfile
3).如果存在之前的spfile的备份,可以在rman 里面配置控制文件自动备份,spfile随着控制文件一起备份
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/home/oracle/rmanback/control_%F';
注意事项:
如果实例已经用spfile启动,那么你不能覆盖存在的spfile;
当有recovery catalog 的时候能简化你的恢复过程,因为你不需要设置dbid
?
rman演示存在spfile备份的恢复(不连接catalog)
1、删除spfile,pfile
rm -rf spfiletest.ora inittest.ora
2、关闭实例
shutdown immediate;
3.启动实例到nomount 状态,当spfile不可用时,rman用虚拟的参数文件启动实例
RMAN> startup force nomount;
?
?
startup failed: ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file '/home/u01/app/oracle/product/11.2.0/db_1/dbs/inittest.ora'
?
?
starting Oracle instance without parameter file for retrieva l of spfile
Oracle instance started
?
?
Total System Global Area 158662656 bytes
?
?
Fixed Size 2226456 bytes
Variable Size 130025192 bytes
Database Buffers 20971520 bytes
Redo Buffers 5439488 bytes
4.restore spfile from spfile autobackup
如果你想要restore spfile从自动备份,你必须要设置dbid,然后restore spfile from autobackup;
restore spfile from '/home/oracle/rmanback/control_c-2171455666-20150309-02' --手动指定路径
?
RMAN> SET DBID 320066378;
RMAN> RUN {
SET CONTROLFILE AUTOBACKUP FORMAT
FOR DEVICE TYPE DISK TO '/home/oracle/rmanback/control_%F';
RESTORE SPFILE FROM AUTOBACKUP;
}
?
?
?
RMAN> set dbid 2171455666;
?
?
executing command: SET DBID
RMAN> set CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/home/oracle/rmanback/control_%F';
?
?
executing command: SET CONTROLFILE AUTOBACKUP FORMAT
?
?
RMAN> restore spfile from autobackup;
?
?
Starting restore at 2015-03-09 18:52:31
using channel ORA_DISK_1
?
?
channel ORA_DISK_1: looking for AUTOBACKUP on day: 20150309
channel ORA_DISK_1: AUTOBACKUP found: /home/oracle/rmanback/control_c-2171455666-20150309-02
channel ORA_DISK_1: restoring spfile from AUTOBACKUP /home/oracle/rmanback/control_c-2171455666-20150309-02
channel ORA_DISK_1: SPFILE restore from AUTOBACKUP complete
Finished restore at 2015-03-09 18:52:33
5.启动实例
?
?
RMAN> startup force;
?
?
Oracle instance started
database mounted
database opened
?
?
Total System Global Area 1068937216 bytes
?
?
Fixed Size 2235208 bytes
Variable Size 700449976 bytes
Database Buffers 360710144 bytes
Redo Buffers 5541888 bytes