日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Oracle的不完全恢复

發布時間:2024/1/17 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Oracle的不完全恢复 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、不完全恢復特性

1、不完全恢復

????? 不完全恢復僅僅是將數據恢復到某一個特定的時間點或特定的SCN,而不是當前時間點。不完全恢復會影響整個數據庫,需要在MOUNT狀
??態下進行。在不完全恢復成功之后,通常需要使用 resetlogs 選項來打開數據庫。當使用resetlogs后,SCN 計數器不會被重置,原來的日
??志序號 log sequence 會結束,從新開始新的日志序列號。在Oracle里稱之為產生一個新的incarnation。同時Oracle還會重置聯機重做日
??志內容,因此resetlogs之后建議重新全備數據庫。
????????
2、不完全恢復的情形

????? 介質故障(media failure)導致部分或全部聯機重做日志(online redo log)損壞
????? 用戶操作失誤(user error)導致數據丟失,例如,用戶由于疏忽而移除了表,提交了無效的數據到表
????? 由于歸檔重做日志(archived redo log)丟失而無法進行完全恢復(complete recovery)?
????? 當前控制文件(control file)丟失,必須使用備份的控制文件打開(open)數據庫

3、不完全恢復的步驟

????? 關閉數據庫并備份數據庫(以防止恢復失敗)
????? 啟動數據庫到mount 狀態
????? 還原所有數據文件,同時可以選擇還原控制文件(注意需要還原所有數據文件,而不僅僅是受損文件)
????? 將數據庫恢復至某個時間點、序列、或系統改變號
????? 使用RESETLOGS關鍵字打開數據庫

4、注意

????? 不完全恢復的前提條件是Oracl數據庫夠到mount狀態,即參數文件,控制文件存在并且可用
????? 在做不完全恢復前建議在恢復前后做一次備份,避免恢復失敗導致不必要的損失
??????不完全恢復完成后,需要使用OPEN RESETLOGS 方式打開(open)數據庫,并產生一個新的incarnation
????? 檢查數據庫是否恢復到正確的時間點,也就是能否找到所需的數據,如果恢復的時間點有誤,需要重置數據庫incarnation進行再次恢復

?

5、不完全介質恢復的幾種類型

????? 基于時間的恢復(Time-based recovery) 將數據恢復到指定的時間點
????? 用戶控制的恢復(Cancel-based recovery) 當用戶提交CANCEL后停止恢復(此選項在使用RMAN時無效)
????? 基于SCN 的恢復(Change-based recovery) 將數據恢復到指定的SCN
????? 按重做日志序號恢復(Log sequence recovery)將數據恢復到指定的重做日志序號(僅使用RMAN時有效)

?

不完全恢復的演示

A.?until?time?恢復(恢復到指定時間點)??

--對數據庫進行熱備

SQL> conn /as sysdba Connected. SQL> SQL> archive log list;      --查看數據庫是否開啟歸檔 Database log mode Archive Mode Automatic archival Enabled Archive destination /u03/ARCHLOG/ Oldest online log sequence 1 Next log sequence to archive 1 Current log sequence 1 SQL> @/u03/backup/hotbak.sql --進行熱備alter tablespace BK2 begin backup ; ho cp /u01/app/oracle/oradata/orcl/bk02.dbf /u03/backup/hotbak alter tablespace BK2 end backup;alter tablespace SYSAUX begin backup ; ho cp /u01/app/oracle/oradata/orcl/sysaux01.dbf /u03/backup/hotbak alter tablespace SYSAUX end backup;alter tablespace SYSTEM begin backup ; ho cp /u01/app/oracle/oradata/orcl/system01.dbf /u03/backup/hotbak alter tablespace SYSTEM end backup;alter tablespace TEST begin backup ; ho cp /u01/app/oracle/oradata/orcl/test.dbf /u03/backup/hotbak alter tablespace TEST end backup;alter tablespace UNDOTBS1 begin backup ; ho cp /u01/app/oracle/oradata/orcl/undotbs01.dbf /u03/backup/hotbak alter tablespace UNDOTBS1 end backup;alter tablespace USERS begin backup ; ho cp /u01/app/oracle/oradata/orcl/users01.dbf /u03/backup/hotbak alter tablespace USERS end backup;

測試

SQL> set time on;     --開啟時間顯示    22:50:52 SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual; --查看當前時間TO_CHAR(SYSDATE,'YY ------------------- 2016-12-20 22:51:01
22:54:12 SQL> create table dept as select * from scott.dept; 22:54:36 SQL> create table emp as select * from scott.emp; 22:54:44 SQL> truncate table emp; 22:54:56 SQL> insert into dept select 50,
'DEV','SZ' from dual; --設置這一時刻為要恢復的時間點 22:55:03 SQL> insert into dept select 60,'HR','GZ' from dual; 22:55:11 SQL> commit; 22:55:19 SQL> alter system checkpoint; 22:55:29 SQL> shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down. 22:56:32 SQL> startup mount; ORACLE instance started. Total System Global Area 805875712 bytes Fixed Size 2217672 bytes Variable Size 595593528 bytes Database Buffers 201326592 bytes Redo Buffers 6737920 bytes Database mounted. 22:57:30 SQL> host cp /u03/backup/hotbak/*dbf /u01/app/oracle/oradata/orcl/22:59:58 SQL> recover database until time '2016-12-20 22:54:56';      --恢復到指定的時間點 Media recovery complete. 23:01:47 SQL> alter database open resetlogs;                  --以restlogs的方式開啟數據庫 23:02:45 SQL> select count(*) from emp;                       --可以看出在指定時間點前的數據都被恢復了0 23:02:53 SQL> select * from dept;                        --插入的數據丟失10 ACCOUNTING NEW YORK20 RESEARCH DALLAS30 SALES CHICAGO40 OPERATIONS BOSTON

?

unitl?scn?恢復(基于系統改變號的恢復)

執行熱備

SQL> @/u03/backup/hotbak.sql

測試

SQL> create table dept as select * from scott.dept; SQL> select * from dept;10 ACCOUNTING NEW YORK20 RESEARCH DALLAS30 SALES CHICAGO40 OPERATIONS BOSTON SQL> insert into dept select 50,'DEV','SZ' from dual; SQL> commit; SQL> select current_scn from v$database;1079190 SQL> insert into dept select 60,'HR','GZ' from dual; SQL> commit; SQL> select current_scn from v$database;1079464 SQL> alter system checkpoint; SQL> shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down. SQL> startup mount; ORACLE instance started. Total System Global Area 805875712 bytes Fixed Size 2217672 bytes Variable Size 595593528 bytes Database Buffers 201326592 bytes Redo Buffers 6737920 bytes Database mounted. SQL> host cp /u03/backup/hotbak/*dbf /u01/app/oracle/oradata/orcl/SQL> recover database until change 1079190 --恢復到指定的SCN Media recovery complete. SQL> alter database open resetlogs; SQL> select * from dept;10 ACCOUNTING NEW YORK20 RESEARCH DALLAS30 SALES CHICAGO40 OPERATIONS BOSTON50 DEV SZ

?

until?cancel?恢復(基于放棄的恢復)??

這個我沒親自做實驗了,可以參考

Oracle在歸檔模式下恢復

--> Author: Robinson Cheng --> Blog: http://blog.csdn.net/robinson_0612 sys@SYBO2SZ> @db_hot_bak -->熱備數據庫 sys@SYBO2SZ> select * from dept; DEPTNO DNAME LOC ---------- -------------- ------------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON 50 DEV SZ sys@SYBO2SZ> ho ls -hltr /u02/database/SYBO2SZ/archive -->當前已經存在的歸檔日志 total 348K -rw-r----- 1 oracle oinstall 340K 2012-08-22 17:01 arch_792003491_1_1.arc -rw-r----- 1 oracle oinstall 2.0K 2012-08-22 17:01 arch_792003491_1_2.arc -rw-r----- 1 oracle oinstall 1.0K 2012-08-22 17:02 arch_792003491_1_3.arc sys@SYBO2SZ> alter system switch logfile; -->切換日志 System altered. sys@SYBO2SZ> ho ls -hltr /u02/database/SYBO2SZ/archive -->可以看到新增了arch_792003491_1_4.arc total 416K -rw-r----- 1 oracle oinstall 340K 2012-08-22 17:01 arch_792003491_1_1.arc -rw-r----- 1 oracle oinstall 2.0K 2012-08-22 17:01 arch_792003491_1_2.arc -rw-r----- 1 oracle oinstall 1.0K 2012-08-22 17:02 arch_792003491_1_3.arc -rw-r----- 1 oracle oinstall 66K 2012-08-22 17:04 arch_792003491_1_4.arc sys@SYBO2SZ> insert into dept select 60,'HR','SHANGHAI' from dual; sys@SYBO2SZ> insert into dept select 70,'INFRA','HONGKONG' from dual; sys@SYBO2SZ> commit; Commit complete. sys@SYBO2SZ> alter system checkpoint; -->切換日志 System altered. sys@SYBO2SZ> alter system archive log current; System altered. sys@SYBO2SZ> ho ls -hltr /u02/database/SYBO2SZ/archive total 420K -rw-r----- 1 oracle oinstall 340K 2012-08-22 17:01 arch_792003491_1_1.arc -rw-r----- 1 oracle oinstall 2.0K 2012-08-22 17:01 arch_792003491_1_2.arc -rw-r----- 1 oracle oinstall 1.0K 2012-08-22 17:02 arch_792003491_1_3.arc -rw-r----- 1 oracle oinstall 66K 2012-08-22 17:04 arch_792003491_1_4.arc -rw-r----- 1 oracle oinstall 2.5K 2012-08-22 17:07 arch_792003491_1_5.arc sys@SYBO2SZ> insert into dept select 80,'MARKET','BEIJING' from dual; sys@SYBO2SZ> commit; Commit complete. sys@SYBO2SZ> alter system archive log current; System altered. sys@SYBO2SZ> ho ls -hltr /u02/database/SYBO2SZ/archive -->系統又新增了幾個歸檔日志 total 424K -rw-r----- 1 oracle oinstall 340K 2012-08-22 17:01 arch_792003491_1_1.arc -rw-r----- 1 oracle oinstall 2.0K 2012-08-22 17:01 arch_792003491_1_2.arc -rw-r----- 1 oracle oinstall 1.0K 2012-08-22 17:02 arch_792003491_1_3.arc -rw-r----- 1 oracle oinstall 66K 2012-08-22 17:04 arch_792003491_1_4.arc -rw-r----- 1 oracle oinstall 2.5K 2012-08-22 17:07 arch_792003491_1_5.arc -rw-r----- 1 oracle oinstall 2.0K 2012-08-22 17:08 arch_792003491_1_6.arc sys@SYBO2SZ> ho strings /u02/database/SYBO2SZ/archive/arch_792003491_1_5.arc | grep HONGKONG -->新記錄已存在于歸檔日志 HONGKONG sys@SYBO2SZ> ho strings /u02/database/SYBO2SZ/archive/arch_792003491_1_6.arc | grep BEIJING BEIJING sys@SYBO2SZ> ho rm /u02/database/SYBO2SZ/archive/arch_792003491_1_5.arc -->模擬部分歸檔日志丟失 sys@SYBO2SZ> ho ls -hltr /u02/database/SYBO2SZ/archive total 420K -rw-r----- 1 oracle oinstall 340K 2012-08-22 17:01 arch_792003491_1_1.arc -rw-r----- 1 oracle oinstall 2.0K 2012-08-22 17:01 arch_792003491_1_2.arc -rw-r----- 1 oracle oinstall 1.0K 2012-08-22 17:02 arch_792003491_1_3.arc -rw-r----- 1 oracle oinstall 66K 2012-08-22 17:04 arch_792003491_1_4.arc -rw-r----- 1 oracle oinstall 2.0K 2012-08-22 17:08 arch_792003491_1_6.arc sys@SYBO2SZ> shutdown immediate; sys@SYBO2SZ> startup mount; ORACLE instance started. Total System Global Area 599785472 bytes Fixed Size 2074568 bytes Variable Size 243271736 bytes Database Buffers 348127232 bytes Redo Buffers 6311936 bytes Database mounted. sys@SYBO2SZ> ho cp /u02/database/SYBO2SZ/backup/hotbak/SYBO*.dbf /u02/database/SYBO2SZ/oradata/. -->還原數據庫 sys@SYBO2SZ> ho cp /u02/database/SYBO2SZ/backup/hotbak/sys*.dbf /u02/database/SYBO2SZ/oradata/. sys@SYBO2SZ> ho cp /u02/database/SYBO2SZ/backup/hotbak/undotbs* /u02/database/SYBO2SZ/undo/. sys@SYBO2SZ> recover database until cancel; --> 基于 cancel 恢復數據庫 ORA-00279: change 494124 generated at 08/22/2012 17:02:30 needed for thread 1 ORA-00289: suggestion : /u02/database/SYBO2SZ/archive/arch_792003491_1_4.arc ORA-00280: change 494124 for thread 1 is in sequence #4 Specify log: {<RET>=suggested | filename | AUTO | CANCEL} /u02/database/SYBO2SZ/archive/arch_792003491_1_4.arc -->恢復到尾數為4的歸檔日志 ORA-00279: change 494189 generated at 08/22/2012 17:04:46 needed for thread 1 ORA-00289: suggestion : /u02/database/SYBO2SZ/archive/arch_792003491_1_5.arc ORA-00280: change 494189 for thread 1 is in sequence #5 ORA-00278: log file '/u02/database/SYBO2SZ/archive/arch_792003491_1_4.arc' no longer needed for this recovery Specify log: {<RET>=suggested | filename | AUTO | CANCEL} cancel -->第5個日志文件丟失,輸入cancel Media recovery cancelled. sys@SYBO2SZ> alter database open resetlogs; --> resetlogs 方式打開數據庫 Database altered. sys@SYBO2SZ> select * from dept; -->由于歸檔日志5丟失,因此后續所有操作的數據丟失 DEPTNO DNAME LOC ---------- -------------- ------------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON 50 DEV SZ 5 rows selected.

?

總結

以上是生活随笔為你收集整理的Oracle的不完全恢复的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。