R12c 新特性:RMAN 可插拔資料庫的備份和恢復 (文件 ID 1945849.1)
文件內容
|
用途 |
|
適用範圍 |
|
詳細資訊 |
|
參考 |
適用於:
Oracle Database - Enterprise Edition - 版本 12.1.0.1 和更高版本本文件所含資訊適用於所有平臺
用途
概述 Oracle 12c 新特性,如何使用 RMAN 備份和恢復可插拔資料庫。
適用範圍
資料庫管理員管理大量的資料庫,透過 RMAN 備份。他們期望實施一個容器資料庫進行統一備份,容器資料庫包含一個或者多個可插拔資料庫。需要掌握 RMAN 知識。
詳細資訊
什麼是容器資料庫?
12c 資料庫可以是容器資料庫或非容器資料庫,本文將非容器資料庫簡稱為 non-CDB,容器資料庫簡稱為CDB。
12c 之前的資料庫庫只能作為非容器資料庫即 non-CDBs。
一個容器資料庫可以包含 0 個,1 個或多個使用者建立可插拔資料庫。可插拔資料庫簡稱為 PDB。
容器資料庫包括:
- 一個根容器(即:CDB$ROOT)有 SYSTEM,SYSAUX,UNDO 和 TEMP 表空間,以及控制檔案和線上日誌檔案。
- 一個種子容器(即:PDB$SEED)有 SYSTEM,SYSAUX,TEMP,EXAMPLE 表空間,種子容器作為建立可插拔資料庫(PDB)的模板。
什麼是可插拔資料庫?
可插拔資料庫(PDB)就是一個使用者建立的容器,存放使用者應用系統的資料和程式碼。例如:人力應用系統,薪酬管理系統等。
可插拔資料庫包括:
- SYSTEM,SYSAUX,TEMP 表空間
- 任意多使用者建立的表空間
- PDB 向容器資料庫的 UNDO 表空間,控制檔案和線上日誌檔案寫資訊
當可插拔資料庫往容器資料庫的 UNDO 表空間和線上日誌檔案寫資訊時,會註釋每個 UNDO 和 REDO 屬於哪個可插拔資料庫。
RMAN 備份可插拔資料庫
執行 RMAN 備份的使用者必須要有 SYSDBA 或新許可權 SYSBACKUP
RMAN 可從根容器端執行,如:rman target sys/@t12ccdb
rman target /
或者從可插拔資料庫端執行,如:rman target sys/@t12cpdb1
當 RMAN 連線的資料庫是可插拔資料庫,RMAN 命令僅作用於被連的可插拔資料庫。
當 RMAN 連線的資料庫是根容器資料庫,RMAN 命令預設作用於容器中的所有檔案,除非使用 PDB 名稱進行了特別限制。
RMAN 命令 REPORT SCHEMA 能顯示容器資料庫的所有資料檔案。
下面例子顯示可插拔資料庫 T12cPDB1 在容器資料庫 T12cCDB 中:
RMAN> report schema;
using target database control file instead of recovery catalog
Report of database schema for database with db_unique_name T12CCDB
** (filenames have been edited for clarity)
List of Permanent Datafiles
===========================
File Size(MB) Tablespace RB segs Datafile Name
---- -------- -------------------- ------- ------------------------
1 960 SYSTEM *** .../oradata/T12CCDB/datafile/o1_mf_system_8008cm5s_.dbf
3 660 SYSAUX *** .../oradata/T12CCDB/datafile/o1_mf_sysaux_80089voz_.dbf
4 50 UNDOTBS1 *** .../oradata/T12CCDB/datafile/o1_mf_undotbs1_8gtp7g6l_.dbf
5 250 PDB$SEED:SYSTEM *** .../oradata/T12CCDB/C4B70772D4DF1DF8E0437108DC0A7D20/datafile/o1_mf_system_8008jc7k_.dbf
6 5 USERS *** .../oradata/T12CCDB/datafile/o1_mf_users_8008fnov_.dbf
7 490 PDB$SEED:SYSAUX *** .../oradata/T12CCDB/C4B70772D4DF1DF8E0437108DC0A7D20/datafile/o1_mf_sysaux_8008jc8m_.dbf
8 250 T12CPDB1:SYSTEM *** .../oradata/T12CCDB/C4B71645EF062616E0437108DC0A91E4/datafile/o1_mf_system_8008r3wh_.dbf
9 510 T12CPDB1:SYSAUX *** .../oradata/T12CCDB/C4B71645EF062616E0437108DC0A91E4/datafile/o1_mf_sysaux_8008r3vl_.dbf
10 5 T12CPDB1:USERS *** .../oradata/T12CCDB/datafile/o1_mf_users_8gtp7ghf_.dbf
20 100 T12CPDB1:RECTBL *** .../oradata/T12CCDB/C4B71645EF062616E0437108DC0A91E4/datafile/o1_mf_rectbl_8hfcv26r_.dbf
List of Temporary Files
=======================
File Size(MB) Tablespace Maxsize(MB) Tempfile Name
---- -------- -------------------- ----------- --------------------
1 530 TEMP 32767 .../oradata/T12CCDB/datafile/o1_mf_temp_8bz0jcxg_.tmp
2 20 PDB$SEED:TEMP 32767 .../oradata/T12CCDB/C40F9B49FC9C19E0E0430BAAE80AFF01/datafile/o1_mf_temp_8bz0jfkj_.tmp
3 20 T12CPDB1:TEMP 32767 .../oradata/T12CCDB/C4B71645EF062616E0437108DC0A91E4/datafile/o1_mf_temp_8bz0jh7x_.tmp
現在只有 REPORT SCHEMA 命令能很容易的顯示容器資料庫中資料檔案屬於哪個可插拔資料庫。
假如連線的資料庫是可插拔資料庫,僅顯示它自己的資料檔案:
RMAN> report schema;
List of Permanent Datafiles
===========================
File Size(MB) Tablespace RB segs Datafile Name
---- -------- -------------------- ------- ------------------------
8 250 T12CPDB1:SYSTEM *** .../oradata/T12CCDB/datafile/o1_mf_system_8hloc72d_.dbf
9 510 T12CPDB1:SYSAUX *** .../oradata/T12CCDB/C4B71645EF062616E0437108DC0A91E4/datafile/o1_mf_sysaux_8008r3vl_.dbf
10 5 T12CPDB1:USERS *** .../oradata/T12CCDB/datafile/o1_mf_users_8hlowbh2_.dbf
20 100 T12CPDB1:RECTBL *** .../oradata/T12CCDB/C4B71645EF062616E0437108DC0A91E4/datafile/o1_mf_rectbl_8hfcv26r_.dbf
List of Temporary Files
=======================
File Size(MB) Tablespace Maxsize(MB) Tempfile Name
---- -------- -------------------- ----------- --------------------
3 20 T12CPDB1:TEMP 32767 .../oradata/T12CCDB/C4B71645EF062616E0437108DC0A91E4/datafile/o1_mf_temp_8bz0jh7x_.tmp
1. 完整容器資料庫備份
備份全部資料檔案,包括根容器資料庫檔案,種子資料庫檔案,以及所有可插拔資料庫檔案:
RMAN> BACKUP DATABASE PLUS ARCHIVELOG ALL DELETE INPUT;
RMAN> LIST BACKUP OF DATABASE;
List of Backup Sets
===================
...
------- ---- -- ---------- ----------- ------------ ---------------
82 Full 2.46G DISK 00:01:01 17-JAN-13
BP Key: 83 Status: AVAILABLE Compressed: NO Tag: TAG20130117T114547
Piece Name: .../fast_recovery_area/T12CCDB/backupset/2013_01_17/o1_mf_nnndf_TAG20130117T114547_8hhs3cgs_.bkp
List of Datafiles in backup set 82
File LV Type Ckp SCN Ckp Time Name
---- -- ---- ---------- --------- ----
1 Full 2139245 17-JAN-13 .../oradata/T12CCDB/datafile/o1_mf_system_8008cm5s_.dbf
3 Full 2139245 17-JAN-13 .../oradata/T12CCDB/datafile/o1_mf_sysaux_80089voz_.dbf
4 Full 2139245 17-JAN-13 .../oradata/T12CCDB/datafile/o1_mf_undotbs1_8gtp7g6l_.dbf
5 Full 1621614 13-JUL-12 .../oradata/T12CCDB/C4B70772D4DF1DF8E0437108DC0A7D20/datafile/o1_mf_system_8008jc7k_.dbf
6 Full 2139245 17-JAN-13 .../oradata/T12CCDB/datafile/o1_mf_users_8008fnov_.dbf
7 Full 1621614 13-JUL-12 .../oradata/T12CCDB/C4B70772D4DF1DF8E0437108DC0A7D20/datafile/o1_mf_sysaux_8008jc8m_.dbf
8 Full 2139245 17-JAN-13 .../oradata/T12CCDB/C4B71645EF062616E0437108DC0A91E4/datafile/o1_mf_system_8008r3wh_.dbf
9 Full 2139245 17-JAN-13 .../oradata/T12CCDB/C4B71645EF062616E0437108DC0A91E4/datafile/o1_mf_sysaux_8008r3vl_.dbf
10 Full 2139245 17-JAN-13 .../oradata/T12CCDB/datafile/o1_mf_users_8gtp7ghf_.dbf
20 Full 2139245 17-JAN-13 .../oradata/T12CCDB/C4B71645EF062616E0437108DC0A91E4/datafile/o1_mf_rectbl_8hfcv26r_.dbf
2. 容器資料庫部分資料備份
下面例子顯示僅備份可插拔資料庫 T12CPDB1:
RMAN> BACKUP PLUGGABLE DATABASE T12CPDB1 TAG 'T12CPDB1';
RMAN> LIST BACKUP;
...
------- ---- -- ---------- ----------- ------------ ---------------
85 Full 590.52M DISK 00:00:14 17-JAN-13
BP Key: 86 Status: AVAILABLE Compressed: NO Tag: T12CPDB1
Piece Name: .../fast_recovery_area/T12CCDB/backupset/2013_01_17/o1_mf_nnndf_T12CPDB1_8hhswy1c_.bkp
List of Datafiles in backup set 85
Container ID: 3, PDB Name: T12CPDB1
File LV Type Ckp SCN Ckp Time Name
---- -- ---- ---------- --------- ----
8 Full 2139742 17-JAN-13 .../oradata/T12CCDB/C4B71645EF062616E0437108DC0A91E4/datafile/o1_mf_system_8008r3wh_.dbf
9 Full 2139742 17-JAN-13 .../oradata/T12CCDB/C4B71645EF062616E0437108DC0A91E4/datafile/o1_mf_sysaux_8008r3vl_.dbf
10 Full 2139742 17-JAN-13 .../oradata/T12CCDB/datafile/o1_mf_users_8gtp7ghf_.dbf
20 Full 2139742 17-JAN-13 .../oradata/T12CCDB/C4B71645EF062616E0437108DC0A91E4/datafile/o1_mf_rectbl_8hfcv26r_.dbf
當備份可插拔資料庫時,不需要像上述例子使用 TAG 引數指定可插拔資料庫的名字。因為 RMAN LIST BACKUP 命令自動會顯示 RMAN 備份資料屬於哪個可插拔資料庫。
因為在 FRA 會將 GUID 資訊顯示在檔案路徑名稱上,在這種情況下,使用下面查詢識別可插拔資料庫名稱和 GUID 的對應關係。
下面例子,顯示了可插拔資料庫 T12CPDB1 對應的 GUID 是 C4B71645EF062616E0437108DC0A91E4。
登入容器資料庫:
SQL> SET LINES 150
SQL> SELECT CON_ID, DBID, CON_UID, GUID, NAME FROM v$pdbs;
CON_ID DBID CON_UID GUID NAME
---------- ---------- ---------- -------------------------------- ------------------------------
2 4031181962 4031181962 C40F9B49FC9C19E0E0430BAAE80AFF01 PDB$SEED
3 575001283 575001283 C4B71645EF062616E0437108DC0A91E4 T12CPDB1
3. 部分可插拔資料庫備份
3a. 連線到根容器資料庫,僅備份可插拔資料庫 T12CPDB1 的 system 和 sysaux 表空間
RMAN>BACKUP TABLESPACE T12CPDB1:SYSTEM, T12CPDB1:SYSAUX;
3b. 僅備份可插拔資料庫的 SYSTEM 表空間和根容器資料庫的 SYSAUX 表空間
當連線到根容器資料庫執行備份時,如果沒有指定可插拔資料庫字首,預設備份資料檔案是根容器資料庫
RMAN>BACKUP TABLESPACE T12CPDB1:SYSTEM, SYSAUX;
3c. 容器資料庫中每個檔案號都是唯一的,可以連線到根容器資料庫,不指定容器字首,使用檔案號進行備份。
下面例子顯示如何連線到根容器資料庫,不用指定容器資料庫字首,僅備份 CDB$ROOT 的 3 號資料檔案,和 T12CPDB1 的 20 號資料檔案
RMAN> BACKUP DATAFILE 3,20;
RMAN 可插拔資料庫的恢復
1. 可插拔資料庫 T12cPDB1 system 資料檔案丟失
這種情況下,容器資料庫和其它可插拔資料庫不受影響,可正常使用,僅 T12CPDB1 可插拔資料庫不可用。
必須從根容器資料庫進行恢復。
可插拔資料庫的system資料檔案丟失可能造成和容器資料庫的system資料檔案丟失一樣嚴重後果,導致整個容器資料庫宕掉,所有可插拔資料庫都成為不可用
在這種情況下,需要將容器資料庫放在 mount 狀態下,恢復可插拔資料庫的 system 資料檔案。
未來的版本將會有所改善,可插拔資料庫 system 資料檔案的丟失不影響容器資料庫或其他可插拔資料執行。
RMAN> RESTORE DATAFILE 8;
RMAN> RECOVER DATAFILE 8;
RMAN> ALTER PLUGGABLE DATABASE T12CPDB1 OPEN;
2. 可插拔資料庫的非系統資料檔案丟失,比如USER表空間的10號資料檔案丟失
根據實際情況,丟失的資料檔案可能已經是 offline 狀態,如果沒有,必須先 offline:
RMAN> ALTER DATABASE DATAFILE 10 OFFLINE;
RMAN> RESTORE DATAFILE 10;
RMAN> RECOVER DATAFILE 10;
RMAN> ALTER DATABASE DATAFILE 10 ONLINE;
3. 可插拔資料庫的整個表空間的資料檔案都丟失
某個表空間丟失,但是可插拔資料庫 T12CPDB1 還處於開啟狀態。
RMAN> ALTER TABLESPACE USERS OFFLINE;
RMAN> RESTORE TABLESPACE USERS;
RMAN> RECOVER TABLESPACE USERS;
RMAN> ALTER TABLESPACE USERS ONLINE;
4: 可插拔資料庫的所有資料檔案都丟失
RMAN> RESTORE PLUGGABLE DATABASE T12CPDB1;
RMAN> RECOVER PLUGGABLE DATABASE T12CPDB1;
RMAN> ALTER PLUGGABLE DATABASE T12cPDB1 open;
注:
丟失了可插拔資料庫並不同於刪除了可插拔資料庫。
-丟失了可插拔資料庫是指因為一些意外情況下的資料庫以及檔案的誤刪除或者損壞, 但是它的metadata資料還是存在的。在這種metadata還存在的情況下,從備份中恢復出來是可行的。
-如果是刪除了可插拔資料庫,這樣同樣會把metadata從repository中刪除。這種情況下做restore就會遇到錯誤:
RMAN-06813: could not translate pluggable database PDB1
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31393455/viewspace-2130474/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 關於 RMAN 對於可插拔資料庫按時間點的恢復 (文件 ID 1984554.1)資料庫
- 非RMAN熱備份資料庫和恢復資料庫
- rman資料庫全庫備份與恢復資料庫
- 【RMAN】Oracle11g備份恢復新特性Oracle
- 可定製的資料庫備份和恢復程式資料庫
- RMAN備份恢復——RAC環境資料庫的備份(zt)資料庫
- RMAN備份恢復--RAC環境資料庫的備份(十)資料庫
- RMAN備份恢復——RAC環境資料庫的備份(一)資料庫
- 【備份恢復】RMAN catalog 恢復目錄資料庫資料庫
- RMAN備份恢復典型案例——資料庫卡頓資料庫
- Oracle資料庫備份與恢復之RMANOracle資料庫
- 資料庫資料的恢復和備份資料庫
- 【備份恢復】從備份恢復資料庫資料庫
- rman備份恢復-rman恢復資料檔案測試
- PostgreSql資料庫的備份和恢復SQL資料庫
- rman恢復資料庫--用備份的控制檔案資料庫
- 備份和恢復postgreSQL資料庫SQL資料庫
- RMAN備份恢復——備份到帶庫的效能
- 只存在RMAN備份片的資料庫恢復過程資料庫
- RMAN備份恢復整個庫
- 關於SQL Server資料庫備份和恢復特性介紹SQLServer資料庫
- Oracle資料庫備份與恢復之RMAN2Oracle資料庫
- Mongo 資料庫備份和恢復命令Go資料庫
- 備份和恢復SQL Server資料庫SQLServer資料庫
- RMAN備份恢復——備份到帶庫的效能(二)
- 備份與恢復:polardb資料庫備份與恢復資料庫
- 資料庫的備份與恢復資料庫
- DB2資料庫的備份和恢復DB2資料庫
- oracle資料庫備份和恢復的內容Oracle資料庫
- ORACLE DG從庫 Rman備份恢復Oracle
- RAC資料庫的RMAN備份異機恢復到單節點資料庫資料庫
- 使用Mysqldump備份和恢復MySQL資料庫MySql資料庫
- db2備份和恢復資料庫DB2資料庫
- 【備份恢復】noarchive模式下使用增量備份恢復資料庫Hive模式資料庫
- 【備份恢復】閃回資料庫(五)RMAN 命令列閃回資料庫資料庫命令列
- rman資料備份恢復學習筆記筆記
- RMAN資料庫恢復 之歸檔模式有(無)備份-丟失資料檔案的恢復資料庫模式
- rman備份-(1) 利用備份級恢復資料檔案和控制檔案