oracle控制文件(controlfile)丢失恢复方法列举
2013-09-17 15:08
746 查看
oracle控制文件记录着数据文件、日志文件的位置及SCN等信息,十分重要。若丢失数据库无法打开,影响较大,所以官方见采用多路复用的方式进行冗余备份。
控制文件丢失有以下几种情况:
1、有rman备份
对数据库进行过全库备份或者配置CONTROLFILE AUTOBACKUP ON(每次在rman中执行backup时都会备份控制文件),此时控制文件丢失可以使用备份文件进行恢复
以上是自动备份结果信息
删除控制文件,模拟控制文件丢失
在alert日志里看到提示找不到控制文件
2、使用controlfile的trace文件进行恢复
在$oracle/base/udump/找到trace文件打开,得到创建控制文件的脚本
将数据库启动到nomount状态
查询controlfile位置
注意:要保证在硬盘这两个文件存在,否则报错,可以touch一下生成这两个文件。
执行生成控制文件脚本
提示成功
至此控制文件恢复成功
控制文件丢失有以下几种情况:
1、有rman备份
对数据库进行过全库备份或者配置CONTROLFILE AUTOBACKUP ON(每次在rman中执行backup时都会备份控制文件),此时控制文件丢失可以使用备份文件进行恢复
RMAN> list backup of controlfile; 备份集列表 =================== BS 关键字 类型 LV 大小 设备类型 经过时间 完成时间 ------- ---- -- ---------- ----------- ------------ ---------- 1312 Full 9.89M DISK 00:00:02 23-8月 -13 BP 关键字: 1389 状态: AVAILABLE 已压缩: NO 标记: TAG20130823T103349 段名:/u01/app/oracle/flash_recovery_area/ORCL/autobackup/2013_08_23/o1_mf_s_823619925_91fljgwo_.bkp 包括的控制文件: Ckp SCN: 383068075 Ckp 时间: 16-8月 -13
以上是自动备份结果信息
[oracle@redhat4 ~]$ rm /u01/app/oracle/oradata/JIAGULUN/controlfile/o1_mf_7p5b2xty_.ctl [oracle@redhat4 ~]$ rm /u01/app/oracle/flash_recovery_area/JIAGULUN/controlfile/o1_mf_7p5b2y0c_.ctl
删除控制文件,模拟控制文件丢失
SQL> shutdown immediate ORA-01109: 数据库未打开 已经卸载数据库。 ORACLE 例程已经关闭。 SQL> startup mount; ORACLE 例程已经启动。 Total System Global Area 734003200 bytes Fixed Size 2023688 bytes Variable Size 201330424 bytes Database Buffers 528482304 bytes Redo Buffers 2166784 bytesORA-00205: error in identifying control file, check alert log for more info
[code]
ALTER DATABASE MOUNT Sat Aug 24 11:05:52 2013 ORA-00202: ????: ''/u01/app/oracle/oradata/JIAGULUN/controlfile/o1_mf_7p5b2xty_.ctl'' ORA-27037: ???????? Linux-x86_64 Error: 2: No such file or directory Additional information: 3 Sat Aug 24 11:05:52 2013 ORA-205 signalled during: ALTER DATABASE MOUNT... Sat Aug 24 11:07:19 2013 alter database mount Sat Aug 24 11:07:19 2013 ORA-00202: ????: ''/u01/app/oracle/oradata/JIAGULUN/controlfile/o1_mf_7p5b2xty_.ctl'' ORA-27037: ???????? Linux-x86_64 Error: 2: No such file or directory Additional information: 3 Sat Aug 24 11:07:19 2013
在alert日志里看到提示找不到控制文件
RMAN> restore controlfile from autobackup; 启动 restore 于 24-8月 -13 分配的通道: ORA_DISK_1 通道 ORA_DISK_1: sid=155 devtype=DISK 恢复区域目标: /u01/app/oracle/flash_recovery_area 用于搜索的数据库名 (或数据库的唯一名称): ORCL 通道 ORA_DISK_1: 在恢复区域中找到自动备份 通道 ORA_DISK_1: 已找到的自动备份: /u01/app/oracle/flash_recovery_area/ORCL/autobackup/2013_08_23/o1_mf_s_823619925_91fljgwo_.bkp 通道 ORA_DISK_1: 从自动备份复原控制文件已完成 输出文件名=/u01/app/oracle/oradata/ORCL/controlfile/o1_mf_91j9gw3b_.ctl 输出文件名=/u01/app/oracle/flash_recovery_area/ORCL/controlfile/o1_mf_91j9gwfz_.ctl 完成 restore 于 24-8月 -13
2、使用controlfile的trace文件进行恢复
SQL> alter database backup controlfile to trace; Database altered.
在$oracle/base/udump/找到trace文件打开,得到创建控制文件的脚本
CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS ARCHIVELOG MAXLOGFILES 16 MAXLOGMEMBERS 3 MAXDATAFILES 100 MAXINSTANCES 8 MAXLOGHISTORY 584 LOGFILE GROUP 1 '/data/orcl/redo01.log' SIZE 50M, GROUP 2 '/data/orcl/redo02.log' SIZE 50M, GROUP 3 '/data/orcl/redo03.log' SIZE 50M -- STANDBY LOGFILE DATAFILE '/data/orcl/system01.dbf', '/data/orcl/undotbs01.dbf', '/data/orcl/sysaux01.dbf', '/data/orcl/users01.dbf', '/data/orcl/TRSWCMNEW.dbf', '/data/orcl/test.dbf', '/data/orcl/TEST2.dbf', '/data/orcl/TEST3.dbf', '/data/orcl/test0823.dbf' CHARACTER SET ZHS16GBK ; -- Configure RMAN configuration record 1 VARIABLE RECNO NUMBER; EXECUTE :RECNO := SYS.DBMS_BACKUP_RESTORE.SETCONFIG('DEVICE TYPE','DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET'); -- Configure RMAN configuration record 2 VARIABLE RECNO NUMBER; EXECUTE :RECNO := SYS.DBMS_BACKUP_RESTORE.SETCONFIG('RETENTION POLICY','TO RECOVERY WINDOW OF 8 DAYS'); -- Configure RMAN configuration record 3 VARIABLE RECNO NUMBER; EXECUTE :RECNO := SYS.DBMS_BACKUP_RESTORE.SETCONFIG('ENCRYPTION FOR DATABASE','OFF'); -- Configure RMAN configuration record 4 VARIABLE RECNO NUMBER; EXECUTE :RECNO := SYS.DBMS_BACKUP_RESTORE.SETCONFIG('CONTROLFILE AUTOBACKUP','ON'); -- Commands to re-create incarnation table -- Below log names MUST be changed to existing filenames on -- disk. Any one log file from each branch can be used to -- re-create incarnation records. -- ALTER DATABASE REGISTER LOGFILE '/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2013_09_18/o1_mf_1_1_%u_.arc'; -- ALTER DATABASE REGISTER LOGFILE '/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2013_09_18/o1_mf_1_1_%u_.arc'; -- ALTER DATABASE REGISTER LOGFILE '/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2013_09_18/o1_mf_1_1_%u_.arc'; -- ALTER DATABASE REGISTER LOGFILE '/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2013_09_18/o1_mf_1_1_%u_.arc'; -- ALTER DATABASE REGISTER LOGFILE '/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2013_09_18/o1_mf_1_1_%u_.arc'; -- Recovery is required if any of the datafiles are restored backups, -- or if the last shutdown was not normal or immediate. RECOVER DATABASE -- All logs need archiving and a log switch is needed. ALTER SYSTEM ARCHIVE LOG ALL; -- Database can now be opened normally. ALTER DATABASE OPEN; -- Commands to add tempfiles to temporary tablespaces. -- Online tempfiles have complete space information. -- Other tempfiles may require adjustment. ALTER TABLESPACE TEMP ADD TEMPFILE '/data/orcl/temp02.dbf' SIZE 209715200 REUSE AUTOEXTEND OFF; -- End of tempfile additions.
将数据库启动到nomount状态
查询controlfile位置
SQL> select value from v$parameter where name='control_files'; VALUE -------------------------------------------------------------------------------- /u01/app/oracle/oradata/ORCL/controlfile/o1_mf_91j9gw3b_.ctl, /u01/app/oracle/fl ash_recovery_area/ORCL/controlfile/o1_mf_91j9gwfz_.ctl
注意:要保证在硬盘这两个文件存在,否则报错,可以touch一下生成这两个文件。
执行生成控制文件脚本
SQL> CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS ARCHIVELOG MAXLOGFILES 16 MAXLOGMEMBERS 3 MAXDATAFILES 100 MAXINSTANCES 8 MAXLOGHISTORY 584 LOGFILE GROUP 1 '/data/orcl/redo01.log' SIZE 50M, GROUP 2 '/data/orcl/redo02.log' SIZE 50M, GROUP 3 '/data/orcl/redo03.log' SIZE 50M DATAFILE '/data/orcl/system01.dbf', 2 3 4 5 6 7 8 9 10 11 12 13 '/data/orcl/undotbs01.dbf', '/data/orcl/sysaux01.dbf', '/data/orcl/users01.dbf', '/data/orcl/TRSWCMNEW.dbf', '/data/orcl/test.dbf', '/data/orcl/TEST2.dbf', '/data/orcl/TEST3.dbf', '/data/orcl/test0823.dbf' CHARACTER SET ZHS16GBK; 14 15 16 17 18 19 20 21 Control file created.
提示成功
SQL> recover database; ORA-00283: recovery session canceled due to errors ORA-00264: no recovery required SQL> archive log list; Database log mode Archive Mode Automatic archival Disabled Archive destination USE_DB_RECOVERY_FILE_DEST Oldest online log sequence 11 Next log sequence to archive 11 Current log sequence 13 SQL> ALTER SYSTEM ARCHIVE LOG ALL; System altered. SQL> ALTER SYSTEM ARCHIVE LOG ALL; ALTER SYSTEM ARCHIVE LOG ALL * ERROR at line 1: ORA-00271: there are no logs that need archiving SQL> ALTER DATABASE OPEN; Database altered. SQL> ALTER TABLESPACE TEMP ADD TEMPFILE '/data/orcl/temp02.dbf' SIZE 209715200 REUSE AUTOEXTEND OFF; Tablespace altered.
至此控制文件恢复成功
相关文章推荐
- Oracle 基于备份控制文件的恢复(unsing backup controlfile)
- Oracle 基于备份控制文件的恢复(unsing backup controlfile)
- Oracle 控制文件(CONTROLFILE)
- Oracle 控制文件(CONTROLFILE)
- Oracle快照控制文件(snapshot control file)
- Oracle 丢失数据文件和控制文件的恢复案例
- Oracle Controlfile控制文件中记录的信息片段sections
- Oracle 控制文件(CONTROLFILE)
- oracle控制文件的备份和恢复以及丢失后的各种情况
- oracle的控制文件(control file)
- 未启用归档数据库非数据文件(spfile,control,redo,undo,temp)全丢失的恢复方法
- 未启用归档数据库非数据文件(spfile,control,redo,undo,temp)全丢失的恢复方法
- Oracle:只有rman备份(数据,参数,日志,控制文件全丢失)的恢复
- 控制文件损坏或者丢失的Oracle 10g数据库恢复控制文件一例
- oracle控制文件的损坏或完全丢失的恢复办法 推荐
- Oracle 控制文件(CONTROLFILE)
- rman的随手涂鸦(控制文件controlfile和参数文件spfile的恢复)
- 控制文件oracle controlfile structure
- Unix/Linux下删除Oracle控制文件Controlfile为什么实例Instance没有立即奔溃?
- Unix/Linux下删除Oracle控制文件Controlfile为什么实例Instance没有立即奔溃?