在Oracle10g之前,在進行了不徹底恢復使用resetlogs選項打開數據庫之後,Oracle建議你要當即進行全備份。
由於日誌序號會被置位,以防止後續日誌被應用。resetlogs以前的備份將不能用於進行跨域resetlogs時間點的恢復。sql
在Oracle10g中,Oracle容許跨越resetlogs時間點進行徹底/不徹底恢復。
看一下測試的例子:
1.全備份數據庫數據庫
$ rman target / Recovery Manager: Release 10.1.0.2.0 - 64bit Production Copyright (c) 1995, 2004, Oracle. All rights reserved. connected to target database: JAVIS (DBID=1337390772) RMAN> backup database plus archivelog delete all input; Starting backup at 2005-04-05 16:29:08 current log archived using target database controlfile instead of recovery catalog allocated channel: ORA_DISK_1 channel ORA_DISK_1: sid=143 devtype=DISK channel ORA_DISK_1: starting archive log backupset channel ORA_DISK_1: specifying archive log(s) in backup set input archive log thread=1 sequence=3 recid=294 stamp=554823466 input archive log thread=1 sequence=4 recid=295 stamp=554828647 input archive log thread=1 sequence=5 recid=297 stamp=554833749 channel ORA_DISK_1: starting piece 1 at 2005-04-05 16:29:16 channel ORA_DISK_1: finished piece 1 at 2005-04-05 16:29:19 piece handle=/data5/flash_recovery_area/JAVIS/backupset/2005_04_05/o1_mf_annnn_TAG20050405T162914_154m2woc_.bkp comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:00:04 channel ORA_DISK_1: deleting archive log(s) archive log filename=/data5/flash_recovery_area/JAVIS/archivelog/2005_04_05/o1_mf_1_3_154919qm_.arc recid=294 stamp=554823466 archive log filename=/data5/flash_recovery_area/JAVIS/archivelog/2005_04_05/o1_mf_1_4_154g3728_.arc recid=295 stamp=554828647 archive log filename=/data5/flash_recovery_area/JAVIS/archivelog/2005_04_05/o1_mf_1_5_154m2og4_.arc recid=297 stamp=554833749 Finished backup at 2005-04-05 16:29:20 Starting backup at 2005-04-05 16:29:21 using channel ORA_DISK_1 channel ORA_DISK_1: starting full datafile backupset channel ORA_DISK_1: specifying datafile(s) in backupset input datafile fno=00009 name=/data1/oradata/systemfile/bigtbs.dbf input datafile fno=00001 name=/opt/oracle/oradata/javis/system01.dbf input datafile fno=00006 name=/opt/oracle/oradata/javis/JAVIS/datafile/o1_mf_test_03xv34ny_.dbf input datafile fno=00002 name=/opt/oracle/oradata/javis/undotbs01.dbf input datafile fno=00003 name=/opt/oracle/oradata/javis/sysaux01.dbf input datafile fno=00010 name=/opt/oracle/oradata/javis/dfmbrc.dbf input datafile fno=00008 name=/opt/oracle/oradata/javis/trans01.dbf channel ORA_DISK_1: starting piece 1 at 2005-04-05 16:29:22 channel ORA_DISK_1: finished piece 1 at 2005-04-05 16:31:07 piece handle=/data5/flash_recovery_area/JAVIS/backupset/2005_04_05/o1_mf_nnndf_TAG20050405T162921_154m33kf_.bkp comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:01:45 channel ORA_DISK_1: starting full datafile backupset channel ORA_DISK_1: specifying datafile(s) in backupset input datafile fno=00005 name=/data1/oradata/systemfile/javis01.dbf input datafile fno=00004 name=/opt/oracle/oradata/javis/users01.dbf input datafile fno=00007 name=/opt/oracle/oradata/javis/JAVIS/datafile/o1_mf_itpub_03xv5g66_.dbf channel ORA_DISK_1: starting piece 1 at 2005-04-05 16:31:08 channel ORA_DISK_1: finished piece 1 at 2005-04-05 16:31:33 piece handle=/data5/flash_recovery_area/JAVIS/backupset/2005_04_05/o1_mf_nnndf_TAG20050405T162921_154m6dxm_.bkp comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:00:25 channel ORA_DISK_1: starting full datafile backupset channel ORA_DISK_1: specifying datafile(s) in backupset input datafile fno=00011 name=/opt/oracle/oradata/javis/t2k01.dbf channel ORA_DISK_1: starting piece 1 at 2005-04-05 16:31:34 channel ORA_DISK_1: finished piece 1 at 2005-04-05 16:31:41 piece handle=/data5/flash_recovery_area/JAVIS/backupset/2005_04_05/o1_mf_nnndf_TAG20050405T162921_154m76kz_.bkp comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:00:07 Finished backup at 2005-04-05 16:31:41 Starting backup at 2005-04-05 16:31:41 current log archived using channel ORA_DISK_1 channel ORA_DISK_1: starting archive log backupset channel ORA_DISK_1: specifying archive log(s) in backup set input archive log thread=1 sequence=6 recid=298 stamp=554833902 channel ORA_DISK_1: starting piece 1 at 2005-04-05 16:31:44 channel ORA_DISK_1: finished piece 1 at 2005-04-05 16:31:47 piece handle=/data5/flash_recovery_area/JAVIS/backupset/2005_04_05/o1_mf_annnn_TAG20050405T163142_154m7jpo_.bkp comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:00:04 channel ORA_DISK_1: deleting archive log(s) archive log filename=/data5/flash_recovery_area/JAVIS/archivelog/2005_04_05/o1_mf_1_6_154m7gb3_.arc recid=298 stamp=554833902 Finished backup at 2005-04-05 16:31:47 Starting Control File and SPFILE Autobackup at 2005-04-05 16:31:48 piece handle=/data5/flash_recovery_area/JAVIS/autobackup/2005_04_05/o1_mf_s_554833908_154m7qps_.bkp comment=NONE Finished Control File and SPFILE Autobackup at 2005-04-05 16:31:56 RMAN> exit Recovery Manager complete.
2.進行數據更改跨域
$ sqlplus "/ as sysdba" SQL*Plus: Release 10.1.0.2.0 - Production on Tue Apr 5 16:32:23 2005 Copyright (c) 1982, 2004, Oracle. All rights reserved. Connected to: Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - 64bit Production With the Partitioning, OLAP and Data Mining options SYS AS SYSDBA on 2005-04-05 16:32:23 >alter system switch logfile; System altered. SYS AS SYSDBA on 2005-04-05 16:32:30 >select count(*) from t; COUNT(*) ---------- 18956 SYS AS SYSDBA on 2005-04-05 16:33:03 >insert into t select * from t; 18956 rows created. SYS AS SYSDBA on 2005-04-05 16:33:17 >commit; Commit complete. SYS AS SYSDBA on 2005-04-05 16:33:19 >alter system switch logfile; System altered. SYS AS SYSDBA on 2005-04-05 16:33:45 >truncate table t; Table truncated. SYS AS SYSDBA on 2005-04-05 16:34:58 >alter system switch logfile; System altered. --此時的日誌序列狀況以下: SYS AS SYSDBA on 2005-04-05 16:35:00 >select * from v$log_history where recid >1811; RECID STAMP THREAD# SEQUENCE# FIRST_CHANGE# FIRST_TIME NEXT_CHANGE# RESETLOGS_CHANGE# RESETLOGS_TIME ---------- ---------- ---------- ---------- ------------- ------------------- ------------ ----------------- ------------------- 1812 554813757 1 1 10923677 2005-04-05 09:54:53 10925720 10923677 2005-04-05 09:54:53 1813 554813974 1 2 10925720 2005-04-05 10:55:57 10925827 10923677 2005-04-05 09:54:53 1814 554823464 1 3 10925827 2005-04-05 10:59:34 10947409 10923677 2005-04-05 09:54:53 1815 554828646 1 4 10947409 2005-04-05 13:37:44 10950318 10923677 2005-04-05 09:54:53 1816 554833748 1 5 10950318 2005-04-05 15:04:06 10953123 10923677 2005-04-05 09:54:53 1817 554833901 1 6 10953123 2005-04-05 16:29:08 10953187 10923677 2005-04-05 09:54:53 1818 554833950 1 7 10953187 2005-04-05 16:31:41 10953213 10923677 2005-04-05 09:54:53 1819 554834005 1 8 10953213 2005-04-05 16:32:30 10953633 10923677 2005-04-05 09:54:53 1820 554834118 1 9 10953633 2005-04-05 16:33:25 10953726 10923677 2005-04-05 09:54:53 9 rows selected. --關閉數據庫: SYS AS SYSDBA on 2005-04-05 16:35:18 >shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down. SYS AS SYSDBA on 2005-04-05 16:37:30 >exit Disconnected from Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - 64bit Production With the Partitioning, OLAP and Data Mining options
3.執行不徹底恢復oracle
$ rman target / Recovery Manager: Release 10.1.0.2.0 - 64bit Production Copyright (c) 1995, 2004, Oracle. All rights reserved. connected to target database (not started) RMAN> startup mount; Oracle instance started database mounted Total System Global Area 314572800 bytes Fixed Size 1301704 bytes Variable Size 261890872 bytes Database Buffers 50331648 bytes Redo Buffers 1048576 bytes RMAN> run { 2> set until sequence 8 thread 1; 3> restore database; 4> recover database; 5> } executing command: SET until clause using target database controlfile instead of recovery catalog Starting restore at 2005-04-05 16:39:17 allocated channel: ORA_DISK_1 channel ORA_DISK_1: sid=160 devtype=DISK datafile 8 not processed because file is read-only channel ORA_DISK_1: starting datafile backupset restore channel ORA_DISK_1: specifying datafile(s) to restore from backup set restoring datafile 00001 to /opt/oracle/oradata/javis/system01.dbf restoring datafile 00002 to /opt/oracle/oradata/javis/undotbs01.dbf restoring datafile 00003 to /opt/oracle/oradata/javis/sysaux01.dbf restoring datafile 00006 to /opt/oracle/oradata/javis/JAVIS/datafile/o1_mf_test_03xv34ny_.dbf restoring datafile 00009 to /data1/oradata/systemfile/bigtbs.dbf restoring datafile 00010 to /opt/oracle/oradata/javis/dfmbrc.dbf channel ORA_DISK_1: restored backup piece 1 piece handle=/data5/flash_recovery_area/JAVIS/backupset/2005_04_05/o1_mf_nnndf_TAG20050405T162921_154m33kf_.bkp tag=TAG20050405T162921 channel ORA_DISK_1: restore complete channel ORA_DISK_1: starting datafile backupset restore channel ORA_DISK_1: specifying datafile(s) to restore from backup set restoring datafile 00004 to /opt/oracle/oradata/javis/users01.dbf restoring datafile 00005 to /data1/oradata/systemfile/javis01.dbf restoring datafile 00007 to /opt/oracle/oradata/javis/JAVIS/datafile/o1_mf_itpub_03xv5g66_.dbf channel ORA_DISK_1: restored backup piece 1 piece handle=/data5/flash_recovery_area/JAVIS/backupset/2005_04_05/o1_mf_nnndf_TAG20050405T162921_154m6dxm_.bkp tag=TAG20050405T162921 channel ORA_DISK_1: restore complete channel ORA_DISK_1: starting datafile backupset restore channel ORA_DISK_1: specifying datafile(s) to restore from backup set restoring datafile 00011 to /opt/oracle/oradata/javis/t2k01.dbf channel ORA_DISK_1: restored backup piece 1 piece handle=/data5/flash_recovery_area/JAVIS/backupset/2005_04_05/o1_mf_nnndf_TAG20050405T162921_154m76kz_.bkp tag=TAG20050405T162921 channel ORA_DISK_1: restore complete Finished restore at 2005-04-05 16:41:45 Starting recover at 2005-04-05 16:41:46 using channel ORA_DISK_1 datafile 8 not processed because file is offline starting media recovery archive log thread 1 sequence 7 is already on disk as file /data5/flash_recovery_area/JAVIS/archivelog/2005_04_05/o1_mf_1_7_154m8z7k_.arc channel ORA_DISK_1: starting archive log restore to default destination channel ORA_DISK_1: restoring archive log archive log thread=1 sequence=6 channel ORA_DISK_1: restored backup piece 1 piece handle=/data5/flash_recovery_area/JAVIS/backupset/2005_04_05/o1_mf_annnn_TAG20050405T163142_154m7jpo_.bkp tag=TAG20050405T163142 channel ORA_DISK_1: restore complete archive log filename=/data5/flash_recovery_area/JAVIS/archivelog/2005_04_05/o1_mf_1_6_154mtkfk_.arc thread=1 sequence=6 channel default: deleting archive log(s) archive log filename=/data5/flash_recovery_area/JAVIS/archivelog/2005_04_05/o1_mf_1_6_154mtkfk_.arc recid=302 stamp=554834513 archive log filename=/data5/flash_recovery_area/JAVIS/archivelog/2005_04_05/o1_mf_1_7_154m8z7k_.arc thread=1 sequence=7 media recovery complete Finished recover at 2005-04-05 16:41:57 RMAN> alter database open resetlogs; database opened RMAN> exit Recovery Manager complete.
4.此時的數據庫狀態測試
$ sqlplus "/ as sysdba" SQL*Plus: Release 10.1.0.2.0 - Production on Tue Apr 5 16:43:58 2005 Copyright (c) 1982, 2004, Oracle. All rights reserved. Connected to: Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - 64bit Production With the Partitioning, OLAP and Data Mining options SYS AS SYSDBA on 2005-04-05 16:43:58 >archive log list; Database log mode Archive Mode Automatic archival Enabled Archive destination USE_DB_RECOVERY_FILE_DEST Oldest online log sequence 1 Next log sequence to archive 1 Current log sequence 1 SYS AS SYSDBA on 2005-04-05 16:44:01 >select count(*) from t; COUNT(*) ---------- 18956
5.繼續進行數據更改rest
SYS AS SYSDBA on 2005-04-05 16:44:08 >create table tt as select * from dba_users; Table created. SYS AS SYSDBA on 2005-04-05 16:45:51 >alter system switch logfile; System altered. SYS AS SYSDBA on 2005-04-05 16:45:56 >select count(*) from tt; COUNT(*) ---------- 12 SYS AS SYSDBA on 2005-04-05 16:46:01 >insert into tt select * from tt; 12 rows created. SYS AS SYSDBA on 2005-04-05 16:46:13 >commit; Commit complete. SYS AS SYSDBA on 2005-04-05 16:46:16 >alter system switch logfile; System altered. --此時的日誌序列: SYS AS SYSDBA on 2005-04-05 17:46:19 >select * from v$log_history where recid >1811; RECID STAMP THREAD# SEQUENCE# FIRST_CHANGE# FIRST_TIME NEXT_CHANGE# RESETLOGS_CHANGE# RESETLOGS_TIME ---------- ---------- ---------- ---------- ------------- ------------------- ------------ ----------------- ------------------- 1812 554813757 1 1 10923677 2005-04-05 09:54:53 10925720 10923677 2005-04-05 09:54:53 1813 554813974 1 2 10925720 2005-04-05 10:55:57 10925827 10923677 2005-04-05 09:54:53 1814 554823464 1 3 10925827 2005-04-05 10:59:34 10947409 10923677 2005-04-05 09:54:53 1815 554828646 1 4 10947409 2005-04-05 13:37:44 10950318 10923677 2005-04-05 09:54:53 1816 554833748 1 5 10950318 2005-04-05 15:04:06 10953123 10923677 2005-04-05 09:54:53 1817 554833901 1 6 10953123 2005-04-05 16:29:08 10953187 10923677 2005-04-05 09:54:53 1818 554833950 1 7 10953187 2005-04-05 16:31:41 10953213 10923677 2005-04-05 09:54:53 1819 554834005 1 8 10953213 2005-04-05 16:32:30 10953633 10923677 2005-04-05 09:54:53 1820 554834118 1 9 10953633 2005-04-05 16:33:25 10953726 10923677 2005-04-05 09:54:53 1821 554834756 1 1 10953214 2005-04-05 16:42:34 10953433 10953214 2005-04-05 16:42:34 1822 554834781 1 2 10953433 2005-04-05 16:45:56 10953445 10953214 2005-04-05 16:42:34 11 rows selected. SYS AS SYSDBA on 2005-04-05 16:46:21 >shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down. SYS AS SYSDBA on 2005-04-05 16:47:38 >exit Disconnected from Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - 64bit Production With the Partitioning, OLAP and Data Mining options
6.再次執行恢復日誌
$ rman target / Recovery Manager: Release 10.1.0.2.0 - 64bit Production Copyright (c) 1995, 2004, Oracle. All rights reserved. connected to target database (not started) RMAN> startup mount; Oracle instance started database mounted Total System Global Area 314572800 bytes Fixed Size 1301704 bytes Variable Size 261890872 bytes Database Buffers 50331648 bytes Redo Buffers 1048576 bytes RMAN> run { 2> restore database; 3> recover database; 4> } Starting restore at 2005-04-05 16:49:54 using target database controlfile instead of recovery catalog allocated channel: ORA_DISK_1 channel ORA_DISK_1: sid=160 devtype=DISK datafile 8 not processed because file is read-only channel ORA_DISK_1: starting datafile backupset restore channel ORA_DISK_1: specifying datafile(s) to restore from backup set restoring datafile 00001 to /opt/oracle/oradata/javis/system01.dbf restoring datafile 00002 to /opt/oracle/oradata/javis/undotbs01.dbf restoring datafile 00003 to /opt/oracle/oradata/javis/sysaux01.dbf restoring datafile 00006 to /opt/oracle/oradata/javis/JAVIS/datafile/o1_mf_test_03xv34ny_.dbf restoring datafile 00009 to /data1/oradata/systemfile/bigtbs.dbf restoring datafile 00010 to /opt/oracle/oradata/javis/dfmbrc.dbf channel ORA_DISK_1: restored backup piece 1 piece handle=/data5/flash_recovery_area/JAVIS/backupset/2005_04_05/o1_mf_nnndf_TAG20050405T162921_154m33kf_.bkp tag=TAG20050405T162921 channel ORA_DISK_1: restore complete channel ORA_DISK_1: starting datafile backupset restore channel ORA_DISK_1: specifying datafile(s) to restore from backup set restoring datafile 00004 to /opt/oracle/oradata/javis/users01.dbf restoring datafile 00005 to /data1/oradata/systemfile/javis01.dbf restoring datafile 00007 to /opt/oracle/oradata/javis/JAVIS/datafile/o1_mf_itpub_03xv5g66_.dbf channel ORA_DISK_1: restored backup piece 1 piece handle=/data5/flash_recovery_area/JAVIS/backupset/2005_04_05/o1_mf_nnndf_TAG20050405T162921_154m6dxm_.bkp tag=TAG20050405T162921 channel ORA_DISK_1: restore complete channel ORA_DISK_1: starting datafile backupset restore channel ORA_DISK_1: specifying datafile(s) to restore from backup set restoring datafile 00011 to /opt/oracle/oradata/javis/t2k01.dbf channel ORA_DISK_1: restored backup piece 1 piece handle=/data5/flash_recovery_area/JAVIS/backupset/2005_04_05/o1_mf_nnndf_TAG20050405T162921_154m76kz_.bkp tag=TAG20050405T162921 channel ORA_DISK_1: restore complete Finished restore at 2005-04-05 16:52:31 Starting recover at 2005-04-05 16:52:32 using channel ORA_DISK_1 datafile 8 not processed because file is offline starting media recovery archive log thread 1 sequence 7 is already on disk as file /data5/flash_recovery_area/JAVIS/archivelog/2005_04_05/o1_mf_1_7_154m8z7k_.arc archive log thread 1 sequence 1 is already on disk as file /data5/flash_recovery_area/JAVIS/archivelog/2005_04_05/o1_mf_1_1_154n24v5_.arc archive log thread 1 sequence 2 is already on disk as file /data5/flash_recovery_area/JAVIS/archivelog/2005_04_05/o1_mf_1_2_154n2y40_.arc channel ORA_DISK_1: starting archive log restore to default destination channel ORA_DISK_1: restoring archive log archive log thread=1 sequence=6 channel ORA_DISK_1: restored backup piece 1 piece handle=/data5/flash_recovery_area/JAVIS/backupset/2005_04_05/o1_mf_annnn_TAG20050405T163142_154m7jpo_.bkp tag=TAG20050405T163142 channel ORA_DISK_1: restore complete archive log filename=/data5/flash_recovery_area/JAVIS/archivelog/2005_04_05/o1_mf_1_6_154ngror_.arc thread=1 sequence=6 channel default: deleting archive log(s) archive log filename=/data5/flash_recovery_area/JAVIS/archivelog/2005_04_05/o1_mf_1_6_154ngror_.arc recid=306 stamp=554835160 archive log filename=/data5/flash_recovery_area/JAVIS/archivelog/2005_04_05/o1_mf_1_7_154m8z7k_.arc thread=1 sequence=7 media recovery complete Finished recover at 2005-04-05 16:53:04 RMAN> alter database open; database opened RMAN> exit Recovery Manager complete.
7.檢查數據恢復狀況code
注意這次恢復跨越了resetlogs時間點ci
$ sqlplus "/ as sysdba" SQL*Plus: Release 10.1.0.2.0 - Production on Tue Apr 5 16:53:56 2005 Copyright (c) 1982, 2004, Oracle. All rights reserved. Connected to: Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - 64bit Production With the Partitioning, OLAP and Data Mining options SYS AS SYSDBA on 2005-04-05 16:53:56 >select count(*) from t; COUNT(*) ---------- 18956 SYS AS SYSDBA on 2005-04-05 16:54:01 >select count(*) from tt; COUNT(*) ---------- 24 SYS AS SYSDBA on 2005-04-05 16:54:07 > SYS AS SYSDBA on 2005-04-05 16:54:47 >
數據恢復完成.get