一个参数引发的PDB无法在DataGuard下同步的问题

OS:Oracle Linux 6.6 x64
DB:GI+Oracle 12.1.0.2

在12c的DataGuard下,当试图在Primary创建新的PDB时,Standby端无法同步创建该PDB并且redo apply停止。具体表现为:
v$pdb视图出现了新pdb;
dba_pdbs视图下未出现新pdb;
关闭redo apply时,居然显示未启用:

点击(此处)折叠或打开

  1. alter database recover managed standby database cancel;
  2. ERROR at line 1:
  3. ORA-16136: Managed Standby Recovery not active
另外注意到,多出了路径有问题的数据文件:

点击(此处)折叠或打开

  1. SQL> select file#,name from v$datafile;
  2. ……
  3.         25
  4. +DATA/RACDB/35112BB187971752E0531506A8C09821/DATAFILE/system.285.914342455
这个路径是Primary端的路径。由此想到,是没有设置路径转换造成的。

解决方法:
在Standby端设置相关参数:

点击(此处)折叠或打开

  1. alter system set DB_FILE_NAME_CONVERT='+DATA/RACDB/','/oradata/STBY/' scope=spfile;
  2. shutdown immediate
  3. startup mount
  4. alter database open read only;
  5. alter database recover managed standby database disconnect;
接下来,就可以在Primary端创建PDB了。完成后,发现一切都正常了。

另外,Primary端最好也设置db_file_name_convert参数,以备当其转变为Standby角色。注意,此时应该Standby在前,Primary在后。





请使用浏览器的分享功能分享到微信等