环境如下:
源CDB :s1
目标CDB:s2
源PDB:在s1里面有pdb s1pdb10004
在源和目标cdb里都创建一个具有sysdba权限的用户
SQL> create user c##proxy identified by pass;
User created.
SQL> grant sysdba to c##proxy container=all;
Grant succeeded.
在源和目标数据库里都对system用户赋予sysoper的权限
system用户需要同时具有create pluggable database 权限
也就是说用于dblink的用户需要具有sysoper和create plugggable database两项权限
grant sysoper to system container=all;
在目标数据库创建dblink
create public database link dblink_s1 connect to system identified by s1 using 's1';
创建proxy pdb
create pluggable database s1pdb10004_proxy as proxy from s1pdb10004@dblink_s1;
使用创建的c##proxy链接新创建的额proxy pdb s1pdb10004_proxy,去做相关操作,否则可以会碰到下面的错误
SQL> alter session set container=s1pdb10004_proxy;
Session altered.
SQL> desc gv$pdbs;
ERROR:
ORA-01017: invalid credential or not authorized; logon denied
ORA-02063: preceding line from PROXYPDB$DBLINK
Help: https://docs.oracle.com/error-help/db/ora-01017/