Oracle 10g 恢複操作概述

來源:互聯網
上載者:User

1. 執行個體恢複
     在執行個體重新啟動時,系統自動回復。
     判斷依據:資料檔案的scn與控制檔案不一致。
     步驟:
     (1)使用online redo log,資料前滾到與控制檔案一致的SCN處。
     (2)使用undo資料表空間,對未提交事務執行復原操作。
     結果:資料庫中資料保留到執行個體異常前最後一次提交的內容。
    
2. 使用者錯誤恢複

   使用者錯誤包括:使用者資料錯誤修改,資料表誤刪等
   恢複技術:閃回查詢(Flashback Query)
             Flashback Drop和資料表空間資源回收筒(Tablespace's recycle bin)
             閃回表(Flashback Table)
             LogMiner

 

2.1 閃回查詢
  
    前提:undo資料表空間足夠容納使用者在一段時期內修改的資料
          undo資料表空間保留曆史修改資料的時限(UNDO_RETETION初始變數)
         
    查詢表employees在15分鐘前的資料:

    SELECT employee_id, last_name, email FROM hr.employees
      AS OF TIMESTAMP(systimestamp - interval '15' minute)
      WHERE employee_id = 101;

 

    查詢表employees在指定曆史時間的資料:

    SELECT employee_id, last_name, email FROM hr.employees
      AS OF TIMESTAMP(
        to_timestamp('01-Sep-04 16:18:57.84', 'DD-Mon-RR HH24:MI:SS.FF'))
      WHERE employee_id = 101;

 

2.2 Flashback Drop和資料表空間資源回收筒

 

    每個Oracle資料表空間中存在一個Recycle bin,使用者存放刪除的表和表相關內容(索引等)
    刪除的表所佔用的空間並不立即回收,但在視圖DBA_FREE_SPACE中可看到。

 

    # 恢複已刪除的資料表到刪除前狀態(包括表中資料):

    SQL> FLASHBACK TABLE order_items TO BEFORE DROP;

 

    # 恢複已刪除的資料表並改名:   
    SQL> FLASHBACK TABLE order_items TO BEFORE DROP RENAME TO order_items_old;

 

    如果同一個表被刪除恢複多次,如果需要恢複到以前的版本,則可以查詢檢視RECYCLEBIN
    或者使用命令SHOW RECYCLEBIN,並使用其中的表名稱。

    使用限制:
        僅能用於非系統本地管理的資料表空間。
        位元影像聯合索引、參照完整性條件約束、物化視圖刪除後無法儲存在Recyclebin.
        使用Drop Index刪除索引,刪除的索引不會儲存(只有刪除表,縣官索引才儲存)。


2.3 Flashback表

    允許將一個或多個表恢複到曆史指定時間的狀態。無需使用太耗時的操作。
    Flashback Table使用對相關事務的Undo操作恢複表,使用undo資料表空間。
    (Flashback Drop直接回收恢複表佔用的空間)
    需要啟用行遷移(row movement)功能。undo操作可能會改變記錄的rowid.

 

    #啟用Row Movement
    SQL> ALTER TABLE hr.employees ENABLE ROW MOVEMENT;

 

    #使用Flashback Table恢複表到指定時間
    SQL> FLASHBACK TABLE hr.employees [, ...]
         TO TIMESTAMP systimestamp - interval '15' minute;

 

2.4 LogMiner
  
    從Redo Log中提取所有的DDL和DML活動的語句。
    使用V$LOGMNR_CONTENTS視圖查看(首先需要執行DBMS_LOGMNR.START_LOGMNR()過程)
    LogMiner工具本身不能用於恢複資料庫
    僅從RedoLog中提取用於恢複資料庫的SQL語句。

 

3. 控制檔案恢複

    如果有控制檔案發生錯誤,Oracle執行個體將停止運行。
    如果沒有停止,則必須手動執行:SHUTDOWN ABORT
   
    將未損壞的控制檔案複製一份到目標地址,並修改初始化參數中出問題的
    控制檔案的路徑到新的控制檔案
    或者在初始化參數中把有問題的控制檔案條目刪除。
    控制檔案錯誤時,修改初始化參數參數,需要在NOMOUNT狀態下。

 

    SQL> SHUTDOWN IMMEDIATE;
    SQL> STARTUP NOMOUNT;
    SQL> SHOW PARAMETER CONTROL_FILES;
      或
    SQL> SELECT name, value FROM v$spparameters
         WHERE name = 'control_files';
    SQL> ALTER SYSTEM SET CONTROL_FILES='...','...','...' SCOPE=SPFILE;
    SQL> SHUTDOWN IMMEDIATE;
    SQL> STARTUP;
  

4. 重做日誌恢複

   只要有一組中還有一個Redo Log檔案還有可用,Oracle執行個體就不會崩潰。
   (即一個redo log組中所有redo log檔案全部失效,Oracle樣本就會崩潰)
   使用V$LOGFILE視圖查詢當前redo log檔案的狀態。
  
   如果一個redo log組中存在錯誤的redo log檔案,那麼按以下步驟恢複:
  
   # 確認哪個檔案出現錯誤(在哪個組中)
   SQL> SELECT * FROM v$logfile ORDER BY group#;

 

   # 對該組redo log執行歸檔操作
   SQL> ALTER SYSTEM ARCHIVE LOG GROUP <group_number>;
  
   # 清空有問題的redo log組並重建
   SQL> ALTER DATABASE CLEAR LOGFILE GROUP <group_number>;
  
5. 系統關鍵資料檔案恢複

    包括SYSTEM資料表空間和UNDO資料表空間。

 

5.1 NOARCHIVELOG 模式下

    只能依賴於是否對資料庫有全備份,如果有,則只能恢複到全備份時。

 

5.2 ARCHIVELOG 模式下

 

    SQL> SHUTDOWN ABORT;    # 強制停止
    SQL> STARTUP MOUNT;     # 只能在Mount狀態下恢複

 

    在EM的Perform Recovery中,選擇恢複資料檔案,以及對應的SYSTEM資料表空間資料檔案。
    並可指定需要恢複到的目標路徑。系統將會執行RMAN指令碼進行恢複。

 

    SQL> ALTER DATABASE OPEN; # 恢複完畢後開啟資料庫

 

6. 非系統資料檔案恢複

 

6.1 NOARCHIVELOG 模式下

    只能依賴於是否對資料庫有全備份,如果有,則只能恢複到全備份時。

 

6.2 ARCHIVELOG 模式下

    隻影響到丟失的資料檔案相關的資料庫物件。
    同樣可在EM中,按步驟執行Perform Recovery進行恢複。

 

    # 查看資料檔案
    SQL> SELECT t.name, d.name FROM v$tablespace t
         JOIN  v$datafile d USING (ts#)
         WHERE t.name = 'USERS';

 

    也可以執行RMAN命令恢複編號為4和7的資料檔案:

 

    $ rman target /
    RMAN> run { sql 'alter database datafile 4 offline';
                sql 'alter database datafile 7 offline';
                restore datafile 4, 7;
                recover datafile 4, 7;
                sql 'alter database datafile 4 online';
                sql 'alter database datafile 7 online'; }

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.