使用远程克隆的先决条件是:
oracle版本是12.2以上,开启归档模式以及本地undo.
这里是想从172.16.12.250将PRODPDB1克隆到172.16.12.251下,命名为PRODPDB1COPY。
1 确保源端数据库开启归档模式
备注:进cdb里开启归档。
2 在源数据库中,确保PDB处于READ WRITE模式
如果不是读写状态,需要执行如下命令:
ALTER PLUGGABLE DATABASE PRODPDB1 OPEN READ WRITE;
3 兼容性检查
3.1 在源端生成pdb的xml文件
begin
dbms_pdb.describe(
pdb_descr_file=>'/home/oracle/PRODPDB1.xml',
pdb_name=>'PRODPDB1');
end;
/
3.2 将源端生成的xml文件拷贝到目标端
scp PRODPDB1.xml 172.16.12.251:/home/oracle/
3.3 在目标端进行检查
set serveroutput on;
declare
compatible constant varchar2(3):=
case DBMS_PDB.CHECK_PLUG_COMPATIBILITY(
pdb_descr_file=>'/home/oracle/PRODPDB1.xml',
pdb_name=>'PRODPDB1')
WHEN TRUE THEN 'YES'
ELSE 'NO'
end;
begin dbms_output.put_line(compatible);
end;
/
3.4 查看校验结果
确保值为YES。
如果为NO,则需要查看PDB_PLUG_IN_VIOLATIONS详细内容.
如果为YES,该视图也可能会包含一些内容,因此都需要查看该视图了解内容。
4 远程克隆
4.1 在源端创建公共用户
在源端创建的公共用户需要一些特殊的权限.
create user c##suq identified by 密码 container=all;
grant CREATE PLUGGABLE DATABASE to c##suq container=all;
grant create session,connect,resource,cdb_dba,sysoper to c##suq container=all;
4.2 在目标端创建连接到源端的dblink
create database link link_250 connect to c##suq identified by 密码 using 'PRODPDB1';
上面的orclcdb是源端的PDB名称.
4.3 在目标端远程克隆PDB
4.3.1 配置目标端tnsnames.ora,新增源端pdb的信息
PRODPDB1=
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.12.250)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = PRODPDB1)
)
)
#检查能否远程连接
tnsping prodpdb1
确保能通(返回OK):
#确保能远程连接
4.3.2 克隆
create pluggable database PRODPDB1COPY from PRODPDB1@link_250;
其中:
PRODPDB1COPY为目标端创建的pdb的名字
PRODPDB1为源端的pdb的名字,即你想克隆的pdb名字
link_250为刚刚创建的dblink的名字
4.3.3 启动目标端pdb
alter pluggable database prodpdb1copy open;
5 验证
5.1 查看下数据是否同步过来了
看来数据同步过来啦。
6 增量克隆
还未验证。