<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 40, comments - 58, trackbacks - 0, articles - 0
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    Oracle熱備份

    Posted on 2009-01-20 11:21 Astro.Qi 閱讀(3018) 評論(0)  編輯  收藏 所屬分類: Oracle
    Oracle 版本:9i、10g
    1、        進行熱備份的要求?
    熱備份是一種數據庫的處于打開時的物理備份,因為數據庫在不斷發生改變,因此備份的文件必然是不一致的,這就要求數據庫必須處于歸檔日志模式。

    2、        熱備份的一般流程?
    ?        查看數據庫是否處于歸檔日志模式,若不是將數據庫置為歸檔日志模式。
    Rem check the archived mode
    Archive log list;
    Rem if not archivelog mode issue the following statements
    Shutdown immediate;
    Startup mount;
    Alter database archivelog;
    Alter database open;
    ?        查看當前的歸檔日志情況確認已歸檔
    Archive log list;
    ?        將表空間置為熱備份模式(以users 表空間為例)
    Alter tablespace users begin backup;
    ?        物理拷貝數據文件
    Rem for windows
    Sql> host copy c:\oracle\ora92\user01.dbf d:\oracle\hotbackup;
    Rem for linux/unix
    Sql>host cp  /oracle/ora92/user01.dbf  /oracle/oracle92/user01.dbf
    ?        結束表空間的熱備份模式
    Alter tablespace users end backup;
    ?        相同方法備份其他表空間(read only 和 offline 表空間不能置為熱備份模式)
    ?        備份二進制的控制文件
    Alter system backup control file to ‘d:\oracle\hotback\controlfile.ctl’ reuse;
    Rem reuse 表示當文件存在時覆蓋。

    3、        開始熱備份時發生什么?
    ?        執行一個checkpoint 將所有dirty data 寫入文件(保證熱備份開始前文件是一致的)
    ?        鎖定文件頭的checkpoint scn,但是數據庫的改變可以正常進行。
    ?        在alert文件中增加一條記錄

    4、        熱備份時相關SCN 如何處理?
    在 開始進行熱備份時,數據文件頭的checkpoint scn 和控制文件中該文件的scn lock住,但是數據文件的dml操作可以正常進行,也就意味著block 的scn 是正常增加的,數據文件并沒有鎖定。為什么要Lock 文件的checkpoint scn(實際上對應了恢復時的rba) 主要是為了標示進行恢復操作時需要的redo log, 這樣就可以保證數據文件內所有的塊都能得到恢復,因為在進行數據文件拷貝時無法保證數據文件頭是最先拷貝完成的。如果先拷貝的是數據文件的其他部分然后才 去拷貝的數據文件頭,這時候很有可能數據文件頭的checkpoint scn已經改變了而恢復時應用redo log的范圍是由數據文件頭的rba決定的。
    當熱備份結束時,在備份結束的時候,oracle會把數據文件頭和control文件中關于這個數據文件的SCN號更新為數據庫的SCN號。

    5、        為什么熱備份時產生的redo大量增加?
    首 先說下造成大量增加的直接原因吧,因為數據文件在進行熱備份時,該數據文件中的處于data buffer中數據塊在首次發生改變時oracle會把整塊的block  image 寫入redo log。注意該處首次改變是對處于buffer中的數據塊而言的,而不是文件中的block,例如對于datafile1 的第20個塊:
    File ---data buffer 從文件中讀入db buffer
    Data buffer-----change  產生block image to redo log
    Data buffer ------change  不產生blcok image 而是正常的change vector
    Data buffer ----file  從db buffer 寫入文件
    File ----data buffer  又從文件中讀入db buffer
    Data buffer-----change   再次產生block image to redo log
    Data buffer ------change  不產生blcok image 而是正常的change vector

    之 所以要存儲block image主要是為了處理由于oracle 的block size 和操作系統的block size 不一致而可能造成的split block(指數據塊不一致)。熱備份中我們用的是操作系統命令copy or cp 來拷貝數據文件,這些命令操作的塊大小都是由操作系統決定的而操作系統塊和數據庫塊大小一般不相同。如果當數據庫塊在改變的同時在進行拷貝,就很有可能造 成拷貝的數據塊不一致(其中一部份改變前拷貝的一部分是改變后拷貝的)。Oracle 在恢復時將split block 當成是currption block,這時就需要redo log中的block image覆蓋現有塊來進行恢復

    6、        Rman備份為什么不用鎖文件頭scn,不增加redo?
    鎖文件頭scn只是為了可以正確標示恢復時的rba,熱備份方式中這個rba需要從備份的數據文件本身獲取,而rman方式將其寫入了controlfile 或catalog,所以不用鎖文件頭。
    Rman 在備份時需要使用兩個緩沖區一個輸入緩沖區,一個輸出緩沖區。數據塊在從輸入緩沖區傳送到輸出緩沖區時會進行一致性校驗,不一致時會重新讀取直到一致。所以rman備份的文件數據塊級都是一致的,不需要block image。
    (兩個緩沖區默認在pga中如果設置了io_slave 會在larger pool 中。)

    7、        熱備份過程中發生crash如何恢復?(以users 表空間 user01.dbf  file# 9 為例)
    如果在熱備份的過程中發生crash在startup時會報:ORA-01113文件9需要恢復。
    有兩種方式可以解決這個問題:
    1、        alter tablespace users end backup;
    2、        recover datafile 9;
    因為這時報的錯誤和restore了一個文件后需要恢復時一樣的,所以在確定是沒有end backup時用第一種方法否則應該用第二種。

    8、        熱備份恢復相關視圖?
    v$recover_file:需要恢復的文件
    v$recover_log:需要應用的歸檔日志
    x$kcvfh :可以查看各個文件的rba

    9、        熱備份相關腳本?(備份腳本)
    set linesize 800 verify off pagesize 0 feedback off
    define dir='c:\oracle\admin\hotback\2008-10-26'
    define log='c:\oracle\admin\hotback\2008-10-26\bklog.txt'
    define fil='c:\oracle\admin\sqlsheet\bkdatafile.sql'
    set serveroutput on
    spool &fil
    prompt spool &log
    prompt archive log list;;
    prompt alter system switch logfile;;
    declare
    cursor c_tbs is select tablespace_name tbsname from dba_tablespaces where status='ONLINE';
    cursor c_datafile(tn varchar2) is select file_name from dba_data_files where tablespace_name=tn;
    begin
    for row_tbs in c_tbs loop
    dbms_output.put_line('alter tablespace '||row_tbs.tbsname||' begin backup;');
    for row_file in c_datafile(row_tbs.tbsname) loop
       dbms_output.put_line('host copy '||row_file.file_name||' &dir;');
    end loop;
    dbms_output.put_line('alter tablespace '||row_tbs.tbsname||' end backup;');
    end loop;
    end;
    /
    prompt alter system switch logfile;;
    prompt alter database backup controlfile to '&dir\controfile.ctl';;
    prompt archive log list;;
    prompt spool off;;
    spool off;
    @&fil

    10、        當歸檔日志文件不在默認位置時如何處理?
    我們在進行熱備份恢復時需要的歸檔日志文件很有可能從默認的歸檔位置移走了,在恢復時要一個一個指定歸檔日志位置很麻煩,可以使用以下方式解決。
    ?        Recover from ‘new_dir’ datafile 9;  -- 該方法我試了下不行,好像已被oracle廢除
    ?        Set logsource  ‘new_dir’   --注意沒有“=”
    Recover datafile 9;

    主站蜘蛛池模板: 亚洲理论电影在线观看| 免费大香伊蕉在人线国产| 国产亚洲真人做受在线观看| 精品一区二区三区免费毛片| 国产又大又长又粗又硬的免费视频| 免费在线精品视频| 美女裸体无遮挡免费视频网站| 免费国产在线观看| xxxx日本在线播放免费不卡| 国产精品亚洲精品日韩已方| 黄 色一级 成 人网站免费| 亚洲成av人片在线观看天堂无码| 免费的黄色的网站| 亚洲中文字幕在线第六区| 免费无码黄网站在线看| 久久亚洲国产精品成人AV秋霞| 国内精自视频品线六区免费| 亚洲中文无码mv| 亚洲国产成人久久精品99 | 亚洲精品天堂无码中文字幕| 国产又大又长又粗又硬的免费视频 | 午夜在线a亚洲v天堂网2019| 国产又黄又爽又刺激的免费网址| 一级毛片成人免费看a| 亚洲va国产va天堂va久久| 日韩免费a级毛片无码a∨| 免费观看亚洲人成网站| 亚洲精品午夜无码专区| 麻豆最新国产剧情AV原创免费| 女bbbbxxxx另类亚洲| 亚洲va国产va天堂va久久| 免费国产黄线在线观看| 一级毛片大全免费播放| 91亚洲国产成人精品下载| 国产成人无码a区在线观看视频免费 | 亚洲精品天堂在线观看| 亚洲精品国产V片在线观看| 在线免费观看亚洲| 黄色a三级三级三级免费看| 亚洲综合一区二区国产精品| 在线免费不卡视频|