Oracle 熱備份

來源:互聯網
上載者:User

-- Oracle 熱備份
--=======================

 

    Oracle 熱備份是指資料庫處於open狀態下,對資料庫的資料檔案、控制檔案、參數檔案、密碼檔案等進行一系列備份操作。
熱備是基於使用者管理備份恢複的一種方式,也是除了RMAN備份之外較為常用的一種備份方式。
 

一、熱備的過程
    凍結塊頭-->控制SCN在備份時不發生變化
    進行物理拷貝
    解凍塊頭-->讓SCN可以變化(當對SCN解凍後,系統會自動更新SCN至最新的狀態)

 

二、基於資料庫的熱備
    alter database begin backup;

    拷貝所有的datafile到備份目錄
    alter database end backup;

 

三、基於資料表空間的熱備
    alter tablespace tablespace_name begin backup;

    拷貝tablespace_name資料表空間的資料檔案到備份目錄
    alter tablespace tablespace_name end backup;

 

    alter tablespace tablespace_name begin backup時完成的任務
        檢查點事件發生,檢查點通知DBWn將該資料表空間上所有的髒資料被寫入到磁碟
        在資料檔案頭部凍結當前檢查點事件發生時的SCN號
        所有發生變化資料區塊的完整鏡像(修改前後)被寫入到redo log中
        允許該資料表空間內資料的正常讀寫
 

    建議使用基於資料表空間的熱備,這樣將儘可能的減少對系統效能的影響   

 

四、控制檔案的熱備
    alter database backup controlfile to '<dir>';          --控制檔案的完整備份
    alter database backup controlfile to trace as '<dir>'  --用於建立控制檔案的語句,丟失了部分資訊
    控制檔案發生變化情況
        alter database [add |drop] logfile

        alter database [add |drop] logfile member

        alter database [add |drop] logfile group

        alter database [archivelog |noarchivelog]

        alter database rename file

        create tablespace

        alter tablespace [add | rename] datafile

        alter tablespace [read write | read only]

        drop tablespace

    更多關於控制檔案請參考:Oracle 控制檔案

   

五、參數檔案的熱備
    create pfile from spfile ;

    create pfile = '<dir>' from spfile;

    更多關於參數檔案請參考:Oracle 參數檔案

   

六、暫存資料表空間的資料檔案、記錄檔不需要備份
    --查看暫存資料表空間
        SQL> select tablespace_name from dba_temp_files;

 

        TABLESPACE_NAME

        ------------------------------

        TEMP

   

    --查看暫存資料表空間的資料檔案
        SQL> select name from v$tempfile;

 

        NAME

        ------------------------------------------------------

        /u01/app/oracle/oradata/orcl/temp01.dbf

   

    --將暫存資料表空間置為備份模式,收到了錯誤的提示
        SQL> alter tablespace temp begin backup;

        alter tablespace temp begin backup

        *

        ERROR at line 1:

        ORA-03217: invalid option for alter of TEMPORARY TABLESPACE

 

    --將暫存資料表空間置為備份模式,收到了錯誤的提示
        SQL> alter temporary tablespace temp begin backup;

        alter temporary tablespace temp begin backup

              *

        ERROR at line 1:

        ORA-00940: invalid ALTER command

 

七、熱備指令碼
    1.基於資料庫熱備的指令碼
        SQL> ho cat /tmp/tmphotbak.sql;

            set feedback off

            set heading off

            set verify off

            set trimspool off

            set pagesize 0

            set linesize 200

            define dir = '/u01/app/oracle/hotbak'

            define script = '/tmp/hotbak.sql'

            spool &script

            select 'ho cp ' ||name|| ' &dir'  from v$datafile;

            spool off

            alter database begin backup;

            start &script

            alter database end backup;

            alter database backup controlfile to '&dir/controlbak.ctl';

            create pfile = '&dir/initorcl.ora' from spfile;

        SQL> start /tmp/tmphotbak.sql;  --執行該指令碼即可對資料庫進行熱備
       

    2.基於資料表空間熱備的指令碼
        SQL> ho cat /tmp/tmphotbak_tb.sql

            set feedback off

            set heading off

            set verify off

            set trimspool off

            set pagesize 0

            set linesize 200

            define dir = '/u01/app/oracle/hotbak'

            define script = '/tmp/hotbak_tb.sql'

            ho rm &script

            ho rm &dir/* 

            spool &script

            select 'alter tablespace '|| tablespace_name ||' begin backup ;' ||

             chr(10)||'ho cp ' || file_name || ' &dir ' ||

             chr(10)||'alter tablespace '|| tablespace_name || ' end backup;'

             from dba_data_files order by tablespace_name;

            spool off

            start &script

            alter database backup controlfile to '&dir/controlbak.ctl';

            create pfile = '&dir/initorcl.ora' from spfile;

        SQL> start /tmp/tmphotbak.sql;  --執行該指令碼即可對資料庫基於資料表空間進行熱備
       

八、備份的相關視圖
    v$backup

   

    SQL> desc v$backup;

     Name                                      Null?    Type

     ----------------------------------------- -------- ---------------------

     FILE#                                              NUMBER

     STATUS                                             VARCHAR2(18)

     CHANGE#                                            NUMBER   --記錄備份時的SCN號
     TIME                                               DATE

 

    SQL> select * from v$backup;   --狀態為NOT ACTIVE ,此時沒有任何資料處於備份狀態
 

         FILE# STATUS                CHANGE# TIME

    ---------- ------------------ ---------- ---------

             1 NOT ACTIVE            1006747 16-AUG-10

             2 NOT ACTIVE            1006793 16-AUG-10

             3 NOT ACTIVE            1006729 16-AUG-10

             4 NOT ACTIVE            1006807 16-AUG-10

             5 NOT ACTIVE            1006717 16-AUG-10

 

    SQL> alter tablespace users begin backup;  --對錶空間users進行熱備
 

    Tablespace altered.

 

    SQL> select * from v$backup;   --對應的file# 為的處於ACTIVE狀態
 

         FILE# STATUS                CHANGE# TIME

    ---------- ------------------ ---------- ---------

             1 NOT ACTIVE            1006747 16-AUG-10

             2 NOT ACTIVE            1006793 16-AUG-10

             3 NOT ACTIVE            1006729 16-AUG-10

             4 ACTIVE                1006852 16-AUG-10

             5 NOT ACTIVE            1006717 16-AUG-10

 

    --備份時發生斷電或意外故障的恢複
    --假定users資料表空間目前置於begin bakup模式,系統斷電     

        SQL> alter tablespace users begin backup;

 

        Tablespace altered.

       

        --在另一個會話中強制關閉資料庫 

        SQL> shutdown abort;

        ORACLE instance shut down.

 

        --啟動後收到錯誤提示
        SQL> startup

        ORACLE instance started.

 

        Total System Global Area  469762048 bytes

        Fixed Size                  1220048 bytes

        Variable Size              92275248 bytes

        Database Buffers          373293056 bytes

        Redo Buffers                2973696 bytes

        Database mounted.

        ORA-01113: file 4 needs media recovery

        ORA-01110: data file 4: '/u01/app/oracle/oradata/orcl/users01.dbf'

 

        --查看備份視圖,檔案此時處於活動狀態
        SQL> select * from v$backup;

 

             FILE# STATUS                CHANGE# TIME

        ---------- ------------------ ---------- ---------

                 1 NOT ACTIVE            1006958 16-AUG-10

                 2 NOT ACTIVE            1006983 16-AUG-10

                 3 NOT ACTIVE            1006943 16-AUG-10

                 4 ACTIVE                1007072 16-AUG-10

                 5 NOT ACTIVE            1006931 16-AUG-10

 

        --使用end backup來終止備份
        SQL> alter database datafile 4 end backup;   --此處也可以使用recover datafile 4來完成恢複
 

        Database altered.

 

        SQL> alter database open;

 

        Database altered.

 

        SQL> select * from dual;

 

        D

        -

        X

 

    有關Oracle的冷備份,請參考:Oracle 冷備份

九、更多參考
 

Oracle 冷備份
 

SPFILE錯誤導致資料庫無法啟動

 

Oracle 使用者、對象許可權、系統許可權

 

Oracle 角色、設定檔

 

  Oracle 聯機重做記錄檔(ONLINE LOG FILE)

 

  Oracle 控制檔案(CONTROLFILE)

 

  Oracle 資料表空間與資料檔案

 

Oracle 歸檔日誌
 

 

本文來自CSDN部落格,轉載請標明出處:http://blog.csdn.net/robinson_0612/archive/2010/08/16/5816012.aspx

相關文章

聯繫我們

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