spfile丢失后恢复

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,启动数据库即可
由于是昨天做的测试.所以有点模糊了,记下来以供以后参考.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值