首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Oracle 12c远程克隆PDB的问题及修复(r12笔记第78天)

Oracle 12c远程克隆PDB的问题及修复(r12笔记第78天)

作者头像
jeanron100
发布2018-03-21 16:23:07
发布2018-03-21 16:23:07
1.2K0
举报

Oracle 12c里面的PDB迁移还是有很多花样的,玩法很多,如果想达到一种平滑方式的迁移,克隆远程PDB也是一种方法,保证网络畅通,即可远程克隆PDB到指定的目标容器数据库中,当然这种方式还是推荐数据量不大的PDB。

要实现远程克隆,主要就是创建DB link,然后使用create pluggable database语句指定db link复制的路径即可。当然这个过程中还是可能出现一大堆的问题。我就抛砖引玉,提一个比较有代表性的。

首先在目标端容器数据库创建DB link,指向源端的PDB

create public database link tcymob1_new12c connect to pdb_mgr identified by oracle using 'tcymob1';

接着在目标端容器数据库远程克隆PDB

CREATE PLUGGABLE DATABASE pdb4 FROM test_pdb ? FILE_NAME_CONVERT = file_name_convert=('/U01/app/oracle/oradata/dbcadb','/U01/app/oracle/oradata/dbcadb/pdb4');

当然很不幸,抛出了下面的错误,这个错误如果在12.2中测试很可能不会碰到,但是在12.1和12.2之间切换,那还是很可能有的,因为其中的一个重要原因就是undo了。

ORA-17628: Oracle error 65035 returned by remote Oracle server ORA-65035: unable to create pluggable database from我们看看错误分析:

$ oerr ora 65035 65035, 00000, "unable to create pluggable database from %s" // *Cause: An attempt was made to clone a pluggable database that did not have // local undo enabled. // *Action: Enable local undo for the PDB and and retry the operation.

为了进一步验证,我们到源端,查看源容器数据库的信息

SQL> show pdbs; CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 PDB2_PROXY MOUNTED 5 TCYMOB0 READ WRITE NO 6 TCYMOB1 READ WRITE NO

查看database_properties,或者查看dba_data_files都可以,源库中的undo是共享模式的,接下来的问题就会变为如果把share undo改为local undo

修复share undo为local undo核心的命令就是alter database undo local,但是要实现这样一个目标还是需要花些功夫的。

我们先启动源数据库到upgrade模式。

SQL> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. SQL> startup upgrade

然后在root容器下执行undo的切换命令。

SQL> show con_name CON_NAME ------------------------------ CDB$ROOT SQL> alter database local undo on; Database altered.

然后启动源容器数据库即可。 SQL> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. SQL> startup ORACLE instance started.

再次查看,对应的undo文件已经是PDB级别,即local模式了。 SQL> show pdbs; CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 PDB2_PROXY MOUNTED 5 TCYMOB0 MOUNTED 6 TCYMOB1 MOUNTED SQL> alter session set container=tcymob1; Session altered. SQL> select name from v$datafile where name like '%undo%'; NAME --------------------------------------------------------------- /U01/app/oracle/oradata/new12c/NEW12C/datafile/o1_mf_undotbs1_dkbv7dro_.dbf

再次尝试就可以看到,问题引刃而解。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-05-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 杨建荣的学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档