但是这样做的风险就是这个PDB如果还是无法正常open,很可能的情况就是受限的会话连接,这样的话我只能重新修复了,为此我花了些时间做了一个完整的逻辑备份,然后开始尝试修复。
再次运行noncdb_to_pdb.sql的脚本。
SQL> alter session set container=actvdb; Session altered. SQL> @$ORACLE_HOME/rdbms/admin/noncdb_to_pdb.sql看到上次抛出ORA-00600的地方会快就顺利完成了,心里总算松了口气。然后尝试open的时候发现这次抛出了SQLPatch的Error
我在主库端$ORACLE_HOME/OPatch下运行dbpach -verbose 短暂的等待之后,可以看到PDB已经部署了新的补丁。
Current state of SQL patches: Bundle series PSU: ID 160719 in the binary registry and ID 160719 in PDB ACTVDB然后重启PDB,就恢复了正常。
SQL> alter session set container=actvdb; Session altered. SQL> shutdown immediate Pluggable Database closed. SQL> startup Pluggable Database opened. SQL> show pdbs; CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 8 ACTVDB READ WRITE NO而这个问题在备库就立竿见影,再次尝试启动备库的PDB。
使用alter pluggable database all open就没有问题了。
SQL> show pdbs; CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 。。。 8 ACTVDB READ ONLY NO SQL> select open_mode from v$database; OPEN_MODE -------------------- READ ONLY WITH APPLY这个问题总算告一段落,而对于SQL Patch也有了更深一层的理解。