RMAN 在 Oracle 12c 的增強功能 (文件 ID 2017199.1)

mosdoc發表於2016-12-14

文件內容


用途

適用範圍

詳細資訊
  支援容器和可插拔資料庫
  SYSBACKUP 許可權
  SQL 介面改進
  多截面備份改進
  Active 資料庫複製改進
  RMAN 複製的 NOOPEN 選項
  備份恢復結合第三方快照技術
  跨平臺備份恢復改進
  從 RMAN 備份中恢復表和表分割槽
  透過網路還原和恢復
  RMAN 和統一審計:

參考


適用於:

Oracle Database - Enterprise Edition - 版本 12.1.0.1 和更高版本
本文件所含資訊適用於所有平臺

用途

 本文件提供 RMAN 在 Oracle 12c 的可用的增強功能資訊。

適用範圍

 本文適用於有很強 RMAN 知識能力的 DBA。

詳細資訊

  • 支援容器和可插拔資料庫

RMAN 在 12c 對可插拔資料庫環境提供了全方位的備份和恢復支援。你可以使用全部或者增量備份的方式對整個容器資料庫(CDB)備份。也可以對一個、多個可插拔資料庫(PDB)備份。 

下面的文件中詳細解釋了該特性:
RMAN Pluggable Database Point in Time Recovery (Note 1521075.1)
RMAN Pluggable Database Backup and Recovery (Note 1521005.1) 
  • SYSBACKUP 許可權

在 12c,Oracle 透過引入特定任務的管理責任支援分離的資料庫管理(DBA)職責。備份和恢復的這部分管理許可權叫做 SYSBACKUP。這允許實施備份恢復任務但不能訪問資料表的內容(SYSDBA 適合訪問表資料的情況)。這個許可權包含備份和恢復的許可(例如可以連線關閉的資料庫),不包含以 SELECT ANY TABLE 的許可權訪問資料。SYSBACKUP 許可權是在安裝 Oracle 資料庫時自動安裝的。使用之前 SYSBACKUP 使用者必須解鎖和賦權。如果使用作業系統認證,那麼在透過 orapwd 重建密碼檔案時必須新增 SYSBACKUP=Y 語句。SYSDBA 仍然是預設的連線,如果在連線串中既沒有指定 AS SYSBACKUP 也沒有指定 AS SYSDBA,那麼將會使用 AS SYSDBA 建立連線。SYSBACKUP 許可權是安裝 Oracle 資料庫時自動建立的。

SYSBACKUP 使用者被賦予以下許可權:

SQL> select privilege from dba_sys_privs where grantee='SYSBACKUP';

PRIVILEGE
----------------------------------------
ALTER SYSTEM
AUDIT ANY
SELECT ANY TRANSACTION
SELECT ANY DICTIONARY
RESUMABLE
CREATE ANY DIRECTORY
UNLIMITED TABLESPACE
ALTER TABLESPACE
ALTER SESSION
ALTER DATABASE
CREATE ANY TABLE
DROP TABLESPACE
CREATE ANY CLUSTER
  • SQL 介面改進

在 12c,現在你在 RMAN 命令列視窗中執行 SQL 和 PL/SQL 儲存過程時不需要字首 SQL 命令了。這包括 select 語句也包括 desc 命令,它提供和 sql*plus 中的 desc 命令一樣的功能。要訪問特定 schema 下的表你需要這個物件上的查詢許可權。SYSBACKUP 許可權沒有賦予訪問使用者表或者檢視的許可權,這些許可權必須手工賦予或者以 SYSDBA 的方式連線。

Recovery Manager: Release 12.1.0.1.0 - Production on Wed Feb 27 08:02:54 2013
Copyright (c) 1982, 2013, Oracle and/or its affiliates.  All rights reserved.

RMAN> connect target /

connected to target database: ORACLE (DBID=1558452677)

RMAN> alter session set nls_date_format = 'dd-mon-yyyy hh24:mi:ss';

using target database control file instead of recovery catalog

Statement processed

RMAN> select sysdate from dual;

SYSDATE
--------------------
27-feb-2013 08:03:25

RMAN> desc v$logfile;

 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 GROUP#                                             NUMBER
 STATUS                                             VARCHAR2(7)
 TYPE                                               VARCHAR2(7)
 MEMBER                                             VARCHAR2(513)
 IS_RECOVERY_DEST_FILE                              VARCHAR2(3)
 CON_ID                                             NUMBER
  • 多截面備份改進

最小的 RMAN 備份單元是一整個資料檔案,隨著資料檔案的增加,11g 新增了多截面備份功能。 透過這個功能 RMAN 可以透過 backup 和 restore 將一個大的檔案備份成多個部分。備份管理員為每個讀的程式(通道)選擇一個大小(使用 SECTION SIZE 關鍵字)允許一個獨立的資料庫以並行的方式備份。在一個備份集中每個程式(通道)建立一個單獨的檔案。

在 12c,多截面備份適合所有的備份型別,包括 backupsets(11g 新新增的功能),映象複製和增量備份。這個特性可以減少‘非備份’使用的完成時間,例如複製一個可傳輸表空間過程的檔案或者建立一個克隆的 active 資料庫的複製。

這個新功能要求相容性設定為 12.0 並且只能夠用於資料檔案。例如它不能用於備份控制檔案。如果選擇的截面大小大於這個檔案那麼 rman 將不會對這個檔案使用多截面備份。同樣地,如果選擇的截面大小太小以至於會有256個部分生成,RMAN 將增加截面大小到一個產生256個部分的合適的值。注意。根據語法的不同你可以在一個相同的備份工作中對不同的檔案選擇不同的截面大小。

Recovery Manager: Release 12.1.0.1.0 - Production on Tue Mar 5 06:03:19 2013
Copyright (c) 1982, 2013, Oracle and/or its affiliates.  All rights reserved.

connected to target database: ORACLE_C (DBID=2144146745)

RMAN> backup incremental level 1 section size 300M database;
Starting backup at 05-MAR-13
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=365 device type=DISK
allocated channel: ORA_DISK_2
channel ORA_DISK_2: SID=16 device type=DISK
allocated channel: ORA_DISK_3
channel ORA_DISK_3: SID=133 device type=DISK
allocated channel: ORA_DISK_4
channel ORA_DISK_4: SID=254 device type=DISK
channel ORA_DISK_1: starting incremental level 1 datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00003 name=C:\APP\ORACLE\ORADATA\ORACLE_CDB\DATAFILE\O1_MF_SYSAUX_8LYWMRBC_.DBF
backing up blocks 1 through 38400
channel ORA_DISK_1: starting piece 1 at 05-MAR-13
channel ORA_DISK_2: starting incremental level 1 datafile backup set
channel ORA_DISK_2: specifying datafile(s) in backup set
input datafile file number=00005 name=C:\APP\ORACLE\ORADATA\ORACLE_CDB\DATAFILE\O1_MF_UNDOTBS1_8LYWR7B5_.DBF
backing up blocks 1 through 38400
channel ORA_DISK_2: starting piece 1 at 05-MAR-13
channel ORA_DISK_3: starting incremental level 1 datafile backup set
channel ORA_DISK_3: specifying datafile(s) in backup set
input datafile file number=00001 name=C:\APP\ORACLE\ORADATA\ORACLE_CDB\DATAFILE\O1_MF_SYSTEM_8LYWOT2Q_.DBF
backing up blocks 1 through 38400
channel ORA_DISK_3: starting piece 1 at 05-MAR-13
channel ORA_DISK_4: starting incremental level 1 datafile backup set
channel ORA_DISK_4: specifying datafile(s) in backup set
input datafile file number=00004 name=C:\APP\ORACLE\ORADATA\ORACLE_CDB\DATAFILE\O1_MF_SYSAUX_8LYX0ZLS_.DBF
skipping datafile 00004 because it has not changed
channel ORA_DISK_4: backup cancelled because all files were skipped
channel ORA_DISK_4: starting incremental level 1 datafile backup set
channel ORA_DISK_4: specifying datafile(s) in backup set
input datafile file number=00003 name=C:\APP\ORACLE\ORADATA\ORACLE_CDB\DATAFILE\O1_MF_SYSAUX_8LYWMRBC_.DBF
backing up blocks 38401 through 76800
channel ORA_DISK_4: starting piece 2 at 05-MAR-13
channel ORA_DISK_2: finished piece 1 at 05-MAR-13
piece handle=C:\APP\ORACLE\FAST_RECOVERY_AREA\ORACLE_CDB\BACKUPSET\2013_03_05\O1_MF_NNND1_TAG20130305T060331_8MCYSO3X_.BKP tag=TAG20130305T060331 comment=NONE
channel ORA_DISK_2: backup set complete, elapsed time: 00:00:09
channel ORA_DISK_2: starting incremental level 1 datafile backup set
channel ORA_DISK_2: specifying datafile(s) in backup set
input datafile file number=00003 name=C:\APP\ORACLE\ORADATA\ORACLE_CDB\DATAFILE\O1_MF_SYSAUX_8LYWMRBC_.DBF
backing up blocks 76801 through 103680
channel ORA_DISK_2: starting piece 3 at 05-MAR-13
channel ORA_DISK_3: finished piece 1 at 05-MAR-13
piece handle=C:\APP\ORACLE\FAST_RECOVERY_AREA\ORACLE_CDB\BACKUPSET\2013_03_05\O1_MF_NNND1_TAG20130305T060331_8MCYSOC7_.BKP tag=TAG20130305T060331 comment=NONE
channel ORA_DISK_3: backup set complete, elapsed time: 00:00:13
channel ORA_DISK_3: starting incremental level 1 datafile backup set
channel ORA_DISK_3: specifying datafile(s) in backup set
input datafile file number=00005 name=C:\APP\ORACLE\ORADATA\ORACLE_CDB\DATAFILE\O1_MF_UNDOTBS1_8LYWR7B5_.DBF
backing up blocks 38401 through 76800
channel ORA_DISK_3: starting piece 2 at 05-MAR-13
channel ORA_DISK_1: finished piece 1 at 05-MAR-13
piece handle=C:\APP\ORACLE\FAST_RECOVERY_AREA\ORACLE_CDB\BACKUPSET\2013_03_05\O1_MF_NNND1_TAG20130305T060331_8MCYSNVV_.BKP tag=TAG20130305T060331 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:16
channel ORA_DISK_1: starting incremental level 1 datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00005 name=C:\APP\ORACLE\ORADATA\ORACLE_CDB\DATAFILE\O1_MF_UNDOTBS1_8LYWR7B5_.DBF
backing up blocks 76801 through 103680
channel ORA_DISK_1: starting piece 3 at 05-MAR-13
channel ORA_DISK_3: finished piece 2 at 05-MAR-13
piece handle=C:\APP\ORACLE\FAST_RECOVERY_AREA\ORACLE_CDB\BACKUPSET\2013_03_05\O1_MF_NNND1_TAG20130305T060331_8MCYT36N_.BKP tag=TAG20130305T060331 comment=NONE
channel ORA_DISK_3: backup set complete, elapsed time: 00:00:05
channel ORA_DISK_3: starting incremental level 1 datafile backup set
channel ORA_DISK_3: specifying datafile(s) in backup set
input datafile file number=00001 name=C:\APP\ORACLE\ORADATA\ORACLE_CDB\DATAFILE\O1_MF_SYSTEM_8LYWOT2Q_.DBF
backing up blocks 38401 through 76800
channel ORA_DISK_3: starting piece 2 at 05-MAR-13
channel ORA_DISK_1: finished piece 3 at 05-MAR-13
piece handle=C:\APP\ORACLE\FAST_RECOVERY_AREA\ORACLE_CDB\BACKUPSET\2013_03_05\O1_MF_NNND1_TAG20130305T060331_8MCYT54L_.BKP tag=TAG20130305T060331 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:06
channel ORA_DISK_1: starting incremental level 1 datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00001 name=C:\APP\ORACLE\ORADATA\ORACLE_CDB\DATAFILE\O1_MF_SYSTEM_8LYWOT2Q_.DBF
backing up blocks 76801 through 98560
channel ORA_DISK_1: starting piece 3 at 05-MAR-13
channel ORA_DISK_2: finished piece 3 at 05-MAR-13
piece handle=C:\APP\ORACLE\FAST_RECOVERY_AREA\ORACLE_CDB\BACKUPSET\2013_03_05\O1_MF_NNND1_TAG20130305T060331_8MCYT2XM_.BKP tag=TAG20130305T060331 comment=NONE
channel ORA_DISK_2: backup set complete, elapsed time: 00:00:13
............
  • Active 資料庫複製改進

Active 複製選項在 RMAN 11g 被應用了,這個功能使用一個“推”的程式透過網路從目標(源)向輔助(目的地)傳送整個資料檔案的複製。目標通道做了推動資料檔案從目標資料庫跨越網路到達輔助例項的工作。

在 12c,RMAN 預設使用一個“拉”的(或者 restore)程式為 active 複製使用備份集.不同於資料檔案的映象複製,rman 以備份集的方式傳送資料檔案資料到輔助例項,從這個例項還原資料檔案.之前存在的備份不能使用這種操作,反之,rman 將在源端建立一個新的備份集並且直接傳輸(透過 Sql*net)到輔助例項.透過使用備份集,使得壓縮,截面大小和加密變成可用的選項並且可以被新增到 duplicate 命令。 

在 12c 為了並行化的 active duplicate 的執行,必須分配多個輔助通道而不是使用像 11g 那樣的目標通道。

這個新的功能透過分出 active duplication 過程中資料傳輸操作到輔助伺服器,減少了對源資料庫的衝擊。透過使用壓縮或者多截面備份的方式展開還原工作負載可以縮短複製大檔案的時間。 

  • RMAN 複製的 NOOPEN 選項

在 12c,一旦複製命令完成時,你現在可以指定不開啟輔助資料庫。透過這個選項 rman 將完成它的任務保留克隆資料庫處於 MOUNT 狀態,隨時準備開啟。在之前的版本,輔助資料庫會在最後階段被 RMAN 自動開啟。除了其他的潛在用處外 NOOPEN 選項允許你做:

  • 配置快速增量備份或者刪除資料庫設定。
  • 修改塊改變跟蹤檔名稱或者地址。
  • 透過開啟資料庫到 UPGRADE 模式升級資料庫,執行適當的升級指令碼。
  • 備份恢復結合第三方快照技術

在之前的 RMAN 版本,為了實現透過第三方快照建立一個備份,你不得不將資料庫設定為 backup 模式(begin backup)來建立一個儲存快照。在 12c,這個要求已經被取消,只要下面所有的條件都被滿足:

    1. 如果資料庫 down 掉的,如果做快照需要資料檔案的狀態一致;
    2. 每個資料檔案的寫順序都保留在一個快照檔案中;
    3. 快照檔案裡儲存了快照結束的時間點;

 在 12c,你可以使用新的關鍵字 SNAPSHOT TIME 和 RECOVER 命令去恢復一個沒有資料檔案在備份模式的快照。例如,你現在可以:

    •  使用特定的快照恢復資料庫:
RMAN>  recover database UNTIL TIME ‘02/26/2013 11:00:00’
SNAPSHOT TIME ‘02/26/2013 10:00:00’;
    •   使用歸檔日誌實施一個特定的恢復:
RMAN>  recover database until cancel
SNAPSHOT TIME ‘02/26/2013 10:00:00’;
  • 跨平臺備份恢復改進

RMAN 允許你跨平臺傳輸資料庫,資料檔案,表空間。這包括跨平臺傳輸不同位元組碼的表空間。在 12c 之前,所有的跨平臺資料傳輸需要使用映象複製。在 12c 你現在可以使用備份集做跨平臺傳輸資料。同時,Oracle 12c 也執行使用不一致的備份,即備份是一個表空間在 READ WRITE 模式下建立的。之前的版本要求備份在 READ ONLY 模式下。

由於使用了備份集,你可以選擇壓縮和多截面備份的選項,這可以減少整個的傳輸時間。當選擇一個資料庫傳輸策略時,你需要考慮平臺的位元組碼格式和資料庫的開啟模式。例如:

    • 資料庫級別的傳輸需要相同的位元組碼(在源端和目標端)和源端的只讀(READ ONLY)模式(這可能不會令人滿意)。
    • 表空間和備份集可以跨平臺傳輸無論位元組碼相同或者不同,源端資料庫也可以保持線上讀寫模式。在這種情況下大部分的工作是在源端資料庫在讀寫模式下完成的。一個最終的步驟(一個小的增量備份)是在資料庫只讀的模式下完成的。這是必須的,因此資料庫可以被開啟到一致性的狀態。

在 12c,rman 提供下面的選項結合備份命令:

    • FOR TRANSPORT: 這個選項建立一個可以被傳輸到任何目標端的備份集。如果目標端使用的位元組碼不同於源端,位元組碼的轉換是在目標端資料庫實施的。
    • TO PLATFORM:這個選項導致大小碼轉換在源端執行,並且只能用於那個支援的平臺。
    • DATAPUMP:這指定當實施跨平臺轉換時一個資料泵匯出檔案會被建立。
  • 從 RMAN 備份中恢復表和表分割槽

在 RMAN 12c,你現在可以隨時恢復一個特定的表或者表分割槽而不影響這個資料庫或者表空間的其他物件。這包括恢復一個清空(truncated)或者刪除掉的表。RMAN 12c 將對需要的檔案在一個單獨的磁碟路徑建立一個輔助例項。然後它將建立一個資料泵匯出檔案包含需要恢復的物件。可以使用不匯出表的選項(NOTABLEIMPORT)或者可選擇的重新命名需要恢復的表或者表分割槽使用 REMAP TABLE 或 REMAP TABLESPACE 字句.

可用的選項包括:

    •         小批次的表
    •         表不在自包含的表空間
    •         Purged 的表
    •         表資料已經越過了可用的 undo
    •         表已經有 DDL 結構改變
下面的文章詳解解釋了這個特性:
RMAN RECOVER TABLE Feature New to Oracle Database 12c (Note 1521524.1)
  • 透過網路還原和恢復

在 RMAN12c,你可以透過網路還原和恢復檔案。由於有備份集的存在,我們可以使用多份的備份來進行備份,加密和壓縮,透過並行的方式提升備份和還原的效能。

這個選項對包含 standby 資料庫的場景非常有用。你可以:

    • 還原或者恢復丟失的資料檔案時,可以透過網路連線到一個資料庫(standby/primary)這個資料庫包含這個可用的檔案。
    • 拿掉主庫,透過增量備份恢復 standby 資料庫來前滾 standby。
  • RMAN 和統一審計:

在 12c Oracle,UNIFIED_AUDIT_TRAIL 資料字典檢視有一系列的欄位(以 RMAN_  字首),這些欄位自動記錄 RMAN 相關的等待事件。然而為了查詢檢視 UNIFIED_AUDIT_TRAIL 檢視這些等待事件你必須有 AUDIT_ADMIN 和 AUDIT_VIEWER 角色。

參考

NOTE:1521524.1 - RMAN RECOVER TABLE Feature New to Oracle Database 12c
NOTE:1521075.1 - RMAN Pluggable Database Point in Time Recovery
NOTE:1521005.1 - RMAN Pluggable Database Backup and Recovery in a Multitenant Environment
NOTE:1115423.1 - Rman Enhancements In Oracle 11g.

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

相關文章