3.6 KiB
Executable File
3.6 KiB
Executable File
Clone PDB from a remote CDB using RMAN "from active database"
On target CDB, set the source CDB archivelog location:
alter system set REMOTE_RECOVERY_FILE_DEST='/fra' scope=MEMORY sid='*';
Run RMAN duplicate command:
rman target='sys/"*****"@taris/ASTYPRD' auxiliary='sys/"*****"@mandalore/ELLOPRD'
run
{
allocate auxiliary channel aux01 device type disk;
allocate auxiliary channel aux02 device type disk;
allocate auxiliary channel aux03 device type disk;
allocate auxiliary channel aux04 device type disk;
allocate auxiliary channel aux05 device type disk;
allocate auxiliary channel aux06 device type disk;
allocate auxiliary channel aux07 device type disk;
allocate auxiliary channel aux08 device type disk;
allocate auxiliary channel aux09 device type disk;
allocate auxiliary channel aux10 device type disk;
duplicate pluggable database WEDGEPRD as ANTILLESPRD
from active database using compressed backupset section size 400M;
}
Clone PDB from a remote CDB through a database link
On source CDB create an user to be use by the database link:
create user c##adminpdb identified by adminpdb container=ALL;
grant create session, create pluggable database to c##adminpdb container=all;
On target CDB create the database link and clone the remote PDB.
create database link ASTYPRD connect to c##adminpdb identified by "adminpdb" using 'taris/ASTYPRD';
select * from dual@ASTYPRD;
create pluggable database ANTILLESPRD from WEDGEPRD@ASTYPRD parallel 10;
alter pluggable database ANTILLESPRD open;
Note that in both method we can choose the parallelism degree.
Clone PDB from a remote CDB using a RMAN backup
Beacause in Oracle 21c is is still not possible to duplicate a pluggable database directly from a backup (aka duplicate backup location), wi will perform this operation in 2 steps:
- duplicate from location the root PDB + source PDB into an auxiliary CDB
- unplug the PDB from auxiliary CDB and plug it on target PDB
A set until time clause can be specified in duplicate command.
Start AUXCDB CDB instance using a basic spfile, therefore run the duplicate command:
rman auxiliary /
run
{
allocate auxiliary channel aux01 device type disk;
allocate auxiliary channel aux02 device type disk;
allocate auxiliary channel aux03 device type disk;
allocate auxiliary channel aux04 device type disk;
allocate auxiliary channel aux05 device type disk;
allocate auxiliary channel aux06 device type disk;
allocate auxiliary channel aux07 device type disk;
allocate auxiliary channel aux08 device type disk;
allocate auxiliary channel aux09 device type disk;
allocate auxiliary channel aux10 device type disk;
set until time "TIMESTAMP'2021-11-08 15:40:00'";
duplicate database to AUXCDB
pluggable database WEDGEPRD,root
backup location '/mnt/yavin4/tmp/_oracle_/orabackup/ASTY';
}
Unplug PDB from auxiliary CDB:
alter pluggable database WEDGEPRD close immediate;
alter pluggable database WEDGEPRD open read only;
alter session set container=WEDGEPRD;
exec DBMS_PDB.DESCRIBE('/mnt/yavin4/tmp/_oracle_/tmp/WEDGE.xml');
alter pluggable database WEDGEPRD close immediate;
Plug in PDB on target CDB (with copy, move or nocopy option):
create pluggable database ANTILLESPRD using '/mnt/yavin4/tmp/_oracle_/tmp/WEDGE.xml' move;
alter pluggable database ANTILLESPRD open;
alter pluggable database ANTILLESPRD save state;
At this momment we can destroy auxiliary CDB.