如何解析Oracle 12c PDB中碰到的DG问题

62次阅读
没有评论

共计 2957 个字符,预计需要花费 8 分钟才能阅读完成。

如何解析 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 问题问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注丸趣 TV 行业资讯频道了解更多相关知识。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-20发表,共计2957字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)