oracle配置文件丢失恢复

       配置文件的主要作用记录各部分内存结构的值和控制文件的位置。

1、模拟服务器上的spfile、pfile丢失

[oracle@redhat4 dbs]$ rm spfileorcl.ora

[oracle@redhat4 dbs]$ rm initorcl.ora

此时启动数据库报错如下:

SQL> startup nomount
ORA-01078: failure in processing system parameters
LRM-00109: ������������������������ '/u01/app/oracle/product/10.2.0/db_1/dbs/initjiagulun.ora'
SQL> 

2、恢复过程

    (1)、有rman备份的情况

    事先使用rman备份过全库或者配置文件,如果要恢复也要启动到mounted状态,就是必须读到控制文件信息。所以修改init.ora模板文件使oracle能启动内存结构和找到控制文件位置。

    修改init.ora,主要修改实例名(db_name)和控制文件位置(control_files),控制文件可以通过find查找ctl后缀的文件得到

db_name = orcl

control_files = (/u01/app/oracle/oradata/JIAGULUN/controlfile/o1_mf_7p5b2xty_.ctl,/u01/app/oracle/oradata/JIAGULUN/controlfile/o1_mf_7p5b2xty_.ctl)

    然后将这个配置文件存为initorcl.ora,因为 oracle启动时会先去dbs下寻找spifle+oracle_sid.ora,如果找不到则找init+oracle_sid.ora

    使用sqlplus启动oracle到nomount状态

  SQL> startup nomount
  ORA-32004: obsolete and/or deprecated parameter(s) specified
  ORA-00371: not enough shared pool memory, should be atleast 128265318 bytes
    原因是shared pool设置的太小,修改initorcl.ora将shared_pool_size修改为100M,再启动

SQL> startup nomount;
ORA-32004: obsolete and/or deprecated parameter(s) specified
ORACLE 例程已经启动。

Total System Global Area  171966464 bytes
Fixed Size		    2019352 bytes
Variable Size		  134221800 bytes
Database Buffers	   33554432 bytes
Redo Buffers		    2170880 bytes
SQL> 

SQL> alter database mount;
alter database mount
*
第 1 行出现错误:
ORA-00201: ?????? 10.2.0.1.0 ? ORACLE ?? 10.2.0.0.0 ???
ORA-00202: ????:
''/u01/app/oracle/oradata/JIAGULUN/controlfile/o1_mf_7p5b2xty_.ctl''

          解决这个问题参考:http://blog.csdn.net/jlds123/article/details/10187471

          这个错误解决后,oracle就可以启动到mounted状态,就可以使用rman恢复spfile了

         使用rman 查看spfle的备份记录

RMAN> list backup of spfile;


备份集列表
===================

BS 关键字  类型 LV 大小       设备类型 经过时间 完成时间  
------- ---- -- ---------- ----------- ------------ ----------
1181    Full    1.34M      DISK        00:00:02     09-6月 -13
        BP 关键字: 1240   状态: EXPIRED  已压缩: YES  标记: TAG20130609T194357
段名:/oradata/whole_51obpfaa_1_1_20130609
  包含的 SPFILE: 修改时间: 04-6月 -13

BS 关键字  类型 LV 大小       设备类型 经过时间 完成时间  
------- ---- -- ---------- ----------- ------------ ----------
1242    Full    1.34M      DISK        00:00:02     14-6月 -13
        BP 关键字: 1303   状态: EXPIRED  已压缩: YES  标记: TAG20130614T185730
段名:/oradata/whole_6uoc6ij8_1_1_20130614
  包含的 SPFILE: 修改时间: 04-6月 -13

BS 关键字  类型 LV 大小       设备类型 经过时间 完成时间  
------- ---- -- ---------- ----------- ------------ ----------
1250    Full    1.36M      DISK        00:00:02     21-6月 -13
        BP 关键字: 1313   状态: EXPIRED  已压缩: YES  标记: TAG20130621T184613
段名:/oradata/whole_76ocp0k9_1_1_20130621
  包含的 SPFILE: 修改时间: 04-6月 -13

BS 关键字  类型 LV 大小       设备类型 经过时间 完成时间  
------- ---- -- ---------- ----------- ------------ ----------
1263    Full    1.36M      DISK        00:00:02     28-6月 -13
        BP 关键字: 1328   状态: EXPIRED  已压缩: YES  标记: TAG20130628T180559
段名:/oradata/whole_7jodbcnh_1_1_20130628
  包含的 SPFILE: 修改时间: 04-6月 -13

BS 关键字  类型 LV 大小       设备类型 经过时间 完成时间  
------- ---- -- ---------- ----------- ------------ ----------
1284    Full    1.36M      DISK        00:00:02     09-8月 -13
        BP 关键字: 1352   状态: EXPIRED  已压缩: YES  标记: TAG20130809T184548
段名:/oradata/whole_88ogsr8t_1_1_20130809
  包含的 SPFILE: 修改时间: 12-7月 -13

BS 关键字  类型 LV 大小       设备类型 经过时间 完成时间  
------- ---- -- ---------- ----------- ------------ ----------
1307    Full    1.36M      DISK        00:00:02     16-8月 -13
        BP 关键字: 1381   状态: AVAILABLE  已压缩: YES  标记: TAG20130816T144243
段名:/oradata/backup/whole_91oheroh_1_1_20130816
  包含的 SPFILE: 修改时间: 16-8月 -13

         使用最近的备份就是/oradata/backup/whole_91oheroh_1_1_20130816恢复

RMAN> restore spfile from '/oradata/backup/whole_91oheroh_1_1_20130816';

启动 restore 于 22-8月 -13
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=51 devtype=DISK

通道 ORA_DISK_1: 已找到的自动备份: /oradata/backup/whole_91oheroh_1_1_20130816
通道 ORA_DISK_1: 从自动备份复原 SPFILE 已完成
完成 restore 于 22-8月 -13

        查看dbs下的文件,发现spfileorcl.ora已经有,重启数据库,一些正常。

       小结:配备文件很重要,参数文件没更改一下建议做一次备份。


    2、没有任何备份,手工建立参数文件

     使用init模板文件,因为模板文件注释较多可以使用以下命令去掉注释

  cat init.ora |grep -v ^# |grep -v ^$ >initorcl.ora
     将得到的参数进行修改成实际的,启动即可。

你可能感兴趣的:(oracle配置文件丢失恢复)