2007年10月9日

10g備份跟還原相關(2/3)

 10g rman提供的優點
1、單一介面處理全部的備份跟還原流程。

2、加強增量備份特性以縮短份、還原時間

3、提供image 備份的方式縮短restore的時間

4、提供增量備份去clone出db

5、提供壓縮備份檔的選項


flash reocvery area
簡介:
1、9i中就已有引入了,但功能並不強,在10g中加強了很多功能,是一個可以深入了解的技術。flash recovery是一個功能,並不一定需要開起。

2、主要的用途:企業大多數會把備份檔放在tape裏,當database掛點時,需要備份檔案進行修覆時需要從 tape裏的檔案解到hd上再進行後續的動作,而oracle為了要縮短downtime,所以才提出這個flashback的觀念。

3、因為這個空間是有上限值的(預設是2G),當空間沒有定時用RMAN去清除時,當用滿時又會出現另一個管理上的問題,所以是否要採用全看是否有需要用的到,如沒有的話就把他關畢,以免 flashback 空間用滿時可能會讓database 無法開起或產生另外的問題發生。

特色說明:
1、他是佔有一定的hd空間,空間裏存放著有關recovery相關檔案,包含了controlfile file backups、archive logs、flashback logs 、database backups

2、他可是被定義成一個目錄(directory)、檔案系統(file system)、asm 檔案格式(asm disk group)

3、這個空間可被多個database指定,因為目錄的檔名都由oracle負責產生,所以不會發生相同檔名的情況

4、archived log file: flash recovery 目錄是定義在 LOG_ARCHIVE_DEST_10 參數。當然了,你也可另外定義在LOG_ARCHIVE_DEST_n這。不過當你沒有特別指定archive log file存放的地方的話,那預設值都是放在flash recovery空間裏。

5、當執行 RMAN 備份database後,controlfile將會自動備份一份在flash recovery空間裏(在有開起 flash recovery的功能)。

6、在RMAN中執行 BACKUP AS COPY 沒有指定存放地方的話,將會存放在flash recovery空間中(在有開起 flash recovery的功能)。

7、在RMAN中執行備份時沒有指定存放地方的話,將會把備份的檔案存放flash recovery空間中(在有開起 flash recovery的功能)。

8、DB_RECOVERY_FILE_DEST_SIZE設定大小、DB_RECOVERY_FILE_DEST 設定路徑。在rac的環境中,每個node上面的設定都必需相同,這二個參數可以使用alter 動態的改變


Flash Recovery Area Space Management
1、他使用的空間最多到DB_RECOVERY_FILE_DEST_SIZE 設定的大小,但如到達最大空間時,並不會自動幫我們刪除較舊的資料

2、當使用空間超過 85%之後會在alter檔裏寫上警告訊習,當超過 97%會寫入嚴重警告訊習。

3、當flash recovery area裏的檔案有新增或刪除並不會寫入任何訊習到 alter 檔中

4、sql>select object_type, message_type,message_level,reason,suggested_action from dba_outstanding_alerts;

5、刪除flash recovery area空間可手動執行 RMAN指定要被刪除的檔案,不然要在 RMAN中設定保留時間(retention policy),再執行delete obslete

Backing Up Data File to a Flash Recovery Area
1、當你設定了 DB_RECOVERY_FILE_DEST 後,預設 RMAN 備份datafile的地方是放於flash recovery area中,如沒有設定備份的檔名的話
oracle會自動幫你帶上的,因為這時 RMAN 自動使用 Oracle Managed File(OMF)的功能,帶上檔名的。


查flash recovery area使用空間
SQL> select name,space_limit AS size,
space_used AS used,
space_reclaimable AS reclaimable
number_of_files AS files
from v$recovery_file_dest;

SQL>select file_type,
percent_space_used AS used,
percent_space_reclaimable AS reclaimable
number_of_files AS number
from v$flash_recovery_area_usage;


如何得知這個 object是否可以備份在flash recovery area裏
1、oracle在這些table裏增加了一個欄位 IS_RECOVERY_DEST_FILE

2、值為YES/NO

3、table有 v$controlfile、v$logfile、v$archived_log、v$datafile_copy、v$backup_piece

4、如要看備份的檔案有多大可查看v$backup_piece、RC_BACKUP_PIECE的BYTES

10g官方作法
1、使用OMF(Oracle Managed File)進行管理oracle,因為這樣子在操作tablespace時可以不必管理檔案放那裏,刪除tablespace時oracle也會自動把對應的實体檔案刪除,不過要達到這樣的功能需要設定 DB_CREATE_FILE_DEST 和 DB_CREATE_ONLINE_LOG_DEST_n

2、對於recovery這部份,也有相對應的參數可以使用 DB_RECOVERY_FILE_DEST_SIZE 和 DB_RECOVERY_FILE_DEST

ps:但多數的人不習慣檔案名字是亂數組成的,所以oracle又指供指令更改檔名。這個功能實際上真的用途是於RAC的架構中,因為RAC的檔案是放ASM、RAW中,本來就無法直接在os中查看的到,所以這時檔名長的怎樣跟我們無關。

可利用到OMF(Oracle Managed File)的指令有
1、ALTER database
  • 增加 logfile :假如 DB_CREATE_ONLINE_LOG_n沒有設定的話,那預設會建立在flash recovery area
  • 增加 standby logfile:假如 DB_CREATE_ONLINE_LOG_n沒有設定的話,那預設會建立在flash recovery area
  • 刪除 logfile : OMF建立的 online redo log file會被刪除
  • 修改 file name : OMF建立的檔案名字被更改名字。

2、CREATE controlfile :如有設定 CONTROL_FILES的話,將會手動輸入的為主,不然就會以後面說的情況為主



3、CREATE database
  • control_files沒有手動指定,但DB_CREATE_FILE_DEST、DB_CREATE_ONLINE_LOG_DEST_n、DB_RECOVERY_FILE_DEST其中有一個被設定,則control file將被建置於設定值指定的目錄中
  • 假如DB_CREATE_ONLINE_LOG_DEST_n是多個被設定的話,則OMF會在每個指定的目錄中建立control file
    (flash recovery area是無法建立control file的)
  • 假如DB_CREATE_FILE_DEST跟DB_RECOVERY_FILE_DEST是被定義,而 DB_CREATE_ONLINE_LOG_DEST_n是沒有被定義的話,那control file會建立在DB_CREATE_FILE_DEST跟DB_RECOVERY_FILE_DEST裏,但DB_CREATE_FILE_DEST是主要的control file
  • 假如DB_CREATE_FILE_DEST被定義,而DB_CREATE_ONLINE_LOG_DEST_n或DB_CREATE_FILE_DEST是沒有被設定的話,那OMF control file是放DB_CREATE_FILE_DEST
  • 假如DB_CREATE_ONLINE_LOG_DEST_n、DB_CREATE_FILE_DEST、DB_RECOVERY_FILE_DEST都沒有被定義的話,那就會放系統設定的地方,預設值為$ORACLE_HOME/dbs/xxxxx

4、redo log (使用OMF)
  • 假如DB_CREATE_ONLINE_LOG_DEST_n有多個被設定,則online redo log file建立在每個指定的目錄中。注意他的上限將被MAXLOGMEMBERS所限制(online redo logs是沒辦法建立在flash recovery area中)
  • 假如DB_CREATE_FILE_DEST、DB_RECOVERY_FILE_DEST是被定義,而 DB_CREATE_ONLINE_LOG_DEST_n沒有被定義,而redo log是會建立於DB_CREATE_FILE_DEST、DB_RECOVERY_FILE_DEST中。但相同受 MAXLOGMEMBERS 限制,而DB_CREATE_FILE_DEST為初始檔案的存放目錄
  • 假如DB_RECOVERY_FILE_DEST被定義,而DB_CREATE_FILE_DEST或DB_CREATE_ONLINE_LOG_DEST_n沒有定義,那會建立在DB_RECOVERY_FILE_DEST中
  • 如DB_CREATE_ONLINE_LOG_DEST_n、DB_CREATE_FILE_DEST、DB_RECOVERY_FILE_DEST都沒有被定義的話,那將會以系統預設值為主($ORACLE_HOME/dbs/xxxxx)


Fast Incremental Backup
1、優化增量備份 :跟9i不同之處是在於10g是有一個CTWR (change tracking writer)負責記錄上次備份之後變動的block,而不必像9i做增量備份時需要全掃描整個                            datafile。

2、當使用Fast Incremental Backup功能時,oracle會自動把每個datafile的block變動存放在一個檔案中,這個檔案我們稱為 change tracking file。這個檔當在rman的備份時會自動帶入,不需要人力特別的處理

3、change tracking file最小是10m為單一檔案,fast incremental backup 這個功能並不是預設開起的。如有採用增量備份的方案的話,最好打開這個功能,對於備份的效能能有很大的幫忙。

4、使用的指令為 ALTER DATABASE {enable | disable} block change tracking [USING FILE '.........']

5、假如DB_CREATE_FILE_DEST有設定的話跟採用OMF的話,那就不必設定檔案的存放地方

6、修改路徑的話 ALTER database rename file '............' to '............'

7、select filename,status,bytes from v$block_change_tracking;
select file#,avg(datafile_blocks),
avg (blocks_read),
avg(blocks_read/datafile_blocks) * 100 AS PCT_READ_FOR_BACKUP,
avg(blocks)
from v$backup_datafile
where used_change_tracking = 'YES'
and incremental_level >0
group by file#;
ps:單位為 bytes ,由這二個view可以得知這次備份的量,時間內增加的資料為多少

8、10g支援 image copy的增量備份方式

9、recover copy of datafile 等同為 recover datafilecopy

10、RMAN > backup incremental from scn 789123 database;
  • 跟一般的份備相同,但只會備份到等於或最接近scn值的那個點
  • 備份的資訊不會記錄在 catalog db中
  • 如果配合 plus archive 的話,archive log file 也不會記錄在catalog db中
  • 利用上面的特性,主要是用於同步 duplicate database跟 source database

1、查看現在的狀態
SQL>select status from v$block_change_tracking;
2、開起指令
SQL>alter database enable block change tracking;
3、設定check track file(如使用OMF管理db檔案的話,可以不必設定file的路徑)
SQL>alter database enable block change tracking using file '/u01/oracle/testdb/rman_change_track_file.dbf' ;
4、關畢指令
SQL>alter database  disable block change tracking;

    RMAN Backup Command Changes
    1、create image copies (database 、tablespaces 、data files、archived logs)
    RMAN> backup as copy database;

    2、create backup sets
    RMAN> backup as backupset database;

    3、set a default disk backuk type
    RMAN> configure device type disk backup type to copy;

    catalog支援手動新增、淢少備份的記錄
    1、controlfile裏記錄著備份的全部資訊,當失去controlfile後,我們是可以手動重建 controlfile沒錯,但手動重建完後的controlfile是沒有相關備份資料,這時我們可以利用這個功能把之前相關的備份資訊再倒回去現在新的controlfile裏。(實作等下週的分享)

    Fast Recovery
    RMAN>switch database to copy;
    1、restore database: restore執行時是要從backup中讀寫出來
    2、switch database: 固名思意,就只是一個交換的動作,他會改寫controlfile裏有關datafile的位置
    限制:必需使用flash recovery area跟OMF,並且因為當swith過去後,原本備份的地方已存放現在的datafile了,所以將無法進行備份的動作了。所switch後要盡快處理。
    (實作等下次的分享)

    Recovering Data Files Not Backed up
    1、主要是利用redo log file來回推的,如是noarchivelog mode的話,只要redo log file裏的資料還沒有被覆寫的話,那也可以recovery的回來。

    支援Drop Database
    RMAN> Drop database [ including backups];

    1、如刪除時要連備份的檔案一起刪除的話,可加上including backups;

    2、login target database必需要有sysdba的權限

    3、database必需要在mount或是在restrict模式

    4、drop database 動作可由 SQL*Plus 、DBCA、RMAN達到。假如你手動刪除database或用 dbca, 你必需要手動刪除記錄在catalog db裏有關被刪除db的資料(RMAN>unregister database)。上面的動作只有刪除data file 、control file、spfile(如有使用的話),但並不會刪除archive log file跟backup 出來的資料,這個需要自已刪除。當執行drop database後,將無法recovery。

    往下支援由os角色來進行備份datafile的方法
    1、提供簡短備份全部的database file的指令,並不需要針對每個tablespace進行指令操作
    SQL>alter database begin backup;

    2、database必需要在archivelog mode

    3、執行時必需是在mount或open

    4、當執行了 begin backup後到end backup這段的時間內無法由rman進行備份,因為rman是要求一致性的資料面才能備份,並且不能執行一般的停機shutdown normal。

    5、當執行
    SQL>alter database end backup;
    發生了ORA-01260: warning: END BACKUP succeeded but some files found not to be in backup mode
    可採用這種方式處理
    SQL>alter tablespace 問題的tablespace  read only;
    SQL>alter database begin backup;
    SQL>alter database end backup;

    RMAN改變的地方
    1、當rman做完recovery後,10g會自動建立temp tablespace。而9i中並不會自已建立起來,而需要自已手動建立

    2、當rman備份時,有指定多個channel的話,當其中一個channel終斷時,oracle會盡可能利用剩下的channel完成備份的動作,相關的訊習會記錄在 V$RMAN_OUTPUT

    3、在RAC中,再也不必針對每個instance下達configure channel connent,而可以設定configure device type disk parallelism,其他的事情RMAN會自動分配 channel 給每個instance使用 

    4、可存放script在 RMAN 中方便以後使用

    Posted by my_work at 樂多Roodo! │09:04 │回應(0)引用(0)DB
    樂多分類:網路/3C 共同主題:Oracle 工具:編輯本文
    Ads by Roodo! 

    引用URL

    http://cgi.blog.roodo.com/trackback/4270911