您好,登錄后才能下訂單哦!
如何解析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還是存在一些差別。
關于如何解析Oracle 12c PDB中碰到的DG問題問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。