RMAN備份相關知識與技能總結

zhcunique發表於2021-02-26
  1. 相關知識點總結:
    備份的定義及分類:
    備份就是把資料庫複製到轉儲裝置的過程。其中,轉儲裝置是指用於放置資料庫副本的磁帶或磁碟。通常也將存放於轉儲裝置中的資料庫的副本稱為原資料庫的備份或轉儲。備份是一份資料副本,從不同的角度分類如下:
    物理備份:對資料庫作業系統的物理檔案(資料檔案,控制檔案和日誌檔案)的備份。物理備份又可以分為離線備份(冷備份)和聯機備份(熱備份),前者是在關閉資料庫的時候進行的,後者是以歸檔日誌的方式對執行的資料庫進行備份。可以使用oracle的恢復管理器(RMAN)或作業系統命令進行資料庫的物理備份。
    邏輯備份:對資料庫邏輯元件(如表和儲存過程等資料庫物件)的備份。邏輯備份的手段很多,如傳統的EXP,資料泵(EXPDP),資料庫閃回技術等第三方工具,都可以進行資料庫的邏輯備份。


    從資料庫的備份角度分類:
    從資料庫的備份角度,備份可以分為完全備份和增量備份和差異備份
    完全備份:每次對資料庫進行完整備份,當發生資料丟失的災難時,完全備份無需依賴其他資訊即可實現100%的資料恢復,其恢復時間最短且操作最方便。
    增量備份:只有那些在上次完全備份或增量備份後被修改的檔案才會被備份。優點是備份資料量小,需要的時間短,缺點是恢復的時候需要依賴以前備份記錄,出問題的風險較大。
    差異備份:備份那些自從上次完全備份之後被修改過的檔案。從差異備份中恢復資料的時間較短,因此只需要兩份資料


    恢復的定義及分類
    恢復就是發生故障後,利用已備份的資料檔案或控制檔案,重新建立一個完整的資料庫,恢復分為以下兩種型別:
    例項恢復:當oracle例項出現失敗後,oracle自動進行的恢復
    介質恢復:當存放資料庫的介質出現故障時所作的恢復。介質恢復又分為完全恢復和不完全恢復
    完全恢復:將資料庫恢復到資料庫失敗時的狀態。這種恢復是透過裝載資料庫備份並應用全部的重做日誌做到的。
    不完全恢復:將資料庫恢復到資料庫失敗前的某一時刻的狀態。這種恢復是透過裝載資料庫備份並應用部分的重做日誌做到的。進行不完全恢復後,必須在啟動資料庫時用resetlogs選項重設聯機重做日誌。

  2. 備份恢復操作命令:

    1)備份及恢復資料庫

    RMAN>backup database;

    RMAN>backup database plus archivelog delete input;

    RMAN>backup database FORMAT '$pwd/oradata/backup/rmanbak/%U';

    RMAN>run
    {
    allocate channel ch1 device type disk;
    backup database format '$pwd/oradata/backup/rmanbak/%U';
    release channel ch1;
    }

    RMAN>restore database;

    RMAN>recover database;

    RMAN>alter database open(不完全恢復加引數resetlogs;

     2)備份及恢復表空間或資料檔案

    RMAN>backup tablespace users;

    RMAN>backup filesperset=3 tablespace users,system,sysaux;

    RMAN>run
            {
            allocate channel ch1 device type disk;
            backup format '$pwd/oradata/backup/rmanbak/%U' (tablespaceusers,system,sysaux);
            release channel ch1;
            }

    run
            {
            sql 'alter tablespace users offline immediate';
            restore tablespace users;
            recover tablespace user;
            sql 'alter tablespace users online';
            }

    3)還原至特定備份集

    RMAN>restore database from tag TAG20110725T104645;

    RMAN> recover database from tag TAG20110725T104645;

    RMAN> alter database open;

    不完全恢復:
    RMAN>restore database from tag TAG20110725T104645;

    RMAN>recover database until time "to_date('2011-08-04 15:37:25','yyyy/mm/dd hh24:mi:ss')";

    RMAN>alter database open resetlogs;

  3. 檢視RMAN的備份資訊總結:

    檢視備份成功的歷史記錄:
  4. SELECT * FROM V$RMAN_STATUS
     
    WHERE START_TIME >= TO_DATE(&START_TIME,'YYYY-MM-DD HH24:MI:SS')
     
      AND END_TIME   <= TO_DATE(&END_TIME  ,'YYYY-MM-DD HH24:MI:SS')
     
      AND OPERATION ='BACKUP'
     
      AND STATUS ='COMPLETED'

    檢視所有備份集詳細資訊:

    SELECT A.RECID "BACKUP SET",
     
           A.SET_STAMP,
     
            DECODE (B.INCREMENTAL_LEVEL,
     
                    '', DECODE (BACKUP_TYPE, 'L', 'Archivelog', 'Full'),
     
                    1, 'Incr-1級',
     
                    0, 'Incr-0級',
     
                    B.INCREMENTAL_LEVEL)
     
               "Type LV",
     
            B.CONTROLFILE_INCLUDED "包含CTL",
     
            DECODE (A.STATUS,
     
                    'A', 'AVAILABLE',
     
                    'D', 'DELETED',
     
                    'X', 'EXPIRED',
     
                    'ERROR')
     
               "STATUS",
     
            A.DEVICE_TYPE "Device Type",
     
            A.START_TIME "Start Time",
     
            A.COMPLETION_TIME "Completion Time",
     
            A.ELAPSED_SECONDS "Elapsed Seconds",
     
            A.BYTES/1024/1024/1024 "Size(G)",
     
            A.COMPRESSED,
     
            A.TAG "Tag",
     
            A.HANDLE "Path"
     
       FROM GV$BACKUP_PIECE A, GV$BACKUP_SET B
     
      WHERE A.SET_STAMP = B.SET_STAMP AND A.DELETED = 'NO'
     
    RDER BY A.COMPLETION_TIME DESC;

    查詢某個備份集中包含資料檔案

    SELECT DISTINCT c.file#,A.SET_STAMP, D.NAME, C.CHECKPOINT_CHANGE#, C.CHECKPOINT_TIME
     
    FROM V$BACKUP_DATAFILE C, V$BACKUP_PIECE A, V$DATAFILE D
     
    WHERE A.SET_STAMP = C.SET_STAMP
     
        AND D.FILE# = C.FILE#
     
        AND A.DELETED='NO'
     
        AND c.set_stamp=&set_stamp
     
     ORDER BY C.FILE#;

    查詢某個備份集中控制檔案

    SELECT DISTINCT A.SET_STAMP,
     
                    D.NAME,
     
                    C.CHECKPOINT_CHANGE#,
     
                    C.CHECKPOINT_TIME
     
     FROM V$BACKUP_DATAFILE C, V$BACKUP_PIECE A, V$CONTROLFILE D
     
     WHERE A.SET_STAMP = C.SET_STAMP
     
       AND C.FILE# = 0
     
       AND A.DELETED = 'NO'
     
       AND C.SET_STAMP = &SET_STAMP;

    檢視某個備份集中歸檔日誌:

    SELECT DISTINCT B.SET_STAMP,
     
                    B.THREAD#,
     
                    B.SEQUENCE#,
     
                    B.FIRST_TIME,
     
                    B.FIRST_CHANGE#,
     
                    B.NEXT_TIME,
     
                    B.NEXT_CHANGE#
     
     FROM V$BACKUP_REDOLOG B, V$BACKUP_PIECE A
     
     WHERE A.SET_STAMP = B.SET_STAMP
     
       AND A.DELETED = 'NO'
     
       AND B.SET_STAMP = &SET_STAMP
     
     ORDER BY THREAD#, SEQUENCE#;

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69994536/viewspace-2759584/,如需轉載,請註明出處,否則將追究法律責任。

相關文章