Local Cloning
This a one of the easiest methods of creating a copy or a clone PDB from another PDB.
You create a clone of the PDB within the same CDB.
You need to be connected to the root container or application root when executing the command.
The basic command for cloning
This command will work if OMF is enabled else you will get the below error
create pluggable database ALPHA_PDB_CLONE from ALPHAPDB;
SQL Error: ORA-65016: FILE_NAME_CONVERT must be specified
65016. 00000 - "FILE_NAME_CONVERT must be specified"
*Cause: Data files, and possibly other files, needed to be copied as a
part of creating a pluggable database. However, Oracle Managed
Files (OMF) was not enabled, PDB_FILE_NAME_CONVERT was not defined,
and there was a failure to specify the FILE_NAME_CONVERT clause.
*Action: Enable OMF or define PDB_FILE_NAME_CONVERT system parameter before
issuing CREATE PLUGGABLE DATABASE statement, or specify
FILE_NAME_CONVERT clause as a part of the statement.
If OMF is not configured you can locally clone your database with the below command
using FILE_NAME_CONVERT parameter.
CREATE PLUGGABLE DATABASE ALPHA_PDB_CLONE
from ALPHAPDB_PLUG_NOCOPY
FILE_NAME_CONVERT=('D:\APP\ORACLE\ORADATA\ORCL\ORCLPDB3','D:\app\oracle\oradata\ALPHA\pdb_clone');
When the FILE_NAME_CONVERT parameter is specified the clone process will copy the files
of the source database to the clone db location. You can also clone a PDB using the DBCA command.
There is a feature to clone the database with only the metadata information and not actual data in the tables
using the NO DATA clause.
But when I have tried the below command, the new cloned database had the tables with their data included.
This needs to be further investigated.
create pluggable database ALPHA_PDB_CLONE
from ALPHAPDB_PLUG_NOCOPY
FILE_NAME_CONVERT=('D:\APP\ORACLE\ORADATA\ORCL\ORCLPDB3','D:\app\oracle\oradata\ALPHA\pdb_clone') NO DATA;
Remote cloning a PDB via a DB Link
When doing a remote cloning if you get any errors you can consider the following prerequisites that may be required for your cloning method
- The user in the local database must have the CREATE PLUGGABLE DATABASE privilege in the root container.
- The local database must have a database link to the remote database.
- If the remote database is a PDB, the database link can point to the remote CDB using a common user, or the PDB using a local or common user.
- The user in the remote database that the database link connects to must have the CREATE PLUGGABLE DATABASE, SESSION, and SYSOPER privilege.
- The local and remote databases must have the same endianness, options installed and character sets. The default tablespaces for each common user in the remote PDB *must* exist in local CDB. If this is not true, create the missing tablespaces in the root container of the local PDB. If you don''t do this your new PDB will only be able to open in restricted mode
- When cloning from a non-CDB, both the the local and remote databases must using version 12.1.0.2 or higher.
- The remote and local CDBs are in ARCHIVELOG mode.
SELECT log_mode FROM v$database;
- The remote CDB is in local undo mode.
- If the remote CDB is not in local undo mode, then the source PDB must be open in read-only mode.
SELECT PROPERTY_NAME, PROPERTY_VALUE
FROM DATABASE_PROPERTIES
WHERE PROPERTY_NAME = 'LOCAL_UNDO_ENABLED';
Remote database alpha from where to clone the PDB Database - ALPHA
PDB - ALPHAPDB3
Local User - PDB3HR
Path for database files - D:\APP\ORACLE\ORADATA\ALPHA\ALPHAPDB3
Local database on which to clone the remote PDB
Database - ORCL
PDB - ORCLPDB2
Local User - PDB2HR
Create the database link as ROOT CONTAINER connecting to a user on remote PDB
CREATE DATABASE LINK DBLINK_PDB3HR
CONNECT TO PDB3HR IDENTIFIED BY PDB3HR
USING 'ALPHAPDB3';
SELECT * FROM DUAL@PDB2HR_TO_PDB3HR;
On the local database
CREATE PLUGGABLE DATABASE orcl_pdb_rmt_cln FROM ALPHAPDB3@PDB2HR_TO_PDB3HR
FILE_NAME_CONVERT=('D:\APP\ORACLE\ORADATA\ALPHA\ALPHAPDB3', 'D:\APP\ORACLE\ORADATA\ORCL\ORCLRMTCLN');
In Oracle version 19.0.0.0 we get the below error when doing the remote cloning. As per https://oraclebptech.wordpress.com/2016/06/25/how-to-clone-local-pdb-from-remote-pdb-using-dblink/
In 12.1.0.1 we cannot clone local PDB from remote PDB using DBlink as we get the following error
“ORA-17628: Oracle error 19505 returned by remote Oracle server”. Oracle said this is bug in 12.1.0.1 and there is no work around on this.
SQL Error: ORA-17628: Oracle error 1031 returned by remote Oracle server
ORA-01031: insufficient privileges
17628. 00000 - "Oracle error %s returned by remote Oracle server"
*Cause: Oracle server on the remote instance has returned an error.
*Action: Look at remote instance alert log/trace file for more information
and take appropriate action or contact Oracle Support Services
for further assistance
Remote Cloning Using the DBCA cmd
TO clone ORCLPDB1 remotely on ALPHA DB using dblink and DBCA cmd
Container DB - ORCL
Pluggable DB - ORCLPDB1
Container DB - ALPHA
Pluggable DB - ORCLRMCLALPHA
dbca -silent -createPluggableDatabase -createFromRemotePDB -sourceDB ALPHA -remotePDBName ORCLPDB1 -remoteDBConnString DESKTOP-OJM4FS4:1521/ORCL -remoteDBSYSDBAUserName SYS -remoteDBSYSDBAUserPassword N0WayIn! -dbLinkUsername c##link_user -dbLinkUserPassword Oracle4U -sysDBAUserName SYS -sysDBAPassword N0WayIn! -pdbName ORCLRMCLALPHA -pdbDatafileDestination D:\app\oracle\oradata\ALPHA\ORCLRMCLALPHA;In Oracle version 19.0.0.0 we are getting the below error
Prepare for db operation 50% complete Create pluggable database using remote clone operation 100% complete [FATAL] [DBT-05505] Unable to execute sql script: (CREATE PLUGGABLE DATABASE ORCLRMCLALPHA FROM ORCLPDB1@ORCLRMCLALPHA_CLONE_LINK file_name_convert=('D:\APP\ORACLE\ORADATA\ORCL\ORCLPDB1','D:\app\oracle\oradata\ORCL\ORCLRMCLALPHA') ). Look at the log file "D:\app\oracle\Administrator\cfgtoollogs\dbca\alpha\ORCLRMCLALPHA\alpha0.log" for further details.
No comments:
Post a Comment