Multitenant : Clone a Remote PDB
https://oracle-base.com/articles/12c/multitenant-clone-remote-pdb-or-non-cdb-12cr1#prerequisites
Connect to the remote CDB and prepare the remote PDB for cloning.
export ORAENV_ASK=NO
export ORACLE_SID=cdb3
. oraenv
export ORAENV_ASK=YES
sqlplus / as sysdba
Create a user in the
remote database for use with the database link. In this case, we will use a
local user in the remote PDB.
ALTER SESSION SET
CONTAINER=pdb5;
CREATE USER remote_clone_user
IDENTIFIED BY remote_clone_user;
GRANT CREATE SESSION, CREATE
PLUGGABLE DATABASE TO remote_clone_user;
Open the remote PDB in
read-only mode.
CONN / AS SYSDBA
ALTER PLUGGABLE DATABASE pdb5
CLOSE;
ALTER PLUGGABLE DATABASE pdb5
OPEN READ ONLY;
EXIT;
Switch to the local
server and create a "tnsnames.ora" entry pointing to the remote
database for use in the USING clause of the
database link.
PDB5 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST =
ol7-121.localdomain)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = pdb5)
)
)
Connect to the local
database to initiate the clone.
export ORAENV_ASK=NO
export ORACLE_SID=cdb1
. oraenv
export ORAENV_ASK=YES
sqlplus / as sysdba
Create a database link
in the local database, pointing to the remote database.
DROP DATABASE LINK clone_link;
CREATE DATABASE LINK clone_link
CONNECT TO remote_clone_user IDENTIFIED BY
remote_clone_user USING 'pdb5';
-- Test link.
DESC user_tables@clone_link
Create a new PDB in
the local database by cloning the remote PDB. In this case we are using Oracle
Managed Files (OMF), so we don't need to bother with FILE_NAME_CONVERT parameter for file name conversions.
CREATE PLUGGABLE DATABASE
pdb5new FROM pdb5@clone_link;
Pluggable database created.
SQL>
We can see the new PDB
has been created, but it is in the MOUNTED state.
SELECT name, open_mode FROM
v$pdbs WHERE name = 'PDB5NEW';
NAME OPEN_MODE
------------------------------
----------
PDB5NEW MOUNTED
SQL>
The PDB is opened in
read-write mode to complete the process.
ALTER PLUGGABLE DATABASE
pdb5new OPEN;
SELECT name, open_mode FROM
v$pdbs WHERE name = 'PDB5NEW';
NAME OPEN_MODE
------------------------------
----------
PDB5NEW READ WRITE
SQL>
No comments:
Post a Comment