Oracle 12c PDB中碰到的DG問題
Oracle 12c中的PDB一下子讓資料檔案的格式複雜了一些,所以Data Guard就很有必要了,一旦出現問題,受損失的資料庫是全域性的。沒想到在搭建Data Guard的時候還是碰到了一些小問題。
問題源自於一次PDB建立的時候,早些時候我在搭建好Data Guard後,主備庫的日誌應用都沒有問題,過了幾天,根據需求需要再新增一個PDB,匯入一些資料供應用使用。按照要求建立了資料檔案然後匯入資料,但是檢視備庫的狀態發現MRP異常停止了。
DG Broker檢測的狀態如下:
DGMGRL> show configuration;
Configuration - dg_testdb
Protection Mode: MaxPerformance
Members:
testdb - Primary database
s2testdb - Physical standby database
Error: ORA-16766: Redo Apply is stopped
Fast-Start Failover: DISABLED
Configuration Status:
ERROR (status updated 6 seconds ago)
DGMGRL>
備庫的錯誤日誌如下:
可以看到是備庫沒有對應的路徑存在所以建立失敗,但是錯誤特別之處在於有下面的錯誤資訊:
Automatic Copy of Standby datafiles for create pdb failed with error - 65169. Files need to be copied manually
備庫檢視PDB的狀態資訊如下,TBILLMOB這個PDB出現了問題。
SQL> show pdbs;
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 TCYMOB0 READ ONLY NO
4 MACTVDB READ ONLY NO
5 TBILLMOB MOUNTED
如果嘗試切換容器,會丟擲錯誤。
SQL> alter session set container=TBILLMOB;
ERROR:
ORA-65011: Pluggable database TBILLMOB does not exist.
這個錯誤檢視了MetaLink也沒有給出其他的建議,很明顯和11g的處理方式有一些差別。無奈只能先修復問題,即從主庫匯出,備庫還原恢復。
這個時候問題就來了,主庫備份的時候怎麼選擇對應的資料檔案,在哪個PDB中之類的。
使用RMAN來完成特定的備份,此處需要說明在12c中已經有了預設的新建系統使用者sysbackup
rman target '"/ as sysbackup"'
檢視schema的資訊如下,原來是這麼標記的。
因為這個新建的PDB資料檔案完全沒有同步過去,所以直接可以備份出來。
RMAN> backup format '/tmp/pdb_tbillmob.dmp' pluggable database tbillmob;
在備庫上進行還原和恢復,假裝置份集和控制檔案在/tmp下。
RMAN> catalog start with '/tmp';
RMAN> restore pluggable database tbillmob from '/tmp/pdb_tbillmob.dmp';
Starting restore at 2016-10-25 11:32:18
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=2838 device type=DISK
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of restore command at 10/25/2016 11:32:19
RMAN-06509: only SPFILE or control file can be restored from AUTOBACKUP
正確的方式是這樣的。
RMAN> restore pluggable database tbillmob;
還原之後,開啟日誌應用即可。
SQL> recover managed standby database disconnect from session;
把備庫開啟
SQL> alter database open ;
嘗試開啟所有的PDB
SQL> alter pluggable database all open;
Pluggable database altered.
檢視PDB的狀態如下:
SQL> show pdbs;
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 TCYMOB0 READ ONLY NO
4 MACTVDB READ ONLY NO
5 TBILLMOB READ ONLY NO
再次檢視就主備關係就正常了。
DGMGRL> show configuration;
Configuration - dg_testdb
Protection Mode: MaxPerformance
Members:
testdb - Primary database
s2testdb - Physical standby database
Fast-Start Failover: DISABLED
Configuration Status:
SUCCESS (status updated 51 seconds ago)
DGMGRL>
而在這個基礎上,我們進一步測試,主庫PDB的目錄下重新建立一個test目錄,備庫不存在,看看新增資料檔案是否會成功。
mkdir -p /home/U01/app/oracle/oradata/testdb/pdb/tbillmob/test
SQL> alter tablespace users add datafile '/home/U01/app/oracle/oradata/testdb/pdb/tbillmob/test/users02.dbf'size 10M;
檢視備庫的資訊如下:
當然我是在standby_file_management=auto的前提下操作的。如果是standby_file_management=manual還是存在一些差別。
問題源自於一次PDB建立的時候,早些時候我在搭建好Data Guard後,主備庫的日誌應用都沒有問題,過了幾天,根據需求需要再新增一個PDB,匯入一些資料供應用使用。按照要求建立了資料檔案然後匯入資料,但是檢視備庫的狀態發現MRP異常停止了。
DG Broker檢測的狀態如下:
DGMGRL> show configuration;
Configuration - dg_testdb
Protection Mode: MaxPerformance
Members:
testdb - Primary database
s2testdb - Physical standby database
Error: ORA-16766: Redo Apply is stopped
Fast-Start Failover: DISABLED
Configuration Status:
ERROR (status updated 6 seconds ago)
DGMGRL>
備庫的錯誤日誌如下:
可以看到是備庫沒有對應的路徑存在所以建立失敗,但是錯誤特別之處在於有下面的錯誤資訊:
Automatic Copy of Standby datafiles for create pdb failed with error - 65169. Files need to be copied manually
備庫檢視PDB的狀態資訊如下,TBILLMOB這個PDB出現了問題。
SQL> show pdbs;
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 TCYMOB0 READ ONLY NO
4 MACTVDB READ ONLY NO
5 TBILLMOB MOUNTED
如果嘗試切換容器,會丟擲錯誤。
SQL> alter session set container=TBILLMOB;
ERROR:
ORA-65011: Pluggable database TBILLMOB does not exist.
這個錯誤檢視了MetaLink也沒有給出其他的建議,很明顯和11g的處理方式有一些差別。無奈只能先修復問題,即從主庫匯出,備庫還原恢復。
這個時候問題就來了,主庫備份的時候怎麼選擇對應的資料檔案,在哪個PDB中之類的。
使用RMAN來完成特定的備份,此處需要說明在12c中已經有了預設的新建系統使用者sysbackup
rman target '"/ as sysbackup"'
檢視schema的資訊如下,原來是這麼標記的。
因為這個新建的PDB資料檔案完全沒有同步過去,所以直接可以備份出來。
RMAN> backup format '/tmp/pdb_tbillmob.dmp' pluggable database tbillmob;
在備庫上進行還原和恢復,假裝置份集和控制檔案在/tmp下。
RMAN> catalog start with '/tmp';
RMAN> restore pluggable database tbillmob from '/tmp/pdb_tbillmob.dmp';
Starting restore at 2016-10-25 11:32:18
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=2838 device type=DISK
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of restore command at 10/25/2016 11:32:19
RMAN-06509: only SPFILE or control file can be restored from AUTOBACKUP
正確的方式是這樣的。
RMAN> restore pluggable database tbillmob;
還原之後,開啟日誌應用即可。
SQL> recover managed standby database disconnect from session;
把備庫開啟
SQL> alter database open ;
嘗試開啟所有的PDB
SQL> alter pluggable database all open;
Pluggable database altered.
檢視PDB的狀態如下:
SQL> show pdbs;
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 TCYMOB0 READ ONLY NO
4 MACTVDB READ ONLY NO
5 TBILLMOB READ ONLY NO
再次檢視就主備關係就正常了。
DGMGRL> show configuration;
Configuration - dg_testdb
Protection Mode: MaxPerformance
Members:
testdb - Primary database
s2testdb - Physical standby database
Fast-Start Failover: DISABLED
Configuration Status:
SUCCESS (status updated 51 seconds ago)
DGMGRL>
而在這個基礎上,我們進一步測試,主庫PDB的目錄下重新建立一個test目錄,備庫不存在,看看新增資料檔案是否會成功。
mkdir -p /home/U01/app/oracle/oradata/testdb/pdb/tbillmob/test
SQL> alter tablespace users add datafile '/home/U01/app/oracle/oradata/testdb/pdb/tbillmob/test/users02.dbf'size 10M;
檢視備庫的資訊如下:
當然我是在standby_file_management=auto的前提下操作的。如果是standby_file_management=manual還是存在一些差別。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28211342/viewspace-2147553/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 一次DG搭建過程中碰到的問題
- Oracle 12C -- 使用seed PDB建立新的pdbOracle
- Oracle 12c Relocate PDBOracle
- 11g升級到Oracle 12c碰到的問題(11g中不存在問題) - ORA-01792Oracle
- Oracle 12C TDE問題引發DG不同步案例分析Oracle
- Oracle 12c PDB淺析Oracle
- Oracle 12c 多租戶在 CDB 中 Plug A PDB,Unplugging A PDBOracle
- Oracle 12c系列(二)|PDB的建立Oracle
- 資料遷移(MYSQL--ORACLE)中碰到的亂碼問題MySqlOracle
- Oracle 12C 中CDB和PDB的引數檔案管理Oracle
- Oracle 12c PDB遷移(一)Oracle
- Oracle 12c系列(六)|Relocate a PDBOracle
- Oracle 12c系列(五)|PDB RefreshOracle
- oracle 12c rman備份pdbOracle
- Oracle 12c PDB淺析(二)Oracle
- webpack碰到的問題Web
- oracle 12c PDB隨CDB啟動和連結PDB的方式Oracle
- ORACLE RAC TO RAC DG搭建過程中可能遇到的問題Oracle
- Oracle 12C RMAN transport tablespace from PDB of RAC CDB to remote PDBOracleREM
- oracle 12c中CDB和PDB的備份還原實驗Oracle
- 在學習play framework中碰到的問題Framework
- ORACLE 12C pdb受限解決思路Oracle
- ORACLE 12C新特性——CDB與PDBOracle
- oracle 12c使用dblink克隆pdbOracle
- Hodoop碰到的問題628OdooOOP
- 11g升級到Oracle 12c碰到的問題 - ORA-00904 WM_CONCATOracle
- Oracle RAC之--安裝過程中碰到的問題及解決方法Oracle
- Oracle 12c 多租戶 手工建立 pdb 與 手工刪除 pdbOracle
- Oracle 12C RMAN Duplicating Tablespaces Within a PDBOracle
- Oracle 12C RMAN Duplicating the PDB to remote CDBOracleREM
- Oracle 12c CDB&PDB 基本維護Oracle
- Oracle 12c PDB的資料備份恢復Oracle
- Oracle 12c DG新特性Far SyncOracle
- shark建庫碰到的問題
- vpd碰到的問題解決
- oracle DG VCS切換異常問題Oracle
- Oracle 12c 多租戶專題|12cR2中PDB記憶體資源管理Oracle記憶體
- 工作當中碰到的一個UTL_FILE的問題