Oracle基於使用者管理的不完全恢複

來源:互聯網
上載者:User

Oracle 資料恢複從恢複類型來說,拋開具體的檔案,總共可分為兩大類型的恢複,一是完全恢複,一個是不完全恢複。其實,熟悉了Oracle體繫結構之後,對於Oracle恢複就會有一個總體的概念。因為Oracle組成的外圍部分,主要由不同的檔案來組成,每種不同類型的檔案有不同的作用,因此只要瞭解了其作用,更利於瞭解與掌握Oralce資料庫的備份與恢複。言歸正傳,完全恢複即是把資料庫恢複到最新的SCN,出故障前的那一刻,是無損恢複。而不完全恢複即是有損恢複,多用於恢複使用者誤操作,歸檔日誌丟失等情形。本文主要描述基於使用者管理的不完全恢複。

一、不完全恢複特性

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)資料庫,而應先以唯讀模式開啟資料庫,並檢查是否已   將資料庫恢複到正確的時間點。如果恢複的時間點有誤,在沒有使用OPEN RESETLOGS命令的情況下,重新執行恢複操作相對簡單。

  對於恢複結果早於指定的時間點,只需重新執行恢複操作。如果恢複結果超過了指定的時間點,則應再次還原資料庫並重新進行恢複。

  本文中的樣本為便於示範,沒有在恢複前備份故障資料,也沒有在resetlog之後進行備份。

  注:Oracle 10g中已經可以在 resetlogs 之後不備份資料庫,恢複的時候能夠穿越resetlogs

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

  基於時間的恢複(Time-based recovery) 將資料恢複到指定的時間點

  使用者控制的恢複(Cancel-based recovery) 當使用者提交CANCEL後停止恢複(此選項在使用RMAN時無效)

  基於SCN 的恢複(Change-based recovery) 將資料恢複到指定的SCN

  按重做日誌序號恢複(Log sequence recovery)將資料恢複到指定的重做日誌序號(僅使用RMAN時有效)

二、示範基於使用者管理的不完全恢複

--1、until time 恢複(恢複到指定時間點)

sys@SYBO2SZ> conn / as sysdba

Connected.

sys@SYBO2SZ> archive log list; -->當前資料庫處于歸檔模式

Database log mode       Archive Mode

Automatic archival       Enabled

Archive destination      /u02/database/SYBO2SZ/archive/

Oldest online log sequence   0

Next log sequence to archive  1

Current log sequence      1

sys@SYBO2SZ> @db_hot_bak    -->對資料庫進行熱備份

ho cp /u02/database/SYBO2SZ/oradata/sysSYBO2SZ.dbf /u02/database/SYBO2SZ/backup/hotbak

ho cp /u02/database/SYBO2SZ/undo/undotbsSYBO2SZ.dbf /u02/database/SYBO2SZ/backup/hotbak

ho cp /u02/database/SYBO2SZ/oradata/sysauxSYBO2SZ.dbf /u02/database/SYBO2SZ/backup/hotbak

ho cp /u02/database/SYBO2SZ/undo/undotbsSYBO2SZ2.dbf /u02/database/SYBO2SZ/backup/hotbak

ho cp /u02/database/SYBO2SZ/oradata/SYBO2SZ_system_tbl.dbf /u02/database/SYBO2SZ/backup/hotbak

ho cp /u02/database/SYBO2SZ/oradata/SYBO2SZ_account_tbl.dbf /u02/database/SYBO2SZ/backup/hotbak

ho cp /u02/database/SYBO2SZ/oradata/SYBO2SZ_stock_tbl.dbf /u02/database/SYBO2SZ/backup/hotbak

ho cp /u02/database/SYBO2SZ/oradata/SYBO2SZ_stock_l_tbl.dbf /u02/database/SYBO2SZ/backup/hotbak

sys@SYBO2SZ> set time on;

12:40:07 sys@SYBO2SZ> create table dept as select * from scott.dept;

12:40:31 sys@SYBO2SZ> create table emp as select * from scott.emp;

12:40:41 sys@SYBO2SZ>

12:40:55 sys@SYBO2SZ> truncate table emp;  -->對錶emp進行truncate

Table truncated.

12:41:02 sys@SYBO2SZ> insert into dept select 50,'DEV','SZ' from dual; -->為表dept新增兩條記錄並提交

12:41:14 sys@SYBO2SZ> insert into dept select 60,'HR','GZ' from dual;

12:41:19 sys@SYBO2SZ> commit;

Commit complete.

12:41:22 sys@SYBO2SZ> alter system checkpoint;  -->執行檢查點進程以寫入日誌

System altered.

12:41:31 sys@SYBO2SZ> shutdown immediate;    -->關閉資料庫

12:42:25 sys@SYBO2SZ> startup mount;       -->啟動資料庫到mount狀態

ORACLE instance started.

Total System Global Area 599785472 bytes

Fixed Size         2074568 bytes

Variable Size       213911608 bytes

Database Buffers     377487360 bytes

Redo Buffers        6311936 bytes

Database mounted.             -->下面將備份的資料進行還原,由於並非所有資料檔案位於相同路徑,因此進行多次cp  

12:42:36 sys@SYBO2SZ> ho cp /u02/database/SYBO2SZ/backup/hotbak/SYBO*.dbf /u02/database/SYBO2SZ/oradata/.

12:42:57 sys@SYBO2SZ> ho cp /u02/database/SYBO2SZ/backup/hotbak/sys*.dbf /u02/database/SYBO2SZ/oradata/.

12:43:24 sys@SYBO2SZ> ho cp /u02/database/SYBO2SZ/backup/hotbak/undotbs* /u02/database/SYBO2SZ/undo/.

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.