oracle用户管理的完全恢复6:控制文件损坏(控制文件前后内容改变)
2013-01-28 10:27
627 查看
场景描述:控制文件损坏(控制文件内容变化)
1.1.备份
1.2.查看当前表空间
2模拟场景
2.1.创建表空间sun03 (控制文件能容将被修改)
2.2在sun03上建表 插入数据
2.3损坏当前控制文件
3.关闭数据库
4恢复
4.1.将备份的控制文件拷贝过来
4.2 开启到mount状态
4.3 恢复
4.4再次执行恢复
4.5查看alter日志
4.6 继续恢复(此步骤可忽略)
4.7重命名8号文件
4.8 继续恢复
5.打开数据库
1.1.备份
SQL> alter database backup controlfile to '/u01/admin/sun/udump/c.bin'; Database altered. SQL>
1.2.查看当前表空间
SQL> select ts#,name from v$tablespace order by 1; TS# NAME ---------- ------------------------------ 0 SYSTEM 1 UNDOTBS1 2 SYSAUX 3 TEMP 4 USERS 6 EXAMPLE 7 SUN01 8 SUN02 8 rows selected. SQL>
2模拟场景
2.1.创建表空间sun03 (控制文件能容将被修改)
SQL> create tablespace sun03 datafile '/u01/oradata/sunbak/sun03_1.dbf' size 5M 2 extent management local uniform 3 segment space management auto; Tablespace created. SQL>
2.2在sun03上建表 插入数据
SQL> conn user1/user1 Connected. SQL> create table t4 (id int,name varchar2(16)) tablespace sun03; Table created. SQL> insert into t4 values(0,'oracle'); 1 row created. SQL> commit; Commit complete. SQL>
2.3损坏当前控制文件
-bash-3.00$ pwd /u01/oradata/sunbak -bash-3.00$ ls -l total 2195216 -rw-r----- 1 oracle oinstall 7389184 Jan 25 19:14 control01.ctl -rw-r----- 1 oracle oinstall 7389184 Jan 25 19:14 control02.ctl -rw-r----- 1 oracle oinstall 7389184 Jan 25 19:14 control03.ctl -rw-r----- 1 oracle oinstall 104865792 Jan 25 18:33 example01.dbf -rw-r----- 1 oracle oinstall 52429312 Jan 25 18:17 redo01.log -rw-r----- 1 oracle oinstall 52429312 Jan 25 19:13 redo02.log -rw-r----- 1 oracle oinstall 52429312 Jan 25 18:17 redo03.log -rw-r----- 1 oracle oinstall 10493952 Jan 25 18:33 sun01_1.dbf -rw-r----- 1 oracle oinstall 10493952 Jan 25 18:33 sun02_1.dbf -rw-r----- 1 oracle oinstall 5251072 Jan 25 19:09 sun03_1.dbf -rw-r----- 1 oracle oinstall 251666432 Jan 25 19:13 sysaux01.dbf -rw-r----- 1 oracle oinstall 503324672 Jan 25 19:13 system01.dbf -rw-r----- 1 oracle oinstall 20979712 Jan 23 04:03 temp01.dbf -rw-r----- 1 oracle oinstall 31465472 Jan 25 19:13 undotbs01.dbf -rw-r----- 1 oracle oinstall 5251072 Jan 25 18:33 users01.dbf -bash-3.00$ rm -f control* -bash-3.00$
3.关闭数据库
SQL> shutdown abort ORACLE instance shut down. SQL>
4恢复
4.1.将备份的控制文件拷贝过来
-bash-3.00$ pwd /u01/oradata/sunbak -bash-3.00$ -bash-3.00$ cp /u01/admin/sun/udump/c.bin control01.ctl -bash-3.00$ cp /u01/admin/sun/udump/c.bin control02.ctl -bash-3.00$ cp /u01/admin/sun/udump/c.bin control03.ctl -bash-3.00$
4.2 开启到mount状态
SQL> startup mount ORACLE instance started. Total System Global Area 289406976 bytes Fixed Size 1279820 bytes Variable Size 92276916 bytes Database Buffers 192937984 bytes Redo Buffers 2912256 bytes Database mounted. SQL> #查看当前表空间,此时sun03不存在 SQL> select ts#,name from v$tablespace order by 1; TS# NAME ---------- ------------------------------ 0 SYSTEM 1 UNDOTBS1 2 SYSAUX 3 TEMP 4 USERS 6 EXAMPLE 7 SUN01 8 SUN02 8 rows selected. SQL>
4.3 恢复
SQL> recover database using backup controlfile; ORA-00279: change 687115 generated at 01/25/2013 18:33:51 needed for thread 1 ORA-00289: suggestion : /u01/admin/sun/arch/1_26_805319563.dbf ORA-00280: change 687115 for thread 1 is in sequence #26 5 #此时恢复提示需要归档日志文件1_26_805319563.dbf,到归档目录查看不存在此归档日志文件 6 #说明1_26_805319563.dbf的内容在redo日志文件中,目前不确定在哪一个文件中,只能一个个尝试 #-bash-3.00$ ls -ltr #total 111836 .............. #-rw-r----- 1 oracle oinstall 3584 Jan 23 04:35 1_23_805319563.dbf #-rw-r----- 1 oracle oinstall 87552 Jan 25 11:26 1_24_805319563.dbf #-rw-r----- 1 oracle oinstall 9251840 Jan 25 18:17 1_25_805319563.dbf Specify log: {<RET>=suggested | filename | AUTO | CANCEL} /u01/oradata/sunbak/redo01.log ORA-00310: archived log contains sequence 25; sequence 26 required ORA-00334: archived log: '/u01/oradata/sunbak/redo01.log' SQL> #说明数据不再redo01.log中
4.4再次执行恢复
SQL> recover database using backup controlfile; ORA-00279: change 687115 generated at 01/25/2013 18:33:51 needed for thread 1 ORA-00289: suggestion : /u01/admin/sun/arch/1_26_805319563.dbf ORA-00280: change 687115 for thread 1 is in sequence #26 Specify log: {<RET>=suggested | filename | AUTO | CANCEL} /u01/oradata/sunbak/redo02.log ORA-00283: recovery session canceled due to errors ORA-01244: unnamed datafile(s) added to control file by media recovery ORA-01110: data file 8: '/u01/oradata/sunbak/sun03_1.dbf' ORA-01112: media recovery not started SQL> 17 #此时/u01/oradata/sunbak/sun03_1.dbf文件名 已经加入到了控制文件中 18 #-bash-3.00$ strings control01.ctl |grep sun 19 #/u01/oradata/sunbak/sun03_1.dbf
4.5查看alter日志
ALTER DATABASE RECOVER LOGFILE '/u01/oradata/sunbak/redo02.log' Fri Jan 25 19:38:28 2013 Media Recovery Log /u01/oradata/sunbak/redo02.log 4 File #8 added to control file as 'UNNAMED00008'. Originally created as: 5 '/u01/oradata/sunbak/sun03_1.dbf' 6 Some recovered datafiles maybe left media fuzzy 7 Media recovery may continue but open resetlogs may fail Fri Jan 25 19:38:32 2013 Media Recovery failed with error 1244 ORA-283 signalled during: ALTER DATABASE RECOVER LOGFILE '/u01/oradata/sunbak/redo02.log' ... Fri Jan 25 19:38:32 2013 ALTER DATABASE RECOVER CANCEL ORA-1112 signalled during: ALTER DATABASE RECOVER CANCEL ...
4.6 继续恢复(此步骤可忽略)
SQL> recover database using backup controlfile; ORA-00283: recovery session canceled due to errors ORA-01111: name for data file 8 is unknown - rename to correct file ORA-01110: data file 8: '/u01/oracle/dbs/UNNAMED00008' ORA-01157: cannot identify/lock data file 8 - see DBWR trace file ORA-01111: name for data file 8 is unknown - rename to correct file ORA-01110: data file 8: '/u01/oracle/dbs/UNNAMED00008' SQL> 报错显示:不能识别8号文件,需要重命名.现在查看两个视图: SQL> select * from v$recover_file; FILE# ONLINE ONLINE_ ERROR CHANGE# TIME ---------- ------- ------- -------------------- ---------- --------- 8 ONLINE ONLINE FILE MISSING 0 SQL> 19 #8号文件是需要被恢复的 SQL> select file#,name from v$datafile; FILE# NAME ---------- ---------------------------------------- 1 /u01/oradata/sunbak/system01.dbf 2 /u01/oradata/sunbak/undotbs01.dbf 3 /u01/oradata/sunbak/sysaux01.dbf 4 /u01/oradata/sunbak/users01.dbf 5 /u01/oradata/sunbak/example01.dbf 6 /u01/oradata/sunbak/sun01_1.dbf 7 /u01/oradata/sunbak/sun02_1.dbf 8 /u01/oracle/dbs/UNNAMED00008 8 rows selected. SQL> 36 #8号文件为/u01/oracle/dbs/UNNAMED00008
4.7重命名8号文件
SQL> alter database rename file '/u01/oracle/dbs/UNNAMED00008' to '/u01/oradata/sunbak/sun03_1.dbf'; Database altered. SQL>
4.8 继续恢复
SQL> recover database using backup controlfile ; ORA-00279: change 688614 generated at 01/25/2013 19:09:32 needed for thread 1 ORA-00289: suggestion : /u01/admin/sun/arch/1_26_805319563.dbf ORA-00280: change 688614 for thread 1 is in sequence #26 Specify log: {<RET>=suggested | filename | AUTO | CANCEL} /u01/oradata/sunbak/redo01.log ORA-00310: archived log contains sequence 25; sequence 26 required ORA-00334: archived log: '/u01/oradata/sunbak/redo01.log' SQL> recover database using backup controlfile ; ORA-00279: change 688614 generated at 01/25/2013 19:09:32 needed for thread 1 ORA-00289: suggestion : /u01/admin/sun/arch/1_26_805319563.dbf ORA-00280: change 688614 for thread 1 is in sequence #26 Specify log: {<RET>=suggested | filename | AUTO | CANCEL} /u01/oradata/sunbak/redo02.log Log applied. Media recovery complete. SQL>
5.打开数据库
SQL> alter database open resetlogs; Database altered. SQL>
相关文章推荐
- oracle用户管理的完全恢复5:控制文件损坏(控制文件前后内容未改变)
- oracle控制文件的损坏或完全丢失的恢复办法 推荐
- ARCHIVELOG模式下用户管理的不完全恢复—基于备份控制文件的不完全恢复
- ARCHIVELOG模式下用户管理的不完全恢复(4)——基于备份控制文件的不完全恢复!
- oracle控制文件的损坏或完全丢失的恢复办法
- oracle 从备份的控制文件进行完全恢复
- oracle用户管理的完全恢复1:在NOARCHIVELOG 模式下执行恢复
- ARCHIVELOG模式下用户管理的完全恢复(4)——在没有数据文件备份的情况下恢复数据文件!
- Oracle用户管理的不完全恢复2:基于取消的恢复
- ARCHIVELOG模式下用户管理恢复控制文件(1)——使用二进制控制文件恢复!
- 探索ORACLE不完全恢复之--基于备份控制文件恢复
- ARCHIVELOG模式下用户管理恢复联机重做日志文件—当前活动组所有成员全部损坏
- oracle用户管理的完全恢复4:在ARCHIVELOG 模式(恢复打开的数据库)
- ORACLE只有表空间文件通过重建控制文件进行不完全恢复
- oracle数据恢复案例 - 控制文件损坏,无备份
- Oracle 基于用户管理的不完全恢复(一)
- ARCHIVELOG模式下用户管理恢复控制文件(2)——使用trace文件重建控制文件!
- 基于用户管理的备份与恢复-控制文件的备份与恢复
- Oracle案例:损坏控制文件的恢复方法
- Oracle—用户管理的完全恢复(四)