oracle用户管理的完全恢复4:在ARCHIVELOG 模式(恢复打开的数据库)
2013-01-24 10:10
716 查看
场景描述:恢复打开的数据库
此恢复方法一般在以下情况下使用:
a.未导致数据库关闭的文件损坏、文件意外丢失或介质故障。
b.数据库全天候(每周7 天、每天24 小时)运行。必须最大限度地减少数据库的停机时间。
c.受到影响的文件不属于系统表空间或还原/回退段表空间。
1.查看环境
#此时数据库实在打开的情况下
2.模拟生产环境
2.1 插入数据
#sun01_1.dbf文件在上一节已经进行热备
2.2 损坏表空间sun01的数据文件sun01_1.dbf
3.恢复场景:数据库在open的情况下做完全恢复情况
3.1 查看需要恢复信息
3.2 继续向t表插入数据,仍然可以插入(此时数据在redo中)
3.3 手动执行CKPT,使redo中的数据插入数据文件
3.4查看需要恢复信息
3.5 把被损坏文件离线
3.6 把上次备份的sun01_1.dbf文件拷过来
3.7 恢复
3.8 将offline文件online
4.查看恢复数据
此恢复方法一般在以下情况下使用:
a.未导致数据库关闭的文件损坏、文件意外丢失或介质故障。
b.数据库全天候(每周7 天、每天24 小时)运行。必须最大限度地减少数据库的停机时间。
c.受到影响的文件不属于系统表空间或还原/回退段表空间。
1.查看环境
#此时数据库实在打开的情况下
SQL> archive log list; Database log mode Archive Mode Automatic archival Enabled Archive destination /u01/admin/sun/arch Oldest online log sequence 5 Next log sequence to archive 7 Current log sequence 7 SQL>
2.模拟生产环境
2.1 插入数据
SQL> conn user1/user1 Connected. SQL> insert into t values(3,'oracle'); 1 row created. SQL> commit; Commit complete. SQL> select * from t; ID NAME ---------- ---------------- 1 oracle 2 oracle 0 oracle 3 oracle SQL> #手动切换日志 产生归档日志 SQL> alter system switch logfile; System altered. SQL> / System altered. SQL> / System altered. SQL>
#sun01_1.dbf文件在上一节已经进行热备
2.2 损坏表空间sun01的数据文件sun01_1.dbf
bash-3.00$ ls -l total 2162512 -rw-r----- 1 oracle oinstall 7061504 Jan 23 00:01 control01.ctl -rw-r----- 1 oracle oinstall 7061504 Jan 23 00:01 control02.ctl -rw-r----- 1 oracle oinstall 7061504 Jan 23 00:01 control03.ctl -rw-r----- 1 oracle oinstall 104865792 Jan 22 23:54 example01.dbf -rw-r----- 1 oracle oinstall 52429312 Jan 22 23:54 redo01.log -rw-r----- 1 oracle oinstall 52429312 Jan 23 00:00 redo02.log -rw-r----- 1 oracle oinstall 52429312 Jan 22 23:54 redo03.log -rw-r----- 1 oracle oinstall 10493952 Jan 22 23:54 sun01_1.dbf -rw-r----- 1 oracle oinstall 251666432 Jan 23 00:00 sysaux01.dbf -rw-r----- 1 oracle oinstall 503324672 Jan 23 00:00 system01.dbf -rw-r----- 1 oracle oinstall 20979712 Jan 22 23:24 temp01.dbf -rw-r----- 1 oracle oinstall 31465472 Jan 23 00:00 undotbs01.dbf -rw-r----- 1 oracle oinstall 5251072 Jan 22 23:54 users01.dbf bash-3.00$ rm -f sun01_1.dbf bash-3.00$
3.恢复场景:数据库在open的情况下做完全恢复情况
3.1 查看需要恢复信息
#此时oracle并未发现有数据文件被损坏 SQL> select * from v$recover_file; no rows selected SQL>
3.2 继续向t表插入数据,仍然可以插入(此时数据在redo中)
SQL> insert into t values ( 4,'oracle'); 1 row created. SQL> commit; Commit complete. SQL>
3.3 手动执行CKPT,使redo中的数据插入数据文件
SQL> alter system checkpoint local;--检查点分为三类:local,global,文件检查点 System altered. SQL> #查看alter日志发现报错信息 Wed Jan 23 00:16:33 2013 Errors in file /u01/admin/sun/udump/sun_ora_1227.trc: ORA-01110: data file 6: '/u01/oradata/sunbak/sun01_1.dbf' ORA-01116: error in opening database file 6 ORA-01110: data file 6: '/u01/oradata/sunbak/sun01_1.dbf' ORA-27041: unable to open file Intel SVR4 UNIX Error: 2: No such file or directory Additional information: 3 Wed Jan 23 00:16:33 2013 Errors in file /u01/admin/sun/udump/sun_ora_1227.trc: ORA-01171: datafile 6 going offline due to error advancing checkpoint ORA-01116: error in opening database file 6 ORA-01110: data file 6: '/u01/oradata/sunbak/sun01_1.dbf' ORA-27041: unable to open file Intel SVR4 UNIX Error: 2: No such file or directory Additional information: 3
3.4查看需要恢复信息
SQL> select file#,ONLINE_STATUS,ERROR from v$recover_file; FILE# ONLINE_ ERROR ---------- ------- -------------------- 6 OFFLINE FILE NOT FOUND SQL>
3.5 把被损坏文件离线
SQL> alter database datafile 6 offline; Database altered. SQL>
3.6 把上次备份的sun01_1.dbf文件拷过来
bash-3.00$ ls -l /u01/backup/hot total 20512 -rw-r----- 1 oracle oinstall 10493952 Jan 22 22:00 sun01_1.dbf bash-3.00$ cp /u01/backup/hot/sun01_1.dbf . bash-3.00$
3.7 恢复
SQL> recover datafile 6; ORA-00279: change 574756 generated at 01/22/2013 21:58:34 needed for thread 1 ORA-00289: suggestion : /u01/admin/sun/arch/1_2_805319563.dbf ORA-00280: change 574756 for thread 1 is in sequence #2 Specify log: {<RET>=suggested | filename | AUTO | CANCEL} ORA-00279: change 604184 generated at 01/22/2013 23:54:27 needed for thread 1 ORA-00289: suggestion : /u01/admin/sun/arch/1_8_805319563.dbf ORA-00280: change 604184 for thread 1 is in sequence #8 ORA-00278: log file '/u01/admin/sun/arch/1_7_805319563.dbf' no longer needed for this recovery Specify log: {<RET>=suggested | filename | AUTO | CANCEL} Log applied. Media recovery complete. SQL> #恢复完成 SQL> select * from v$recover_file; no rows selected SQL>
3.8 将offline文件online
SQL> desc v$datafile; Name Null? Type ----------------------------------------- -------- ---------------------------- FILE# NUMBER CREATION_CHANGE# NUMBER CREATION_TIME DATE TS# NUMBER RFILE# NUMBER STATUS VARCHAR2(7) ENABLED VARCHAR2(10) CHECKPOINT_CHANGE# NUMBER CHECKPOINT_TIME DATE UNRECOVERABLE_CHANGE# NUMBER UNRECOVERABLE_TIME DATE LAST_CHANGE# NUMBER LAST_TIME DATE OFFLINE_CHANGE# NUMBER ONLINE_CHANGE# NUMBER ONLINE_TIME DATE BYTES NUMBER BLOCKS NUMBER CREATE_BYTES NUMBER BLOCK_SIZE NUMBER NAME VARCHAR2(513) PLUGGED_IN NUMBER BLOCK1_OFFSET NUMBER AUX_NAME VARCHAR2(513) FIRST_NONLOGGED_SCN NUMBER FIRST_NONLOGGED_TIME DATE SQL> col name format a30 SQL> select file#,status,name from v$datafile; FILE# STATUS NAME ---------- ------- ------------------------------ 1 SYSTEM /u01/oradata/sunbak/system01.dbf 2 ONLINE /u01/oradata/sunbak/undotbs01.dbf 3 ONLINE /u01/oradata/sunbak/sysaux01.dbf 4 ONLINE /u01/oradata/sunbak/users01.dbf FILE# STATUS NAME ---------- ------- ------------------------------ 5 ONLINE /u01/oradata/sunbak/example01.dbf 6 OFFLINE /u01/oradata/sunbak/sun01_1.dbf SQL> SQL> alter database datafile 6 online; Database altered. SQL>
4.查看恢复数据
SQL> select * from t; ID NAME ---------- ---------------- 1 oracle 2 oracle 0 oracle 3 oracle 4 oracle SQL>
相关文章推荐
- oracle用户管理的完全恢复4:在ARCHIVELOG 模式(恢复打开的数据库--数据库最初是关闭的)
- ARCHIVELOG模式下用户管理的完全恢复—恢复打开的数据库,并且数据库最初是打开的
- ARCHIVELOG模式下用户管理的完全恢复(3)——恢复打开的数据库,并且数据库最初是打开的!
- oracle用户管理的完全恢复3:在ARCHIVELOG 模式(恢复关闭的数据库)
- ARCHIVELOG模式下用户管理的完全恢复(2)——恢复打开的数据库,并且数据库最初是关闭的!
- ARCHIVELOG模式下用户管理的完全恢复—恢复关闭的数据库
- ARCHIVELOG模式下用户管理的完全恢复(1)——恢复关闭的数据库!
- ARCHIVELOG模式下用户管理的不完全恢复(1)——基于时间点的不完全恢复!
- oracle数据库完全恢复和不完全恢复以及执行用户管理辈分恢复
- oracle用户管理的完全恢复1:在NOARCHIVELOG 模式下执行恢复
- ARCHIVELOG模式下用户管理的完全恢复(5)——总结!
- 【ORACLE备份与恢复】用户管理的:基于时间的数据库不完全恢复
- oracle用户管理的完全恢复2:在NOARCHIVELOG 模式下执行恢复(无联机日志的备份)
- 【ORACLE备份与恢复】用户管理的:基于取消的数据库不完全恢复
- ARCHIVELOG模式下用户管理的不完全恢复(2)——基于SCN的不完全恢复!
- ARCHIVELOG模式下用户管理的不完全恢复(3)——基于取消的不完全恢复!
- ARCHIVELOG模式下用户管理的不完全恢复—基于取消的不完全恢复
- ARCHIVELOG模式下用户管理的不完全恢复—基于备份控制文件的不完全恢复
- 【ORACLE备份与恢复】用户管理的:基于scn的数据库不完全恢复
- ARCHIVELOG模式下用户管理的完全恢复(4)——在没有数据文件备份的情况下恢复数据文件!