关键词:hot clone, remote clone, local clone, database link
说明
本文只针对源库PDB版本低于目标CDB版本情况。源库高于目标库的情况不适用,且不能进行克隆操作。
> 源容器数据库是19.4,pdb没有做升级为19.3!
> 目标容器数据库19.4
一、需要考虑的前提工作
1) 远程克隆数据库或者本地克隆数据库,权限用户应该具有以下权限 --指源库用户权限
CREATE PLUGGABLE DATABASE
CREATE SESSION
2) 在目标库上建立源库DBLINK
create database link clonePdb connect to C##cloneusr identified by cloneusr using '(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.100)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = BAPPZSC)))';
3) 将源库pdb升级 可在源库端升级 ?*这种情况是由于做RU升级时只升级了CDB,而没有升级PDB的缘故。(等同于相同大版本,RU不同情况) 可在目标库端升级
二、问题现象
1) 远程克隆数据库或者本地克隆数据库,权限用户应该具有以下权限 --指源库用户权限
CREATE PLUGGABLE DATABASE
CREATE SESSION
2) 在目标库上建立源库DBLINK
create database link clonePdb connect to C##cloneusr identified by cloneusr using '(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.100)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = BAPPZSC)))';
3) 将源库pdb升级 可在源库端升级 ?*这种情况是由于做RU升级时只升级了CDB,而没有升级PDB的缘故。(等同于相同大版本,RU不同情况) 可在目标库端升级 # 二、问题现象 1) 克隆的PDB为限制模式, restricted=YES
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
/---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
4 BAPPZSC READ WRITE YES
2.)查看PDB_PLUG_IN_VIOLATIONS中ERROR 一些TYPE为ERROR的组件中MESSAGE=Database option XXX mismatch: PDB installed version 19.0.0.0.0. CDB in stalled version NULL. 这说明,目标数据库中没有这些组件。
SQL> set linesize 150
SQL> col name for a10
SQL> col cause for a25
SQL> col time for a30
SQL> col message for a35
SQL> select type, time,name,cause,status,message from PDB_PLUG_IN_VIOLATIONS where status != 'RESOLVED' order by name, type;
TYPE TIME NAME CAUSE STATUS MESSAGE
/--------- ------------------------------ ---------- ------------------------- --------- -----------------------------------
ERROR 01-OCT-19 09.27.28.966944 AM BAPPZSC OPTION PENDING Database option CONTEXT mismatch: P
DB installed version 19.0.0.0.0. CD
B installed version NULL.
ERROR 01-OCT-19 09.27.28.976094 AM BAPPZSC OPTION PENDING Database option XML mismatch: PDB i
nstalled version 19.0.0.0.0. CDB in
stalled version NULL.
ERROR 01-OCT-19 09.27.28.975005 AM BAPPZSC OPTION PENDING Database option SDO mismatch: PDB i
nstalled version 19.0.0.0.0. CDB in
stalled version NULL.
ERROR 01-OCT-19 09.27.28.964378 AM BAPPZSC OPTION PENDING Database option APS mismatch: PDB i
nstalled version 19.0.0.0.0. CDB in
stalled version NULL.
ERROR 01-OCT-19 09.27.28.965863 AM BAPPZSC OPTION PENDING Database option CATJAVA mismatch: P
DB installed version 19.0.0.0.0. CD
B installed version NULL.
ERROR 01-OCT-19 09.27.28.977099 AM BAPPZSC OPTION PENDING Database option XOQ mismatch: PDB i
nstalled version 19.0.0.0.0. CDB in
stalled version NULL.
ERROR 01-OCT-19 09.27.28.968236 AM BAPPZSC OPTION PENDING Database option JAVAVM mismatch: PD
B installed version 19.0.0.0.0. CDB
installed version NULL.
ERROR 01-OCT-19 09.27.28.973717 AM BAPPZSC OPTION PENDING Database option ORDIM mismatch: PDB
installed version 19.0.0.0.0. CDB
installed version NULL.
WARNING 01-OCT-19 08.50.43.609974 AM BAPPZSC Sync Failure PENDING Sync PDB failed with ORA-65047 whil
e performing 'DROP USER "C##BMCSYS"
'
WARNING 01-OCT-19 08.50.43.570990 AM BAPPZSC Sync Failure PENDING Sync PDB failed with ORA-65047 whil
e performing 'DROP USER "C##PATROL"
'
WARNING 01-OCT-19 08.50.43.530023 AM BAPPZSC Sync Failure PENDING Sync PDB failed with ORA-65047 whil
e performing 'DROP USER "C##BAKUSR"
11 rows selected.
3) 目标容器数据库查看注册的服务。
SQL> col comp_name for a40
SQL> select comp_id,comp_name,VERSION_FULL from dba_registry;
COMP_ID COMP_NAME VERSION_FULL
/------------------------------ ---------------------------------------- ------------------------------
CATALOG Oracle Database Catalog Views 19.4.0.0.0
CATPROC Oracle Database Packages and Types 19.4.0.0.0
RAC Oracle Real Application Clusters 19.4.0.0.0
XDB Oracle XML Database 19.4.0.0.0
OWM Oracle Workspace Manager 19.4.0.0.0
4) 目标插件数据库查看注册的服务。
SQL> col comp_name for a40
SQL> select comp_id,comp_name,VERSION_FULL from dba_registry;
COMP_ID COMP_NAME VERSION_FULL
/------------------------------ ---------------------------------------- ------------------------------
CATALOG Oracle Database Catalog Views 19.4.0.0.0
CATPROC Oracle Database Packages and Types 19.4.0.0.0
RAC Oracle Real Application Clusters 19.4.0.0.0
JAVAVM JServer JAVA Virtual Machine 19.4.0.0.0
XML Oracle XDK 19.4.0.0.0
CATJAVA Oracle Database Java Packages 19.4.0.0.0
APS OLAP Analytic Workspace 19.4.0.0.0
XDB Oracle XML Database 19.4.0.0.0
OWM Oracle Workspace Manager 19.4.0.0.0
CONTEXT Oracle Text 19.4.0.0.0
ORDIM Oracle Multimedia 19.4.0.0.0
SDO Spatial 19.4.0.0.0
XOQ Oracle OLAP API 19.4.0.0.0
三、问题处理
以上两端SQL代码查看到,已经克隆的PDB组件要多余目标CDB的。而这些不存在的组件为无效组件。这种情况有一个简单有效的方法是,将无效的组件从PDB的注册中删除。具体方法如下:
delete from sys.registry$ where cid in ('JAVAVM','CATJAVA','XML','APS','CONTEXT','ORDIM','SDO','XOQ');
commit;
将限制模式的PDB库BAPPZSC重启后,可以看到已经为正常模式的数据库了。
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
/---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
4 BAPPZSC READ WRITE NO
四、总结
Oracle 19c最大的亮点之一就是数据库多租户模式,数据库资源整合一直是一个老大难问题。对于企业使用Oracle数据库来说,这个亮点是必使用的。而其强大的功能有待我们不断的去探索。
1) 克隆的PDB为限制模式, restricted=YES
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
/---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
4 BAPPZSC READ WRITE YES
2.)查看PDB_PLUG_IN_VIOLATIONS中ERROR 一些TYPE为ERROR的组件中MESSAGE=Database option XXX mismatch: PDB installed version 19.0.0.0.0. CDB in stalled version NULL. 这说明,目标数据库中没有这些组件。
SQL> set linesize 150
SQL> col name for a10
SQL> col cause for a25
SQL> col time for a30
SQL> col message for a35
SQL> select type, time,name,cause,status,message from PDB_PLUG_IN_VIOLATIONS where status != 'RESOLVED' order by name, type;
TYPE TIME NAME CAUSE STATUS MESSAGE
/--------- ------------------------------ ---------- ------------------------- --------- -----------------------------------
ERROR 01-OCT-19 09.27.28.966944 AM BAPPZSC OPTION PENDING Database option CONTEXT mismatch: P
DB installed version 19.0.0.0.0. CD
B installed version NULL.
ERROR 01-OCT-19 09.27.28.976094 AM BAPPZSC OPTION PENDING Database option XML mismatch: PDB i
nstalled version 19.0.0.0.0. CDB in
stalled version NULL.
ERROR 01-OCT-19 09.27.28.975005 AM BAPPZSC OPTION PENDING Database option SDO mismatch: PDB i
nstalled version 19.0.0.0.0. CDB in
stalled version NULL.
ERROR 01-OCT-19 09.27.28.964378 AM BAPPZSC OPTION PENDING Database option APS mismatch: PDB i
nstalled version 19.0.0.0.0. CDB in
stalled version NULL.
ERROR 01-OCT-19 09.27.28.965863 AM BAPPZSC OPTION PENDING Database option CATJAVA mismatch: P
DB installed version 19.0.0.0.0. CD
B installed version NULL.
ERROR 01-OCT-19 09.27.28.977099 AM BAPPZSC OPTION PENDING Database option XOQ mismatch: PDB i
nstalled version 19.0.0.0.0. CDB in
stalled version NULL.
ERROR 01-OCT-19 09.27.28.968236 AM BAPPZSC OPTION PENDING Database option JAVAVM mismatch: PD
B installed version 19.0.0.0.0. CDB
installed version NULL.
ERROR 01-OCT-19 09.27.28.973717 AM BAPPZSC OPTION PENDING Database option ORDIM mismatch: PDB
installed version 19.0.0.0.0. CDB
installed version NULL.
WARNING 01-OCT-19 08.50.43.609974 AM BAPPZSC Sync Failure PENDING Sync PDB failed with ORA-65047 whil
e performing 'DROP USER "C##BMCSYS"
'
WARNING 01-OCT-19 08.50.43.570990 AM BAPPZSC Sync Failure PENDING Sync PDB failed with ORA-65047 whil
e performing 'DROP USER "C##PATROL"
'
WARNING 01-OCT-19 08.50.43.530023 AM BAPPZSC Sync Failure PENDING Sync PDB failed with ORA-65047 whil
e performing 'DROP USER "C##BAKUSR"
11 rows selected.
3) 目标容器数据库查看注册的服务。
SQL> col comp_name for a40
SQL> select comp_id,comp_name,VERSION_FULL from dba_registry;
COMP_ID COMP_NAME VERSION_FULL
/------------------------------ ---------------------------------------- ------------------------------
CATALOG Oracle Database Catalog Views 19.4.0.0.0
CATPROC Oracle Database Packages and Types 19.4.0.0.0
RAC Oracle Real Application Clusters 19.4.0.0.0
XDB Oracle XML Database 19.4.0.0.0
OWM Oracle Workspace Manager 19.4.0.0.0
4) 目标插件数据库查看注册的服务。
SQL> col comp_name for a40
SQL> select comp_id,comp_name,VERSION_FULL from dba_registry;
COMP_ID COMP_NAME VERSION_FULL
/------------------------------ ---------------------------------------- ------------------------------
CATALOG Oracle Database Catalog Views 19.4.0.0.0
CATPROC Oracle Database Packages and Types 19.4.0.0.0
RAC Oracle Real Application Clusters 19.4.0.0.0
JAVAVM JServer JAVA Virtual Machine 19.4.0.0.0
XML Oracle XDK 19.4.0.0.0
CATJAVA Oracle Database Java Packages 19.4.0.0.0
APS OLAP Analytic Workspace 19.4.0.0.0
XDB Oracle XML Database 19.4.0.0.0
OWM Oracle Workspace Manager 19.4.0.0.0
CONTEXT Oracle Text 19.4.0.0.0
ORDIM Oracle Multimedia 19.4.0.0.0
SDO Spatial 19.4.0.0.0
XOQ Oracle OLAP API 19.4.0.0.0
三、问题处理
以上两端SQL代码查看到,已经克隆的PDB组件要多余目标CDB的。而这些不存在的组件为无效组件。这种情况有一个简单有效的方法是,将无效的组件从PDB的注册中删除。具体方法如下:
delete from sys.registry$ where cid in ('JAVAVM','CATJAVA','XML','APS','CONTEXT','ORDIM','SDO','XOQ');
commit;
将限制模式的PDB库BAPPZSC重启后,可以看到已经为正常模式的数据库了。
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
/---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
4 BAPPZSC READ WRITE NO
四、总结
Oracle 19c最大的亮点之一就是数据库多租户模式,数据库资源整合一直是一个老大难问题。对于企业使用Oracle数据库来说,这个亮点是必使用的。而其强大的功能有待我们不断的去探索。




