spfile丢失灰复
1.spfile的自动备份
在rman命令行,通过以下命令可以启用控制文件的自动备份
configure controlfile autobackup on.
在rman中,备份controlfile时会一起backup spfile.当运行了alter system之类修改spfile命令的语句,可以在alter.log中看到oracle自动备份spfile
1)用以下语句查看是否启动自动备份
select * from v$rman_configuration
2)检查已有的备份spfile可以通过v$backup_spfile
select * from v$backup_spfile
2.在有备份情况下丢失spfile
如果有了以上的备份后丢失了默认启动的spfile,可以通过以下几种方法启动数据库
1)在mount或者nomount情况下,直接在rman中输入
restore spfile to 'spfileXXX.ora' from autobackup,即可恢复
2)在数据库实例也没有启动的情况下有两种做法
第一种是手工临时编辑一个pfile文件(最少的spfile应该是只需要一个dbname,我用过这种方法启动失败了),我的临时pfile是在alterOrcl.ora中拿出来的启动参数
在编辑一下(注意在这步时,有几个参数是从log中拿出来后要加引号括住它的参数值,还有最好删掉db_domain为空的这行).后启动startup pfile='XXX.ora' nomount
再进入rman中输入restore spfile to 'spfileXXX.ora' from autobackup,关掉数据库,再重启动不需指定pfile直接用你resotre的spfile启动数据库
第二种,是直接在rman中启动数据库(注意在这会启动实例但是是有错的,在这步没有读parameter),然后去 select * from v$backup_spfile找到最近的spfile的位置及
名字,后在rman中输入:restore spfile to 'spfileXXX.ora' from 需要恢复的spfile name.重启动数据库即可
3.无任何备份的情况下丢失spfile
1)没有关掉数库(因为数据库运行其它spfile不会像controlfile一样会锁定)的话,用以下语句查询出已经改变的参数值(即不是默认值)
spool /tmp/initemp.ora
select '*.'||name||' = '||value from v$parameter where isdefault ='FALSE';
spool off;
对以下生成的临时文件编辑,后启动数据时指定pfile参数启动后生成spfile或者直接在空闲实例create spfile from pfile再用spfile启动
2)直接去alterXXX.ora中找到最后一次启动时读的spfile参数,然后查看这以后的修改的spfile参数,取出这两部分加以编辑生成pfile,生成spfile,启动数据库即可
由于是昨天做的测试.所以有点模糊了,记下来以供以后参考.
1.spfile的自动备份
在rman命令行,通过以下命令可以启用控制文件的自动备份
configure controlfile autobackup on.
在rman中,备份controlfile时会一起backup spfile.当运行了alter system之类修改spfile命令的语句,可以在alter.log中看到oracle自动备份spfile
1)用以下语句查看是否启动自动备份
select * from v$rman_configuration
2)检查已有的备份spfile可以通过v$backup_spfile
select * from v$backup_spfile
2.在有备份情况下丢失spfile
如果有了以上的备份后丢失了默认启动的spfile,可以通过以下几种方法启动数据库
1)在mount或者nomount情况下,直接在rman中输入
restore spfile to 'spfileXXX.ora' from autobackup,即可恢复
2)在数据库实例也没有启动的情况下有两种做法
第一种是手工临时编辑一个pfile文件(最少的spfile应该是只需要一个dbname,我用过这种方法启动失败了),我的临时pfile是在alterOrcl.ora中拿出来的启动参数
在编辑一下(注意在这步时,有几个参数是从log中拿出来后要加引号括住它的参数值,还有最好删掉db_domain为空的这行).后启动startup pfile='XXX.ora' nomount
再进入rman中输入restore spfile to 'spfileXXX.ora' from autobackup,关掉数据库,再重启动不需指定pfile直接用你resotre的spfile启动数据库
第二种,是直接在rman中启动数据库(注意在这会启动实例但是是有错的,在这步没有读parameter),然后去 select * from v$backup_spfile找到最近的spfile的位置及
名字,后在rman中输入:restore spfile to 'spfileXXX.ora' from 需要恢复的spfile name.重启动数据库即可
3.无任何备份的情况下丢失spfile
1)没有关掉数库(因为数据库运行其它spfile不会像controlfile一样会锁定)的话,用以下语句查询出已经改变的参数值(即不是默认值)
spool /tmp/initemp.ora
select '*.'||name||' = '||value from v$parameter where isdefault ='FALSE';
spool off;
对以下生成的临时文件编辑,后启动数据时指定pfile参数启动后生成spfile或者直接在空闲实例create spfile from pfile再用spfile启动
2)直接去alterXXX.ora中找到最后一次启动时读的spfile参数,然后查看这以后的修改的spfile参数,取出这两部分加以编辑生成pfile,生成spfile,启动数据库即可
由于是昨天做的测试.所以有点模糊了,记下来以供以后参考.