oracle實驗記錄 (恢復-使用resetlogs open前備份恢復)
使用resetlogs前的 備份恢復db
SQL> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE 10.2.0.1.0 Production
TNS for 32-bit Windows: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production
SQL> select tablespace_name from dba_tablespaces;
TABLESPACE_NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
TEMP
USERS
EXAMPLE
XHTEST
XHTR
OUTLINE_TS
SMALLTS
已選擇10行。
SQL> select name from v$database;
NAME
---------
XH
SQL> select file_name from dba_data_files;
FILE_NAME
--------------------------------------------------------------------------------
D:\XHDATAFILE\XHTEST.DBF
D:\ORACLE\PRODUCT\10.2.0\ORADATA\XH\EXAMPLE01.DBF
D:\ORACLE\PRODUCT\10.2.0\ORADATA\XH\USERS01.DBF
D:\ORACLE\PRODUCT\10.2.0\ORADATA\XH\SYSAUX01.DBF
D:\ORACLE\PRODUCT\10.2.0\ORADATA\XH\UNDOTBS01.DBF
D:\ORACLE\PRODUCT\10.2.0\ORADATA\XH\SYSTEM01.DBF
D:\XHDATAFILE\XHTR.DBF
D:\XHDATAFILE\OUTLINE.DBF
D:\XHDATAFILE\SMALLFILE.DBF
SQL> select name from v$controlfile;
NAME
--------------------------------------------------------------------------------
D:\ORACLE\PRODUCT\10.2.0\ORADATA\XH\CONTROL01.CTL
D:\ORACLE\PRODUCT\10.2.0\ORADATA\XH\CONTROL02.CTL
D:\ORACLE\PRODUCT\10.2.0\ORADATA\XH\CONTROL03.CTL
SQL> alter database begin backup;
資料庫已更改。
SQL> @ D:\restore\backupscript.txt~~~~~~~~~~備份資料檔案
已複製 1 個檔案。
已複製 1 個檔案。
已複製 1 個檔案。
已複製 1 個檔案。
已複製 1 個檔案。
已複製 1 個檔案。
已複製 1 個檔案。
已複製 1 個檔案。
已複製 1 個檔案。
SQL> alter database end backup;
資料庫已更改。
SQL> @ D:\restore\backupctl.txt~~~~~~~~~~備份控制檔案
已複製 1 個檔案。
已複製 1 個檔案。
已複製 1 個檔案。
SQL> select count(*) from v$archived_log;
COUNT(*)
----------
54
SQL> conn tr/a123
已連線。
SQL> select count(*) from t1;
COUNT(*)
----------
1000
SQL> desc t1;
名稱 是否為空? 型別
----------------------------------------- -------- ----------------------------
A NUMBER(38)
B NUMBER(38)
SQL> select current_scn from v$database;
CURRENT_SCN
-----------
1512972
SQL>
SQL> truncate table t1;~~~~恢復到truncate 前
表被截斷。
SQL> select current_scn from v$database;
CURRENT_SCN
-----------
1513151
SQL> alter system switch logfile;
系統已更改。
SQL> select count(*) from t1;
COUNT(*)
----------
0
SQL> select count(*) from v$archived_log;
COUNT(*)
----------
55
SQL> shutdown immediate;
ORA-01031: 許可權不足
SQL> conn / as sysdba
已連線。
SQL> shutdown immediate;
SQL> @ d:\restore\restoredbf.txt
已複製 1 個檔案。
已複製 1 個檔案。
已複製 1 個檔案。
已複製 1 個檔案。
已複製 1 個檔案。
已複製 1 個檔案。
已複製 1 個檔案。
已複製 1 個檔案。
已複製 1 個檔案。
SQL> startup mount
ORACLE 例程已經啟動。
Total System Global Area 612368384 bytes
Fixed Size 1250428 bytes
Variable Size 264244100 bytes
Database Buffers 339738624 bytes
Redo Buffers 7135232 bytes
資料庫裝載完畢。
SQL> recover database until change 1512972;
完成介質恢復。
SQL> alter database open resetlogs;
資料庫已更改。
SQL> conn tr/a123
已連線。
SQL> select count(*) from t1;
COUNT(*)
----------
1000
SQL> select current_scn from v$database;
CURRENT_SCN
-----------
1513262
SQL> insert into t1 values(1,2);
已建立 1 行。
SQL> commit;
提交完成。
SQL> select count(*) from t1;
COUNT(*)
----------
1001
SQL> select count(*) from v$archived_log;
COUNT(*)
----------
56
SQL> alter system switch logfile;
系統已更改。
SQL> alter system checkpoint;
系統已更改。
SQL> select count(*) from v$archived_log;
COUNT(*)
----------
57
SQL> @ D:\restore\backupctl2.txt~~~~~~~~~備份一下當前控制檔案(resetlogs open後控制檔案)
已複製 1 個檔案。
已複製 1 個檔案。
已複製 1 個檔案。
SQL> insert into t1 values(1,1);
已建立 1 行。
SQL> commit;
提交完成。
SQL> select count(*) from v$archived_log;
COUNT(*)
----------
57
SQL> select count(*) from t1;
COUNT(*)
----------
1002
SQL> alter system switch logfile;
系統已更改。
SQL> alter system checkpoint;
系統已更改。
SQL> select count(*) from v$archived_log;
COUNT(*)
----------
57
SQL> conn / as sysdba
已連線。
SQL> shutdown immediate;
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> @ d:\resotre\restoredbf.txt
SP2-0310: 無法開啟檔案 "d:\resotre\restoredbf.txt"
SQL> @ d:\restore\restoredbf.txt~~~~~~~~~~~~~~~~~~~~~~~~轉儲resetlog前備份
已複製 1 個檔案。
已複製 1 個檔案。
已複製 1 個檔案。
已複製 1 個檔案。
已複製 1 個檔案。
已複製 1 個檔案。
已複製 1 個檔案。
已複製 1 個檔案。
已複製 1 個檔案。
SQL> startup mount
ORACLE 例程已經啟動。
Total System Global Area 612368384 bytes
Fixed Size 1250428 bytes
Variable Size 264244100 bytes
Database Buffers 339738624 bytes
Redo Buffers 7135232 bytes
資料庫裝載完畢。
SQL> recover database;
ORA-00279: 更改 1511692 (在 10/09/2009 09:56:10 生成) 對於執行緒 1 是必需的
ORA-00289: 建議:
D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\XH\ARCHIVELOG\2009_10_09\O1_MF_1_64
_%U_.ARC
ORA-00280: 更改 1511692 (用於執行緒 1) 在序列 #64 中
指定日誌: {
auto
已應用的日誌。
完成介質恢復。
SQL> alter database open;
SQL> select count(*) from tr.t1;
COUNT(*)
----------
1002
SQL> select current_scn from v$database;
CURRENT_SCN
-----------
1513957
SQL> truncate table tr.t1;
表被截斷。
SQL> select count(*) from tr.t1;
COUNT(*)
----------
0
SQL> select count(*) from v$archived_log;
COUNT(*)
----------
58
SQL> alter system switch logfile;
系統已更改。
SQL> select count(*) from v$archived_log;
COUNT(*)
----------
59
SQL> shutdown immediate;
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> startup mount
ORACLE 例程已經啟動。
Total System Global Area 612368384 bytes
Fixed Size 1250428 bytes
Variable Size 268438404 bytes
Database Buffers 335544320 bytes
Redo Buffers 7135232 bytes
資料庫裝載完畢。
SQL> @ d:\restore\restoredbf.txt
已複製 1 個檔案。
已複製 1 個檔案。
已複製 1 個檔案。
已複製 1 個檔案。
已複製 1 個檔案。
已複製 1 個檔案。
已複製 1 個檔案。
已複製 1 個檔案。
已複製 1 個檔案。
SQL> recover database until change 1513957;
ORA-00279: 更改 1511692 (在 10/09/2009 09:56:10 生成) 對於執行緒 1 是必需的
ORA-00289: 建議:
D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\XH\ARCHIVELOG\2009_10_09\O1_MF_1_64
_%U_.ARC
ORA-00280: 更改 1511692 (用於執行緒 1) 在序列 #64 中
指定日誌: {
auto
ORA-00279: 更改 1512986 (在 10/09/2009 10:23:08 生成) 對於執行緒 1 是必需的
ORA-00289: 建議:
D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\XH\ARCHIVELOG\2009_10_09\O1_MF_1_1_
%U_.ARC
ORA-00280: 更改 1512986 (用於執行緒 1) 在序列 #1 中
ORA-00278: 此恢復不再需要日誌檔案
'D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\XH\ARCHIVELOG\2009_10_09\O1_MF_1_6
4_5DX77P7T_.ARC'
已應用的日誌。
完成介質恢復。
SQL> alter database open resetlogs;
資料庫已更改。
SQL> select count(*) from tr.t1
2 ;
COUNT(*)
----------
1002
以上這些跟正常恢復沒區別
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
清除下環境~ 實驗恢復到resetlogs前
SQL> select count(*) from tr.t1;
COUNT(*)
----------
1001
SQL> alter system switch logfile;
系統已更改。
SQL> alter system checkpoint;
系統已更改。
SQL> alter database begin backup
2 ;
資料庫已更改。
SQL> @ D:\restore\backupscript.txt
已複製 1 個檔案。
已複製 1 個檔案。
已複製 1 個檔案。
已複製 1 個檔案。
已複製 1 個檔案。
已複製 1 個檔案。
已複製 1 個檔案。
已複製 1 個檔案。
已複製 1 個檔案。
SQL> alter database end backup;
資料庫已更改。
SQL> @ D:\restore\backupctl.txt
已複製 1 個檔案。
已複製 1 個檔案。
已複製 1 個檔案。
SQL> select count(*) from v$archived_log;
COUNT(*)
----------
52
SQL> select count(*) from tr.t1;
COUNT(*)
----------
1001
SQL> select current_scn from v$database;
CURRENT_SCN
-----------
1555232
SQL> truncate table tr.t1;
表被截斷。
SQL> select current_scn from v$database;
CURRENT_SCN
-----------
1555987
SQL> select count(*) from tr.t1;
COUNT(*)
----------
0
SQL> select current_scn from v$database;
CURRENT_SCN
-----------
1555993
SQL> startup mount;
ORACLE 例程已經啟動。
Total System Global Area 612368384 bytes
Fixed Size 1250428 bytes
Variable Size 293604228 bytes
Database Buffers 310378496 bytes
Redo Buffers 7135232 bytes
資料庫裝載完畢。
SQL> recover database until change 1555232;
完成介質恢復。
SQL> alter database open resetlogs;
資料庫已更改。
SQL> select current_scn from v$database;
CURRENT_SCN
-----------
1555527
SQL> select count(*) from tr.t1;
COUNT(*)
----------
1001
SQL> insert into tr.t1 values(1,1);
已建立 1 行。
SQL> commit;
提交完成。
SQL> alter system switch logfile;
系統已更改。
SQL> alter system switch logfile;
系統已更改。
SQL> alter system checkpoint;
系統已更改。
SQL> select count(*) from v$archived_log;
COUNT(*)
----------
55
SQL> insert into tr.t1 values(1,1);
已建立 1 行。
SQL> commit;
提交完成。
SQL> select group#,status from v$log;
GROUP# STATUS
---------- ----------------
1 INACTIVE
3 CURRENT
2 INACTIVE
SQL> select count(*) from tr.t1;
COUNT(*)
----------
1003
~~~~~~再來一次使用resetlogS前備份恢復DB
SQL> shutdown immediate;
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> @ d:\restore\restoredbf.txt
已複製 1 個檔案。
已複製 1 個檔案。
已複製 1 個檔案。
已複製 1 個檔案。
已複製 1 個檔案。
已複製 1 個檔案。
已複製 1 個檔案。
已複製 1 個檔案。
已複製 1 個檔案。
SQL> startup
ORACLE 例程已經啟動。
Total System Global Area 612368384 bytes
Fixed Size 1250428 bytes
Variable Size 293604228 bytes
Database Buffers 310378496 bytes
Redo Buffers 7135232 bytes
資料庫裝載完畢。
ORA-01190: 控制檔案或資料檔案 1 來自最後一個 RESETLOGS 之前~~~~~可以看出用的是老備份resetlogs前的備份
ORA-01110: 資料檔案 1: 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\XH\SYSTEM01.DBF'
SQL> recover database;
ORA-00279: 更改 1555044 (在 10/09/2009 15:02:06 生成) 對於執行緒 1 是必需的
ORA-00289: 建議:
D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\XH\ARCHIVELOG\2009_10_09\O1_MF_1_2_
%U_.ARC
ORA-00280: 更改 1555044 (用於執行緒 1) 在序列 #2 中
指定日誌: {
auto
已應用的日誌。
完成介質恢復。
SQL> alter database open;
資料庫已更改。
SQL> select count(*) from tr.t1;
COUNT(*)
----------
1003
SQL> select current_scn from v$database;
CURRENT_SCN
-----------
1556213
SQL> select count(*) from v$archived_log;
COUNT(*)
----------
55
SQL> select group#,status from v$log;
GROUP# STATUS
---------- ----------------
1 INACTIVE
3 CURRENT
2 INACTIVE
現在要求恢復到resetlogs前的時間點
SQL> shutdown immediate;
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> @ d:\restore\restoredbf.txt
已複製 1 個檔案。
已複製 1 個檔案。
已複製 1 個檔案。
已複製 1 個檔案。
已複製 1 個檔案。
已複製 1 個檔案。
已複製 1 個檔案。
已複製 1 個檔案。
已複製 1 個檔案。
SQL> recover database until change 1555232;
ORA-00283: 恢復會話因錯誤而取消
ORA-19907: 恢復時間或 SCN 不屬於已恢復的原型
SQL> recover database until change 1555231;
ORA-00283: 恢復會話因錯誤而取消
ORA-19907: 恢復時間或 SCN 不屬於已恢復的原型
SQL> recover database until change 1555987;
ORA-00279: 更改 1555044 (在 10/09/2009 15:02:06 生成) 對於執行緒 1 是必需的
ORA-00289: 建議:
D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\XH\ARCHIVELOG\2009_10_09\O1_MF_1_2_
%U_.ARC
ORA-00280: 更改 1555044 (用於執行緒 1) 在序列 #2 中
指定日誌: {
auto
已應用的日誌。
完成介質恢復。
SQL> alter database open resetlogs;
資料庫已更改。
SQL> select group#,status from v$log;
GROUP# STATUS
---------- ----------------
1 UNUSED
3 CURRENT
2 UNUSED
SQL> select count(*) from v$archived_log;
COUNT(*)
----------
56
SQL> select current_scn from v$database;
CURRENT_SCN
-----------
1556253
SQL> select count(*) from tr.t1;
COUNT(*)
----------
1003~~~~~~~~~~~~~~~~~~~~~恢復到最新了,而不是 scn 1555987這個時候,這個時候為 TR.T1為0 rows
使用resetlogs 前備份控制檔案
SQL> shutdown immediate;
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> @ d:\restore\restoredbf.txt
已複製 1 個檔案。
已複製 1 個檔案。
已複製 1 個檔案。
已複製 1 個檔案。
已複製 1 個檔案。
已複製 1 個檔案。
已複製 1 個檔案。
已複製 1 個檔案。
已複製 1 個檔案。
SQL> @ d:\restore\restorectl.txt
已複製 1 個檔案。
已複製 1 個檔案。
已複製 1 個檔案。
SQL> startup mount
ORACLE 例程已經啟動。
Total System Global Area 612368384 bytes
Fixed Size 1250428 bytes
Variable Size 297798532 bytes
Database Buffers 306184192 bytes
Redo Buffers 7135232 bytes
資料庫裝載完畢。
SQL> recover database until change 1555232;
ORA-00283: 恢復會話因錯誤而取消
ORA-00314: 日誌 1 (用於執行緒 1) 要求的序號 2 與 0 不匹配
ORA-00312: 聯機日誌 1 執行緒 1: 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\XH\REDO01.LOG'
SQL> recover database until change 1555232 using backup controlfile;
ORA-00279: 更改 1555044 (在 10/09/2009 15:02:06 生成) 對於執行緒 1 是必需的
ORA-00289: 建議:
D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\XH\ARCHIVELOG\2009_10_09\O1_MF_1_2_
%U_.ARC
ORA-00280: 更改 1555044 (用於執行緒 1) 在序列 #2 中
指定日誌: {
auto
ORA-00283: 恢復會話因錯誤而取消
ORA-19906: 在恢復過程中更改了恢復目標原型
ORA-01112: 未啟動介質恢復
SQL> recover database until change 1555231 using backup controlfile;
ORA-00283: 恢復會話因錯誤而取消
ORA-19907: 恢復時間或 SCN 不屬於已恢復的原型
SQL> recover database until change 1555987 using backup controlfile;
ORA-00279: 更改 1555044 (在 10/09/2009 15:02:06 生成) 對於執行緒 1 是必需的
ORA-00289: 建議:
D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\XH\ARCHIVELOG\2009_10_09\O1_MF_1_2_
%U_.ARC
ORA-00280: 更改 1555044 (用於執行緒 1) 在序列 #2 中
指定日誌: {
auto
ORA-00279: 更改 1555247 (在 10/09/2009 15:19:52 生成) 對於執行緒 1 是必需的
ORA-00289: 建議:
D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\XH\ARCHIVELOG\2009_10_09\O1_MF_1_1_
%U_.ARC
ORA-00280: 更改 1555247 (用於執行緒 1) 在序列 #1 中
ORA-00279: 更改 1555538 (在 10/09/2009 15:20:41 生成) 對於執行緒 1 是必需的
ORA-00289: 建議:
D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\XH\ARCHIVELOG\2009_10_09\O1_MF_1_2_
%U_.ARC
ORA-00280: 更改 1555538 (用於執行緒 1) 在序列 #2 中
ORA-00278: 此恢復不再需要日誌檔案
'D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\XH\ARCHIVELOG\2009_10_09\O1_MF_1_1
_5DXS2B2X_.ARC'
ORA-00279: 更改 1555540 (在 10/09/2009 15:20:45 生成) 對於執行緒 1 是必需的
ORA-00289: 建議:
D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\XH\ARCHIVELOG\2009_10_09\O1_MF_1_3_
%U_.ARC
ORA-00280: 更改 1555540 (用於執行緒 1) 在序列 #3 中
ORA-00278: 此恢復不再需要日誌檔案
'D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\XH\ARCHIVELOG\2009_10_09\O1_MF_1_2
_5DXS2JBQ_.ARC'
已應用的日誌。
完成介質恢復。
SQL> alter database open resetlogs;
資料庫已更改。
SQL> select count(*) from tr.t1;
COUNT(*)
----------
1003
SQL> select current_scn from v$database;
CURRENT_SCN
-----------
1556217
SQL> select count(*) from v$archived_log;
COUNT(*)
----------
56
SQL> select group#,status from v$log;
GROUP# STATUS
---------- ----------------
1 CURRENT
3 UNUSED
2 UNUSED
SQL>~~~~~~~~~~~~~~~~~~~~還是沒有恢復到 scn 1555987這個時刻,恢復到了最新
所以10g要恢復到resetlogs open 前時間點 需要用rman 跨越多個DB,並且手動恢復時候 不能指定上次resetlogs 不完全恢復到的時間點 (例中為1555232 (包含1555232之前的都不行))
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12020513/viewspace-616168/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle 增量備份恢復驗證Oracle
- Oracle資料庫恢復之resetlogsOracle資料庫
- Oracle為什麼使用備份的控制檔案恢復後一定要resetlogsOracle
- Oracle 備份 與 恢復 概述Oracle
- Oracle 備份恢復之 FlashbackOracle
- ORACLE備份&恢復案例(轉)Oracle
- RAC備份恢復之Voting備份與恢復
- 備份與恢復oracle_homeOracle
- Oracle 備份和恢復介紹Oracle
- ORACLE備份&恢復案例三(轉)Oracle
- ORACLE備份&恢復案例二(轉)Oracle
- ORACLE本地磁碟備份恢復Oracle
- 透過搭建恢復目錄實現RMAN異地備份和恢復
- 備份與恢復:polardb資料庫備份與恢復資料庫
- MySQL備份與恢復——基於Xtrabackup物理備份恢復MySql
- oracle冷備恢復Oracle
- Oracle 12c 備份與恢復Oracle
- Oracle 備份恢復篇之RMAN catalogOracle
- ORACLE DG從庫 Rman備份恢復Oracle
- mydumper備份恢復
- Mysql備份恢復MySql
- 備份和恢復
- MySQL 非常規恢復與物理備份恢復MySql
- OceanBase物理備份恢復實踐
- MySQL備份與恢復——實操MySql
- 詳解叢集級備份恢復:物理細粒度備份恢復
- MySQL備份與恢復——基於MyDumper/MyLoader 邏輯備份恢復MySql
- rman 增量備份恢復
- Jenkins備份與恢復Jenkins
- Postgresql 備份與恢復SQL
- MySQL 備份與恢復MySql
- KunlunDB備份和恢復
- RMAN備份恢復技巧
- redis 備份和恢復Redis
- Grafana 備份恢復教程Grafana
- 【Oracle 恢復表空間】 實驗Oracle
- 【PG備份恢復】pg_basebackup 多表空間備份恢復測試
- MySQL備份與恢復——基於OUTFILE /LOAD DATA 邏輯備份恢復MySql
- Oracle使用備份檔案集恢復歸檔日誌Oracle