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

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

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

    海鷗航際

    JAVA站
    posts - 11, comments - 53, trackbacks - 1, articles - 102

    Oracle RMAN快速入門指南

    前言

    這篇文章主要介紹RMAN的常用方法,其中包含了作者一些自己的經(jīng)驗,里面的實驗也基本全在WIN 2K和ORACLE 8.1.6環(huán)境下測試成功(因為這個環(huán)境比較容易實現(xiàn))。

    本文借鑒了網(wǎng)上一些高手的相關(guān)文章,希望大俠們不要見怪,此處一并謝過。

    這篇文章主要是在北京出差期間寫的,回到家后整理修改了一下,時間比較倉促,同時因為篇幅有限,一些技術(shù)細(xì)節(jié)不能一一覆蓋了,只希望能夠幫助新手入門的作用,想真正熟練掌握RMAN,必須經(jīng)過較長時間的實踐磨練才可以,尤其需要在工程中獲得寶貴的故障解決經(jīng)驗。

    1.什么是RMAN

    RMAN可以用來備份和還原數(shù)據(jù)庫文件、歸檔日志和控制文件。它也可以用來執(zhí)行完全或不完全的數(shù)據(jù)庫恢復(fù)。

    注意:RMAN不能用于備份初始化參數(shù)文件和口令文件。

    RMAN啟動數(shù)據(jù)庫上的Oracle服務(wù)器進(jìn)程來進(jìn)行備份或還原。備份、還原、恢復(fù)是由這些進(jìn)程驅(qū)動的。

    RMAN可以由OEM的Backup Manager GUI來控制,但在本文章里不作重點討論。

    2. Terminology專業(yè)詞匯解釋

    2.1. Backup sets備份集合

    備份集合有下面的特性:
      包括一個或多個數(shù)據(jù)文件或歸檔日志
      以oracle專有的格式保存
      有一個完全的所有的備份片集合構(gòu)成
      構(gòu)成一個完全備份或增量備份

    2.2. Backup pieces備份片

    一個備份集由若干個備份片組成。每個備份片是一個單獨的輸出文件。一個備份片的大小是有限制的;如果沒有大小的限制, 備份集就只由一個備份片構(gòu)成。備份片的大小不能大于使用的文件系統(tǒng)所支持的文件長度的最大值。

    2.3. Image copies鏡像備份

    鏡像備份是獨立文件(數(shù)據(jù)文件、歸檔日志、控制文件)的備份。它很類似操作系統(tǒng)級的文件備份。它不是備份集或備份片,也沒有被壓縮。

    2.4. Full backup sets全備份集合

    全備份是一個或多個數(shù)據(jù)文件中使用過的數(shù)據(jù)塊的的備份。沒有使用過的數(shù)據(jù)塊是不被備份的,也就是說,oracle 進(jìn)行備份集合的壓縮。

    2.5. Incremental backup sets增量備份集合

    增量備份是指備份一個或多個數(shù)據(jù)文件的自從上一次同一級別的或更低級別的備份以來被修改過的數(shù)據(jù)塊。 與完全備份相同,增量備份也進(jìn)行壓縮。

    2.6. File multiplexing

    不同的多個數(shù)據(jù)文件的數(shù)據(jù)塊可以混合備份在一個備份集中。

    2.7. Recovery catalog resyncing 恢復(fù)目錄同步

    使用恢復(fù)管理器執(zhí)行backup、copy、restore或者switch命令時,恢復(fù)目錄自動進(jìn)行更新,但是有關(guān)日志與歸檔日志信息沒有自動記入恢復(fù)目錄。需要進(jìn)行目錄同步。使用resync catalog命令進(jìn)行同步。

    RMAN>resync catalog;
    
    RMAN-03022:正在編譯命令:resync
    RMAN-03023:正在執(zhí)行命令:resync
    RMAN-08002:正在啟動全部恢復(fù)目錄的 resync
    RMAN-08004:完成全部 resync

    3. 恢復(fù)目錄

    3.1.恢復(fù)目錄的概念

    恢復(fù)目錄是由RMAN使用、維護(hù)的用來放置備份信息的倉庫。RMAN利用恢復(fù)目錄記載的信息去判斷如何執(zhí)行需要的備份恢復(fù)操作。

    恢復(fù)目錄可以存在于ORACLE數(shù)據(jù)庫的計劃中。

    雖然恢復(fù)目錄可以用來備份多個數(shù)據(jù)庫,建議為恢復(fù)目錄數(shù)據(jù)庫創(chuàng)建一個單獨的數(shù)據(jù)庫。

    恢復(fù)目錄數(shù)據(jù)庫不能使用恢復(fù)目錄備份自身。

    3.2.建立恢復(fù)目錄

    第一步,在目錄數(shù)據(jù)庫中創(chuàng)建恢復(fù)目錄所用表空間:

    SQL> create tablespace rman_ts datafile "d:\oracle\oradata\rman\rman_ts.dbf" size 20M;
    
    表空間已創(chuàng)建。

    第二步,在目錄數(shù)據(jù)庫中創(chuàng)建RMAN 用戶并授權(quán):

    SQL> create user rman identified by rman default tablespace rman_ts temporary 
      tablespace temp quota unlimited on rman_ts;
    
    用戶已創(chuàng)建。
    
    SQL> grant recovery_catalog_owner to rman;
    
    授權(quán)成功。
    
    SQL> grant connect, resource to rman;
    
    授權(quán)成功。
    

    第三步,在目錄數(shù)據(jù)庫中創(chuàng)建恢復(fù)目錄

    C:\>rman catalog rman/rman
    
    恢復(fù)管理器:版本8.1.6.0.0 - Production
    
    RMAN-06008:連接到恢復(fù)目錄數(shù)據(jù)庫
    RMAN-06428:未安裝恢復(fù)目錄
    
    RMAN>create catalog tablespace rman_ts;
    
    RMAN-06431:恢復(fù)目錄已創(chuàng)建

    注意:雖然使用RMAN不一定必需恢復(fù)目錄,但是推薦使用。因為恢復(fù)目錄記載的信息大部分可以通過控制文件來記載,RMAN在恢復(fù)數(shù)據(jù)庫時使用這些信息。不使用恢復(fù)目錄將會對備份恢復(fù)操作有限制。

    3.3.使用恢復(fù)目錄的優(yōu)勢

    可以存儲腳本;

    記載較長時間的備份恢復(fù)操作;

    4. 啟動RMAN

    RMAN為交互式命令行處理界面,也可以從企業(yè)管理器中運行。

    為了使用下面的實例,先檢查環(huán)境符合:

      the target database is called "his" and has the same TNS alias
      user rman has been granted "recovery_catalog_owner "privileges
      目標(biāo)數(shù)據(jù)庫的連接用戶為internal帳號,或者以其他SYSDBA類型帳號連接  
      the recovery catalog database is called "rman" and has the same TNS alias
      the schema containing the recovery catalog is "rman" (same password)

    在使用RMAN前,設(shè)置NLS_DATE_FORMAT 和NLS_LANG環(huán)境變量,很多RMAN LIST命令的輸出結(jié)果是與日期時間相關(guān)的,這點在用戶希望執(zhí)行以時間為基準(zhǔn)的恢復(fù)工作也很重要。

    下例是環(huán)境變量的示范:

    NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK
    NLS_DATE_FORMAT=DD-MON-YYYY HH24:MI:SS

    為了保證RMAN使用時能連接恢復(fù)目錄,恢復(fù)目錄數(shù)據(jù)庫必須打開,目標(biāo)數(shù)據(jù)庫至少要STARTED(unmount),否則RMAN會返回一個錯誤,目標(biāo)數(shù)據(jù)庫必須置于歸檔模式下。

    4.1.使用不帶恢復(fù)目錄的RMAN

    設(shè)置目標(biāo)數(shù)據(jù)庫的 ORACLE_SID ,執(zhí)行:

    % rman nocatalog
    RMAN> connect target
    RMAN> connect target internal/<PASSWORD>@his

    4.2.使用帶恢復(fù)目錄的RMAN

    % rman rman_ts rman/rman@rman
    RMAN> connect target
    
    % rman rman_ts rman/rman@rman target internal/<PASSWORD>@his

    4.3.使用RMAN

    一旦連接到目標(biāo)數(shù)據(jù)庫,可以通過交互界面或者事先存儲的腳本執(zhí)行指定RMAN命令,下面是一個使用RMAN交互界面的實例:

    RMAN> resync catalog;
    RMAN-03022:正在編譯命令:resync
    RMAN-03023:正在執(zhí)行命令:resync
    RMAN-08002:正在啟動全部恢復(fù)目錄的 resync
    RMAN-08004:完成全部 resync

    使用腳本的實例:

    RMAN> execute script alloc_1_disk;

    創(chuàng)建或者替代存儲的腳本:

    RMAN> replace script alloc_1_disk { 
       2> allocate channel d1 type disk;
       3> }

    5.注冊或者注銷目標(biāo)數(shù)據(jù)庫

    5.1.注冊目標(biāo)數(shù)據(jù)庫

    數(shù)據(jù)庫狀態(tài):

    恢復(fù)目錄狀態(tài):打開

    目標(biāo)數(shù)據(jù)庫:加載或者打開

    目標(biāo)數(shù)據(jù)庫在第一次使用RMAN之前必須在恢復(fù)目錄中注冊:

    第一步,啟動恢復(fù)管理器,并且連接目標(biāo)數(shù)據(jù)庫:

    C:\>rman target internal/oracle@his catalog rman/rman@rman
    恢復(fù)管理器:版本8.1.6.0.0 - Production
    RMAN-06005:連接到目標(biāo)數(shù)據(jù)庫:HIS (DBID=3021445076)
    RMAN-06008:連接到恢復(fù)目錄數(shù)據(jù)庫

    第二步,注冊數(shù)據(jù)庫:

    RMAN> register database;
    RMAN-03022:正在編譯命令:register
    RMAN-03023:正在執(zhí)行命令:register
    RMAN-08006:注冊在恢復(fù)目錄中的數(shù)據(jù)庫
    RMAN-03023:正在執(zhí)行命令:full resync
    RMAN-08002:正在啟動全部恢復(fù)目錄的resync
    RMAN-08004:完成全部resync
    

    5.2.注銷目標(biāo)數(shù)據(jù)庫

    RMAN提供了一個注銷工具,叫DBMS_RCVCAT工具包,請注意一旦注銷了該目標(biāo)數(shù)據(jù)庫,就不可以使用恢復(fù)目錄中含有的備份集來恢復(fù)數(shù)據(jù)庫了。

    為了能注銷數(shù)據(jù)庫,需要獲得數(shù)據(jù)庫的標(biāo)識碼(DB_ID)和數(shù)據(jù)庫鍵值(DB_KEY)。其中連接目標(biāo)數(shù)據(jù)庫時將會獲得DB_ID。

    C:\>rman target internal/oracle@his catalog rman/rman@rman
    恢復(fù)管理器:版本8.1.6.0.0 - Production
    RMAN-06005:連接到目標(biāo)數(shù)據(jù)庫:HIS (DBID=3021445076)
    RMAN-06008:連接到恢復(fù)目錄數(shù)據(jù)庫
    其中DBID=3021445076,利用DBID=3021445076查詢數(shù)據(jù)庫鍵值碼,連接到目標(biāo)數(shù)據(jù)庫,查詢db表:
    SQL> select * from db;
    
      DB_KEY     DB_ID      CURR_DBINC_KEY
      ---------- ---------- --------------
      1          3021445076 2

    獲得DB_KEY=1,這樣,該目標(biāo)數(shù)據(jù)庫DB_KEY=1,DBID=3021445076,利用兩個值使用DBMS_RCVCAT工具包就可以注銷數(shù)據(jù)庫:

    SQL> execute dbms_rcvcat.unregisterdatabase(1,3021445076);
    PL/SQL 過程已成功完成。

    至此,注銷數(shù)據(jù)庫操作完成。

    6.操作已有的備份

    6.1.加入目錄數(shù)據(jù)庫

    數(shù)據(jù)庫狀態(tài):

    恢復(fù)目錄:打開

    目標(biāo)數(shù)據(jù)庫:加載或者打開

    如果存在8.x版本以前創(chuàng)建的備份數(shù)據(jù)想注冊到目標(biāo)數(shù)據(jù)庫,可以采用如下手工方式加入到恢復(fù)目錄中

    RMAN> catalog datafilecopy "/oracle/ .... /system01.dbf"; 

    使用如下命令顯示恢復(fù)目錄中包含的文件

    RMAN> list copy of database;

    6.2.從目錄數(shù)據(jù)庫中刪除

    第一步:查看備份信息:

    RMAN>list backup;
    RMAN-03022:正在編譯命令:list

    備份集列表

    關(guān)鍵字  Recid      標(biāo)記       LV 集合標(biāo)記   集合計數(shù)   完成時間
    ------- ---------- ---------- -- ---------- ---------- ----------------------
    1104    2          501364455  0  501364446  2          06-8月 -03

    備份段列表

    關(guān)鍵字  Pc# Cp# 狀態(tài)        完成時間               段名
    ------- --- --- ----------- ---------------------- ------------------------
    1106    1   1   AVAILABLE   06-8月 -03             D:\ORACLE\ORA81\DATABASE\02EU4DMU_1_1

    數(shù)據(jù)文件包括列表

    文件 名稱                                  LV 類型 檢查點SCN  檢查點時間
    ---- ------------------------------------- -- ---- ---------- -------------
       3 D:\ORACLE\ORADATA\HIS\USERS01.DBF      0 Full 160052     06-8月 -03

    備份集的關(guān)鍵字為1104。

    第二步:定義delete通道:

    RMAN>allocate channel for delete type disk;
    RMAN-03022:正在編譯命令:allocate
    RMAN-03023:正在執(zhí)行命令:allocate
    RMAN-08030:分配的通道:delete
    RMAN-08500:通道 delete:sid=19 devtype=DISK

    第三步:刪除backupset備份集

    RMAN>change backupset 1104 delete;
    RMAN-03022:正在編譯命令:change
    RMAN-08073:已刪除備份段
    RMAN-08517:備份段 handle=D:\ORACLE\ORA81\DATABASE\02EU4DMU_1_1 recid=2 stamp=50 1364447
    RMAN-03023:正在執(zhí)行命令:partial resync
    RMAN-08003:啟動部分恢復(fù)目錄的 resync
    RMAN-08005:完成部分 resync

    注意:部分執(zhí)行刪除備份集、備份片或者維護(hù)恢復(fù)目錄的命令,需要先指定通道,如:

    RMAN>allocate channel for delete type disk;
    
    RMAN>allocate channel for maintenance type disk;

    7.在非歸檔模式下備份

    數(shù)據(jù)庫狀態(tài):

    恢復(fù)目錄:打開

    目標(biāo)數(shù)據(jù)庫:例程啟動或者數(shù)據(jù)庫加載

    恢復(fù)目錄數(shù)據(jù)庫需要打開,目標(biāo)數(shù)據(jù)庫必須啟動(或者加載)。因為目標(biāo)數(shù)據(jù)庫不在歸檔模式下,所以當(dāng)進(jìn)行備份恢復(fù)操作的時候數(shù)據(jù)庫無法打開。不可以將表空間置于熱備份模式上進(jìn)行等同于文件系統(tǒng)級的拷貝,如果在非歸檔模式,數(shù)據(jù)庫打開的狀態(tài)下不能進(jìn)行數(shù)據(jù)文件的備份。

    7.1.數(shù)據(jù)庫完全備份

    RMAN> run {
       2> # backup the complete database to disk
       3> allocate channel dev1 type disk;
       4> backup
       5> full
       6> tag full_db_backup
       7> format "/oracle/backups/db_t%t_s%s_p%p"
       8> (database);
       9> release channel dev1;
      10> }

    行#
    2: 表明該行為注釋行(#是注釋符)
    3&9: See section 15 - Channels通道定義
    5: Full backup (default if full or incremental not specified)完全備份模式(缺省模式)
    6: Meaningful string (<=30 chars)(備份集標(biāo)識,<=30個字符)
    7: Filename to use for backup pieces, including substitution variables. 備份片使用的文件名,可以包含代替變量。
    8: Indicates all files including controlfiles are to be backed up表明備份所有數(shù)據(jù)文件包括控制文件

    通過下面的命令顯示恢復(fù)目錄中記載的備份集信息:

    RMAN> list backupset of database;

    7.2.備份表空間

    RMAN> run {
       2> allocate channel dev1 type disk;
       3> backup
       4> tag tbs_users_read_only
       5> format "/oracle/backups/tbs_users_t%t_s%s"
       6> (tablespace users)
       7> }

    使用下列命令來顯示恢復(fù)目錄中該表的備份信息:

    RMAN> list backupset of tablespace users;

    假設(shè)USERS表空間在備份后被置為READ ONLY表空間,以后的全庫備份就可以不用備份該表空間,為了達(dá)到這個目的,可以在以后的備份中指定"skip readonly"。

    注意,目標(biāo)數(shù)據(jù)庫不需要一定打開,只要加載就可以,因為表空間的信息存儲在控制文件中。

    7.3.備份單獨數(shù)據(jù)文件

    RMAN> run {
       2> allocate channel dev1 type "SBT_TAPE";
       3> backup
       4> format "%d_%u"
       5> (datafile "/oracle/dbs/sysbigdb.dbf");
       6> release channel dev1;
       7> }

    行#
    2: 使用MML(media manager layer)分配磁帶驅(qū)動器,必須指定類型為SBT_TAPE;

    注意因為沒有指定標(biāo)識,所以標(biāo)識為空;

    使用下面的命令顯示恢復(fù)目錄中備份的表空間:

     RMAN> list backupset of datafile 1;

    7.4.備份數(shù)據(jù)文件

    RMAN> run {
       2> allocate channel dev1 type "SBT_TAPE";
       3> copy datafile "/oracle/dbs/temp.dbf" to "/oracle/backups/temp.dbf";
       4> release channel dev1;
       5> }

    使用下面的命令顯示恢復(fù)目錄中的文件拷貝:

    RMAN> list copy of datafile "/oracle/dbs/temp.dbf";

    拷貝數(shù)據(jù)文件和備份數(shù)據(jù)文件是不一樣的,數(shù)據(jù)文件拷貝是一個該文件的鏡像。文件的備份產(chǎn)生一個備份集。

    7.5.備份控制文件

    RMAN> run { 
       2> allocate channel dev1 type "SBT_TAPE";
       3> backup
       4> format "cf_t%t_s%s_p%p"
       5> tag cf_monday_night
       6> (current controlfile);
       7> release channel dev1;
       8> }

    注意:數(shù)據(jù)庫完全備份將自動備份控制文件。

    8.歸檔模式下的備份

    數(shù)據(jù)庫狀態(tài):

    恢復(fù)目錄:打開

    目標(biāo)數(shù)據(jù)庫:例程啟動,數(shù)據(jù)庫加載或者打開

    備份操作使用的命令與非歸檔模式下基本一樣。

    8.1. Backing up archived logs 備份歸檔日志

    下面的腳本備份歸檔日志:

    RMAN> run {
       2> allocate channel dev1 type disk;
       3> backup
       4> format "/oracle/backups/log_t%t_s%s_p%p"
       5> (archivelog all)
       6> release channel dev1;
       7> }

    下面的腳本歸檔日志從# 90 to 100:

    RMAN> run {
       2> allocate channel dev1 type disk;
       3> backup
       4> format "/oracle/backups/log_t%t_s%s_p%p"
       5> (archivelog from logseq=90 until logseq=100 thread 1);
       6> release channel dev1;
       7> }

    下面的腳本備份在24小時內(nèi)產(chǎn)生的歸檔日志,在備份完成后會自動刪除歸檔日志。如果備份失敗,歸檔日志不會被刪除。

    RMAN> run {
       2> allocate channel dev1 type disk;
       3> backup
       4> format "/oracle/backups/log_t%t_s%s_p%p"
       5> (archivelog from time "sysdate-1" all delete input);
       6> release channel dev1;
       7> }

    使用下面的命令顯示恢復(fù)目錄中的歸檔日志:

    RMAN> list backupset of archivelog all;

    注意:RMAN找到歸檔日志后會備份指定日志,如果無法找到日志,它也不會返回錯誤信息。

    8.2. Backing up the online logs 備份聯(lián)機(jī)日志

    聯(lián)機(jī)日志不能用RMAN來備份,必須先將其歸檔。

    為了實現(xiàn)這點,必須在RMAN中執(zhí)行如下SQL語句:

    RMAN> run {
       2> allocate channel dev1 type disk;
       3> sql "alter system archive log current";
       4> backup
       5> format "/oracle/backups/log_t%t_s%s_p%p"
       6> (archivelog from time "sysdate-1" all delete input);
       7> release channel dev1;
       8> }

    上面的腳本可以在執(zhí)行完一個完整的聯(lián)機(jī)數(shù)據(jù)庫備份后執(zhí)行,確保所有的重做日志可以將數(shù)據(jù)庫恢復(fù)到一個一致性的狀態(tài)。

    注意:不可以標(biāo)識歸檔日志備份集。

    9. 增量備份

    N級別增量備份備份從最近的N級別或者更小級別以來的所有更改過的數(shù)據(jù)塊內(nèi)容。增量備份分為兩種,一種是累積增量備份,一種是非累積增量備份。

    累積增量備份包括自最后一次在更低級別進(jìn)行備份以來所有改動過的數(shù)據(jù)塊。

    非累積增量備份包括自前一次在同級或者更低級別進(jìn)行備份以來改動過的數(shù)據(jù)塊。

    9.1. Level 0--增量備份策略的基礎(chǔ)

    Level 0 是增量備份策略的基礎(chǔ)--the basis of the incremental backup strategy

    RMAN> run {
       2> allocate channel dev1 type disk;
       3> backup
       4> incremental level 0
       5> filesperset 4
       6> format "/oracle/backups/sunday_level0_%t"
       7> (database);
       8> release channel dev1;
       9> }

    Line#
    4: 0級備份
    5: 定義每個backupset 的最大文件數(shù)

    使用LIST語句查看,數(shù)據(jù)庫備份集的列表顯示中, "type" 將顯示 "Incremental","LV"列將顯示"0" 。

    9.2. 使用增量備份的案例

    一個典型的增量備份案例如下:
       星期天晚上 - level 0 backup performed
       星期一晚上 - level 2 backup performed
       星期二晚上 - level 2 backup performed
       星期三晚上 - level 1 backup performed
       星期四晚上 - level 2 backup performed
       星期五晚上 - level 2 backup performed
       星期六晚上 - level 2 backup performed
       星期天晚上 - level 0 backup performed

    10. 恢復(fù)

    恢復(fù)案例如下:

    10.1. Database open,datafile deleted 數(shù)據(jù)庫打開時,文件被刪除

    數(shù)據(jù)文件在數(shù)據(jù)庫打開時被刪除。有兩種方法可以對打開的數(shù)據(jù)庫進(jìn)行恢復(fù):還原數(shù)據(jù)文件或者表空間。下面兩個實例顯示了該方法:

    (a) Datafile recovery 數(shù)據(jù)文件恢復(fù)

    RMAN> run {
       2> allocate channel dev1 type disk;
       3> sql "alter tablespace users offline immediate";
       4> restore datafile 4;
       5> recover datafile 4;
       6> sql "alter tablespace users online";
       7> release channel dev1;
       8> }

    (b) Tablespace recovery 表空間恢復(fù)

    RMAN> run {
       2> allocate channel dev1 type disk;
       3> sql "alter tablespace users offline immediate";
       4> restore tablespace users;
       5> recover tablespace users;
       6> sql "alter tablespace users online";
       7> release channel dev1;
       8> }

    注意:如果還原系統(tǒng)表空間文件,數(shù)據(jù)庫必須關(guān)閉,因為系統(tǒng)表空間不可以脫機(jī)。

    10.2. Complete restore (lost online redo) and rollforward - database closed 完全還原(丟失聯(lián)機(jī)日志)并且前滾 - 數(shù)據(jù)庫關(guān)閉

    RMAN> run {
       2> allocate channel dev1 type disk;
       3> set until logseq=105 thread=1;
       4> restore controlfile to "/oracle/dbs/ctrltargdb.ctl";
       5> replicate controlfile from "/oracle/dbs/ctrltargdb.ctl";
       6> restore database;
       7> sql "alter database mount";
       8> recover database;
       9> sql "alter database open resetlogs";
      10> release channel dev1;
      11> }

    Notes:
    "set until" 命令指明恢復(fù)到指定的日志文件。這一點在數(shù)據(jù)文件恢復(fù)時很重要,否則RMAN將試圖恢復(fù)最近的數(shù)據(jù)文件,該數(shù)據(jù)文件可能在指定的日志以前。
    "replicate controlfile" 復(fù)制還原的控制文件到INIT.ORA指定的控制文件。

    如果數(shù)據(jù)庫使用WITH RESETLOGS打開,則需要使用RESET DATABASE命令注冊改變后的數(shù)據(jù)庫。在使用RESETLOGS命令打開數(shù)據(jù)庫后強(qiáng)烈建議做一個完全的數(shù)據(jù)庫備份。

    10.3. 還原數(shù)據(jù)文件的子集,完全恢復(fù)

    RMAN> run {
       2> allocate channel dev1 type disk;
       3> sql "alter database mount";
       4> restore datafile 2;
       5> restore datafile 3;
       6> restore archivelog all;
       7> recover database;
       8> sql "alter database open";
       9> release channel dev1;
      10> }

    11. 腳本

    創(chuàng)建或者取代腳本:

    RMAN> create script alloc_disk {
       2> # Allocates one disk
       3> allocate channel dev1 type disk;
       4> setlimit channel dev1 kbytes 2097150 maxopenfiles 32 readrate 200;
       5> }
    
    RMAN> replace script rel_disk {
       2> # releases disk
       3> release channel dev1;
       5> }
    
    RMAN> replace script backup_db_full {
       2> # Performs a complete backup 
       3> execute script alloc_disk;
       4> backup
       5> .....
       6> execute script rel_disk;
       7> }

    前兩個腳本分別用來分配和回收通道。

    alloc_disk 腳本還額外指定了備份片的最大兆字節(jié)數(shù),備份時可以同時打開的輸入文件的最大數(shù)目,以及每秒鐘讀每個輸入文件的數(shù)據(jù)緩沖區(qū)的最大數(shù)目。

    第三個腳本調(diào)用先前存儲的兩個腳本進(jìn)行數(shù)據(jù)庫備份。

    運行存儲腳本的示范:

    RMAN> run {
       2> execute script backup_db_full;
       3> }

    注意:存儲的腳本必須在{ .... execute <script>; ....}命令中調(diào)用。

    12. Corruption detection

    RMAN可以備份包含損壞數(shù)據(jù)塊的數(shù)據(jù)文件,查詢視圖V$BACK_CORRUPTION和V$COPY_CORRUPTION可以獲得有關(guān)壞數(shù)據(jù)的信息。

    通過設(shè)置 set maxcorrupt 可以跳過指定個數(shù)的壞塊來避免備份失敗。

    RMAN> replace script backup_db_full {
       2> # Performs a complete backup
       3> execute script alloc_disk;
       4> set maxcorrupt for datafile 1 to 0;
       5> backup
       6> .....
       7> execute script rel_disk;
       8> }

    上面的腳本maxcorrupt for datafile 1 to 0設(shè)置為0,所以如果有錯誤數(shù)據(jù)塊在數(shù)據(jù)文件1中發(fā)現(xiàn),上面的腳本執(zhí)行就會失敗。

    13. 通道

    一個通道是RMAN和目標(biāo)數(shù)據(jù)庫之間的一個連接,"allocate channel"命令在目標(biāo)數(shù)據(jù)庫啟動一個服務(wù)器進(jìn)程,同時必須定義服務(wù)器進(jìn)程執(zhí)行備份或者恢復(fù)操作使用的I/O類型

    通道控制命令可以用來:
       控制RMAN使用的O/S資源
       影響并行度
       指定I/O帶寬的限制值(設(shè)置limit read rate參數(shù))
       定義備份片大小的限制(設(shè)置limit kbytes)
       指定當(dāng)前打開文件的限制值(設(shè)置limit maxopenfiles)

    14. Report & list commands

    14.1. List

    list命令查詢恢復(fù)目錄并且產(chǎn)生格式化的查詢內(nèi)容:

     RMAN> list backupset of datafile 1;

    Key File Type LV Completion_time Ckp SCN Ckp Time
    ------- ---- ------------ -- --------------- ---------- --------
    165 1  Full Oct 03 11:24 32022 Oct 03 11:24
    208 1  Full Oct 24 14:27 52059 Oct 24 14:26
    219 1  Full Oct 24 14:31 52061 Oct 24 14:31
    << other entries here >>

    RMAN> list backupset of archivelog all;

    Key Thrd Seq Completion time
    ------- ---- ------- ---------------
    179 1 94 Oct 03 11:26
    179 1 95 Oct 03 11:26
    << other entries here >>

    14.2. Report

    REPORT命令同樣可以查詢恢復(fù)目錄,但是REPORT命令語法可以構(gòu)建獲得更為有用的信息的指令,REPORT命令輸出可以保存到消息日志文件中,但是必須在連接恢復(fù)目錄時指定MSGLOG或者LOG選項。

    可以列出所有數(shù)據(jù)庫中不能恢復(fù)的文件列表:

     RMAN> report unrecoverable database;

    顯示全部數(shù)據(jù)文件:

    RMAN> report schema;
    RMAN-03022:正在編譯命令:report 數(shù)據(jù)庫模式報表
    文件    千字節(jié)     表空間    RB     segs 名稱 
    1       121472     SYSTEM    YES    D:\ORACLE\ORADATA\HIS\SYSTEM01.DBF 
    2       327680     RBS       YES    D:\ORACLE\ORADATA\HIS\RBS01.DBF 
    3       110592     USERS     NO     D:\ORACLE\ORADATA\HIS\USERS01.DBF 
    4       73728      TEMP      NO     D:\ORACLE\ORADATA\HIS\TEMP01.DBF 
    5       12288      TOOLS     NO     D:\ORACLE\ORADATA\HIS\TOOLS01.DBF 
    6       59392      INDX      NO     D:\ORACLE\ORADATA\HIS\INDX01.DBF 
    

    15. 小提示

    經(jīng)常同步恢復(fù)目錄

    確認(rèn)刪除不需要的歸檔日志

    備份策略簡單原則

    文章來源:天極網(wǎng)

    主站蜘蛛池模板: 久久亚洲美女精品国产精品| 中文字幕亚洲码在线| 免费看h片的网站| 国产精品久久久久久亚洲小说| 亚洲伊人久久精品影院| 国产精品1024永久免费视频| 特级无码毛片免费视频| 亚洲av一综合av一区| 免费观看美女裸体网站| 免费精品久久天干天干| 中国亚洲呦女专区| 亚洲春色在线视频| 永久黄网站色视频免费直播| 色猫咪免费人成网站在线观看 | 亚洲人成电影网站免费| 国内精品99亚洲免费高清| 18禁无遮挡无码网站免费| 91精品全国免费观看青青| 亚洲精品一卡2卡3卡四卡乱码| 亚洲av无码一区二区乱子伦as| 全亚洲最新黄色特级网站 | 亚洲免费视频一区二区三区| 亚洲日本va在线观看| 亚洲日产无码中文字幕| 女性自慰aⅴ片高清免费| 国产精品免费大片| 免费无遮挡无码视频在线观看| 亚洲AV无码专区在线亚| 国产精品久久久亚洲| 免费人妻av无码专区| 欧美好看的免费电影在线观看| 久久国产精品免费专区| 九九九精品视频免费| 亚洲成AV人影片在线观看| 亚洲国产精品成人精品软件| 久久精品国产亚洲综合色| 亚洲一级特黄大片无码毛片| 国产自产拍精品视频免费看| 成人免费a级毛片| 香蕉97超级碰碰碰免费公| 毛片在线全部免费观看|