1.主要內容:
(1)描述11g中RMAN的新特性;
(2)duplicate數據庫可以直接通過網絡傳輸,不需要有備份;
(3)可以把大文件分段備份;
(4)創建長期保存的歸檔備份;
(5)管理recovery catalog;
(6)描述virtual private catalogs的使用;
2.使用SET NEWNAME子句:
(1)新增加的SET NEWNAME子句可以爲數據庫/表空間內所有的文件指定一個默認的名稱格式;
(2)可以用於DUPLICATE,RESTORE和SWITCH命令的RUN塊中;
(3)SET NEWNAME子句可以使用一條命令設置所有文件名稱,而不需要爲每個文件分別設定名;
(4)語法元素:
%b:指定文件的文件名,用在文件名不變,只修改文件目錄的情況;
%f:指定數據文件的文件編號;
%I:指定DBID;
%N:指定表空間名稱;
%U:指定一個系統成的格式[data-D-%d_id-%I_TS-%N_FNO-%f];
(5)使用的例子:
a.修改數據庫中數據文件的目錄:SET NEWNAME FOR DATABASE TO '/NEWPATH/%b';
b.修改表空間中數據文件的目錄:SET NEWNAME FOR TABLESPACE tbs_name TO '/NEWPATH/%b';
c.然後再執行DUPLICATE TARGET DATABASE TO dup_db;
3. 性能的加強:
(1)Physical Standby可以啓動Fast Incremental Backups:
a. 開啓:ALTER DATABASE ENABLE BLOCK CHANGE TRACKING USING FILE 'tracking_file' REUSE;
b. 關閉:ALTER DATABASE DISABLE BLOCK CHANGE TRACKING;
c. trace file記錄了上次完全備份之後所有發生變化的塊,增量備份時直接讀取這些塊,可以從v$block_change_tracking視圖中查看設置的信息;
d. 啓用快速增量備份之後就之後0和1級別了,沒有2,3,4,5級別了;
(2)提升了塊的恢復,之前是block recovery,現在可以直接使用recovery;
4. 壞塊檢測的加強:
(1)使用v$database_block_corruption視圖查看存在的快壞;
(2)加強了VALIDATE命令:
a. VALIDATE ... BLOCK;
b. VALIDATE DATABASE;
(3)與dbverify的功能相似;
5. 使用新的二進制壓縮功能:
(1)命令爲:CONFIGURE COMPRESSION ALGORITHM 'HIGH/MEDIUM/LOW/DEFAULT';
(2)壓縮級別:
a. HIGH:壓縮率很大,消耗最多的CPU;
b. MEDIUM:壓縮率一般,消耗較多的CPU;
c. LOW:比較低的壓縮率,消耗較少的CPU;
d. DEFAULT:介於HIGH和MEDIUM之間;
(3)HIGH/MEDIUM/LOW:這三項壓縮級別需要高級壓縮功能:
a. 使用dba_registry視圖查看已經安裝的組件;
b. 使用v$option視圖查看數據庫啓用的功能;
6. 備份的優化:
(1)優化了UNDO的備份,減少了時間和佔用空間:
a. 不備份那些已經提交,而且提交的時間超過UNDO_RETENTION的UNDO快;
b. 只備份那些未提交,或者提交了但是提交時間小於UNDO_RETENTION的UNDO快;
(2)靈活使用VSS-enabled軟件:
a. VSS:Volume Shadow Copy Service,卷影拷貝服務;Windows中的功能,使用VSS,在特定捲上建立數據拷貝時間點,並在將來的某一時刻把數據恢復到任何一個你曾創建的時間點的狀態;
b. 與存儲級別的拷貝有關;
c. 如果備份SQL Server時,主機不知道存儲層面備份,可能發生數據不一致的情況,因此需要先發出vss命令來出發;
d. Oracle不需要必須使用VSS,當然也可以使用;
(3)在multiple-component環境(主要是指dg環境)簡化了歸檔日誌的管理:
a. 主要是在rman中刪除主庫歸檔日誌時確保歸檔日誌已經傳到了備庫(手動刪除無法控制);
b. 主要通過命令實現:
- CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON [ALL] STANDBY:備庫應用上以後纔可以刪除;
- CONFIGURE ARCHIVELOG DELETION POLICY TO SHIPPED TO [ALL] STANDBY:傳輸到了備庫就可以刪除;
- CONFIGURE ARCHIVELOG DELETION POLICY TO NONE:沒有刪除策略;、
(4)在配置了多個歸檔路徑的情況下,如果其中一個歸檔路徑損壞,可以自動failover到其它的路徑備份歸檔日誌;
7. 並行備份/恢復超級大文件:
(1)11g之前一個文件只能使用一個Channel來備份,現在對於超大文件可以使用多個Channel把文件分成多個Section來備份,最多256個Section;
(2)通過SECTION SIZE N [K|M|G]來控制每個的大小,可以用在BACKUP和VALIDATE DATAFILE命令中;
(3)把SYSTEM表空間分四份備份的例子:
a. CONFIGURE DEVICE TYPE DISK PARALLELISM 4 BACKUP TYPE TO BACKUPSET;
b. BACKUP SECTION SIZE 200M TABLESPACE SYSTEM;
c. 會按照文件的塊分成四份,由四個channel分別備份;
(4)如果指定的section size太小而超過256個section的話,rman會自動計算section size的大小,正好生成256個section;
8. DUPLICATE數據庫的加強:
(1)可以使用網絡,不需要備份即可完成;
(2)需要包含自定義的spfile(需要指定出初始化參數文件和監聽器的連接方式),在duplicate的時候會自動創建spfile;
(3)duplicate數據庫的過程:
a. 註冊靜態監聽文件,並配置tnsnames.ora文件;
b. 創建密碼文件;
c. 在$ORACLE_HOME/dbs目錄下寫pfile,添加db_name, db_file_name_convert, log_file_name_convert, sga_target和compatible參數;
d. 創建$ORACLE_BASE/admin/SID/[a|b|c|u]dump目錄和數據文件目錄;
e. 啓動到momount狀態下;
f. rman target xx@tnsnames auxiliary xx@tnsnames catalog xx@tnsnames;
g. duplicate target database to xx from active database;
h. tips:不要在duplicate時指定spfile,容易出錯,使用pfile,duplicate完成後會自動創建spfile;
(4)創建standby的過程:duplicate target database for standby from active database,其它步驟一樣;
(5)使用duplicate甚至可以不連target database,但是要連catalog,通過catalog查看target database的文件結構,通過備份複製數據庫;
a. 啓動auxiliary instance到nomount狀態;
b. rman auxiliary xx@tnsnames catalog xx@tnsnames;
c. duplicate database target_name to dup_name;
(6)可以使用duplicate ... [skip] tablespace命令跳過某些表空間;
a. 當skip某個或者某些表空間時,要確保剩下的表空間沒有引用skip的表空間;
b. 使用dbms_tts.transport_set_check過程來檢查是否自包含;
(7)在duplicate時一定要先alter system switch logfile切出來一個歸檔日誌,duplicate本身是把數據庫不完全恢復到一個時間點,這個時間點不能在online redo log file中,所以至少要有一個archive log;
(8)DUPLICATE命令的新選項:
a. NOREDO:當使用targetless duplicate(即duplicate不連接target database)而且target database處於NOARCHIVELOG模式下,沒有archive log可以恢復時,要把target database啓動到mount狀態然後做duplicate,意義不大;
b. UNDO TABLESPACE:中間換過UNDO表空間,那麼在recovery的時候就會報錯,此時需要指定原來的UNDO表空間;
9.使用RMAN創建Archival Backups:
(1)Archival Backup:是完整的數據庫的備份,包括數據文件的備份,控制文件的備份,歸檔日誌的備份.通過Archival Backup可以完全恢復出一個數據庫到某個時間;
(2)通過KEEP子句完成,可以在線做:NOKEEP | KEEP {FOREVER | UNTIL TIME [=] ' date_string '} [RESTORE POINT rsname];
a. KEEP FOREVER:永久保留,只能通過catalog做;
b. KEEP UNTIL TIME = '':可以通過控制文件做;
c. RESTORE POINT rsname:是爲這個Archival Backup指定一個名詞;
(3)RMAN中列出所有的restore points:LIST RESTORE POINT ALL;
(4)RMAN中顯示某一個restore points:LIST RESTORE POINT 'rsname';
(5)管理Archival Database Backup:
a. 備份時指定KEEP時間:BACKUP TABLESPACE users KEEP UNTIL TIME = 'YYYYY-MM-DD';
b. 已經存在的備份可以使用CHANGE命令修改:CHANGE BAKCUP/BACKUPSET TAG 'tag' KEEP UNTIL TIME = 'YYYYY-MM-DD';
c. NOKEEP一個拷貝:CHANGE COPY OF DATABASE CONTROLFILE NOKEEP;
d. 備份時使用KEEP命令會把數據文件,歸檔日誌和控制文件都一起備份;CHANGE之前的備份/備份集的話相關的歸檔日誌是可以刪除的;
(6)EM中Database Instance->Availability->Schedule Backup->Schedule Customized Backup中,第二步Settings是可以選擇Policy,來指定KEEP的時間;
10.從內存中生成pfile或者spfile:
(1)CREATE PFILE [= 'pfile_name' ] FROM { { SPFILE [= 'spfile_name'] } | MEMORY };
(2)CREATE SPFILE [= 'spfile_name' ] FROM { { PFILE [= 'pfile_name' ] } | MEMORY };
11. TSPITR的加強與改動:
(1)TSPITR:Tablespace Point-In-Time Recovery,基於時間點的表空間恢復,將一個或者多個表空間恢復到過去的一個時間點,而其它的表空間仍然保持現有的狀態;
(2)11g之前是從duplicate出來的中間庫把表空間導出導入,現在可以使用傳輸表空間和數據泵;
(3)TSPITR可以用於恢復一個被刪除的表空間;
(4)TSPITR在設置爲ONLINE之前可以反覆執行,而且不需要recovery catalog;
(5)使用dbms_tts.transport_set_check過程檢查要恢復的一個或者幾個表空間自包含;
(6)使用Image Copy加快TSPITR的性能:
a. 使用SET NEWNAME命令替代CONFIGURE AUXNAME命令:SET NEWNAME FOR DATAFILE 'xx' TO 'yyy';
b. 恢復表空間到某個SEQUENCE:RECOVER TABLESPACE tbsname UNTIL SEQUENCE xxx THREAD 1;
12. 管理Recovery Catalogs:
(1)創建Recovery Catalog;
(2)註冊目標數據庫到Recovery Catalog;
(3)如果願意,可以使用IMPORT CATALOG命令把老的catalog的信息導入進來合併;
a. 假設有三個Recovery,分別爲11.1,10.2和9.2的版本,要把低版本的catalog的元信息合併到高版本;
b. 連接11.1版本的catalog:CONNECT CATALOG cat111/oracle@destdb;
c. 導入在10.2版本中註冊的所有的數據庫的元信息:IMPORT CATALOG cat102/oracle@srcdb;
d. 導入在9.2版本中註冊的兩個數據庫的元信息:IMPORT CATALOG cat92/oracle@catdb DBID=1423241, 1423242;
e. NO UNREGISTER:默認情況下,導入到其它catalog時,數據庫就會從原來的catalog中unregister掉,可以加NO UNREGISTER參數,使數據庫在兩邊都註冊;
f. 主要是爲了合併之前版本中註冊數據庫的備份信息,也可以都重新註冊到新的catalog,然後再備份,但是如果庫很多使用合併就方便很多;
(4)如果需要的話,可以註冊一些老的備份到catalog;
(5)如果需要的話,可以創建virtual recovery catalog爲某些用戶,叫VPC(Virtual Private Catalogs);
a. 假如有4個dba管理了20臺oracle server,每人管理5臺,那麼可以先創建一個base的catalog,把20臺db都註冊到catalog中,然後分配權限,這樣每個人只能看到自己管理的db的元信息了;
b. 創建base的catalog:
RMAN> CONNECT CATALOG catowner/oracle@catdb;
RMAN> CREATE CATALOG;
c. 在數據庫中創建一個vpc的用戶:
SQL> CONNECT SYS/oracle@catdb AS SYSDBA;
SQL> GRANT RECOVERY_CATALOG_OWNER to vpcowner;
d. 爲vpc用戶授權:
catalog的擁有者連接:RMAN> CONNECT CATALOG catowner/oracle@catdb;
授權管理db10g數據庫的元信息:RMAN> GRANT CATALOG FOR DATABASE db10g TO vpcowner;
授權可以註冊新的數據庫進來:RMAN> GRANT REGISTER DATABASE TO vpcowner;
e. 使用vpc用戶創建virtual catalog:
如果是11g客戶端的話:
RMAN> CONNECT CATALOG vpcowner/oracle@catdb;
RMAN> CREATE VIRTUAL CATALOG;
如果是11g之前的客戶端的話:
SQL> CONNECT vpcowner/oracle@catdb;
SQL> exec catowner.dbms_rcvcat.create_virtual_catalog;
f.註冊新的數據庫到catalog中:
RMAN> CONNECT TARGET / CATALOG vpcowner/oracle@catdb;
RMAN> REGISTER DATABASE;
g. 使用virtual catalog:
RMAN> CONNECT TARGET / CATALOG vpcowner/oracle@catdb;
RMAN> BACKUP DATABASE;
(6)保護Recovery Catalog;
(7)RMAN的本質就是一個解析器,把命令轉換成後臺對DMBS_BACKUP_RESTORE包的調用