Author : Cihan Gedik
Email : [email protected]
Linkedin : https://www.linkedin.com/in/cihan-gedik-13b55065/
Group : https://www.linkedin.com/groups/13792740/
PLUGGABLE DATABASE HOT CLONE REFRESH MANUAL
Compatible Versions |
Oracle Database 12.1.x and Later
Requirements |
One Source PDB in CDB
One Empty CDB for Target
In this post ;
Database Version : 19C
PDB01 is my source pluggable database in CDB01
PDB01_HOT_MAN is my target clone pluggable database in CDB02
Solution |
For this LAB Please create below requirements
Create PDB01 in CDB01 and insert some data
Create Empty CDB02 Database
#### Create CDB01
$ORACLE_HOME/bin/dbca -silent -createDatabase -templateName General_Purpose.dbc -gdbname CDB01 -sid CDB02 -createAsContainerDatabase true -numberofPDBs 0 -useLocalUndoForPDBS true -responseFile NO_VALUE -totalMemory 1800 -sysPassword welcome1 -systemPassword welcome1 -pdbAdminPassword welcome1 -enableArchive true -recoveryAreaDestination /u01/app/oracle/databases/recovery_area/CDB01 -recoveryAreaSize 1500 -datafileDestination /u01/app/oracle/databases/datafiles/CDB01
#### Create PDB01 and Insert Some Data
create pluggable database PDB01 admin user adminpdb01 identified by welcome1 roles=(CONNECT) CREATE_FILE_DEST='/u01/app/oracle/databases/datafiles/PDB01'; alter pluggable database PDB01 open;
#### Generate Data via Toad
Create some tables as you wish and use toad to insert data
Toad > Administrator > Import Data > Generate Data
sqlplus as sysdba connect [email protected] as sysdba Enter password:
### Grant Create PDB Privilege to the user which you will use.. I used system in lab
grant create pluggable database to system;
Grant succeeded.
Note : Until this point you should have PDB01 in CDB01 Database with some data populated into tables
sqlplus system/welcome1 as sysdba
alter session set container=PDB01;
select count(*) from scott.DEPT;
COUNT(*)
----------
12000
select count(*) from scott.emp;
COUNT(*)
----------
12000
#### Create CDB02 with no PDB
$ORACLE_HOME/bin/dbca -silent -createDatabase -templateName General_Purpose.dbc -gdbname CDB02 -sid CDB02 -createAsContainerDatabase true -numberofPDBs 0 -useLocalUndoForPDBS true -responseFile NO_VALUE -totalMemory 1800 -sysPassword welcome1 -systemPassword welcome1 -pdbAdminPassword welcome1 -enableArchive true -recoveryAreaDestination /u01/app/oracle/databases/recovery_area/CDB02 -recoveryAreaSize 1500 -datafileDestination /u01/app/oracle/databases/datafiles/CDB02
sqlplus system/welcome1 as sysdba select instance_name from v$instance; INSTANCE_NAME ---------------- CDB02
Create DB Link
Syntax : create pluggable database <NEW PDB NAME> from <SOURCEPDBNAMETOCLONE>@<DBLINKONTARGETTOSOURCE> refresh mode manual; alter session set db_create_file_dest='/u01/app/oracle/databases/datafiles/CDB02/PDB01_HOT_MAN'; create pluggable database PDB01_HOT_MAN from [email protected]_SOURCE_FOR_HOT_CLONE refresh mode manual; Pluggable database created. SQL>show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED --------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 PDB01_HOT_MAN MOUNTED alter pluggable database PDB01_HOT_MAN open read only; alter session set container=PDB01_HOT_MAN; Session altered. SQL> show con_name CON_NAME ------------------------------ PDB01_HOT_MAN col owner format a7 col object_name format a15 select owner,object_name from dba_objects where owner='SCOTT';SQL> SQL> OWNER OBJECT_NAME ------- --------------- SCOTT DEPT SCOTT EMP SCOTT EMP_BACKUP SCOTT DEPT_BACKUP
#### AFTER CLONE COUNT SIZE ###NOTE THAT HOT CLONE PDB STILL READ ONLY
select count(*) from scott.DEPT; COUNT(*) ---------- 12000 select count(*) from scott.emp; COUNT(*) ---------- 12000
### Insert New Rows into PDB01 in CDB01 Source
######WE WILL REFRESH PDB01_HOT_MAN and Check new 2000 Rows Updated ?
sqlplus system/welcome1 as sysdba select instance_name from v$instance; INSTANCE_NAME ---------------- CDB02 SQL> show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED ------ ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 PDB01_HOT_MAN READ ONLY NO alter pluggable database PDB01_HOT_MAN close; alter pluggable database PDB01_HOT_MAN refresh; alter pluggable database PDB01_HOT_MAN open read only; alter session set container=PDB01_HOT_MAN; select count(*) from scott.DEPT; COUNT(*) ---------- 14000 select count(*) from scott.DEPT; COUNT(*) ---------- 14000
892 views last month, 2 views today