Migration of a single PDB or executing of a single PDB into another container database with minimal downtime. This method has zero impact to any remaining primary PDBs. To use this method the process takes advantage of a new functionality added to the Data Guard broker command line interface DGMGRL.
Important: The process are steps involve changes being made to 2 independent CDBs and is supported in Oracle RDBMS versions older than 12.1.0.2
The migration process overview
The destination CDBs are already in place and patched correctly, the entire process of moving the PDB can be completed in less than 15 minutes.
The New Data Guard broker command line interface DGMGRL that is used for this is :
The New Data Guard broker command line interface DGMGRL that is used for this is :
Oracle Data Guard Platform
The following is setup on one database server.
Data Guard environment orcl01
cat /etc/oratab cdb1:/u01/app/oracle/product/12.2.0/dbhome_1:N cdb2:/u01/app/oracle/product/12.2.0/dbhome_1:N cdb3:/u01/app/oracle/product/12.2.0/dbhome_1:N cdb4:/u01/app/oracle/product/12.2.0/dbhome_1:N
Data Guard environment orcl01
DGMGRL> show configuration verbose Configuration - orcl01 Protection Mode: MaxAvailability Members: orcl01 - Primary database orcl03 - Physical standby database Properties: FastStartFailoverThreshold = '30' OperationTimeout = '30' TraceLevel = 'USER' FastStartFailoverLagLimit = '30' CommunicationTimeout = '180' ObserverReconnect = '0' FastStartFailoverAutoReinstate = 'TRUE' FastStartFailoverPmyShutdown = 'TRUE' BystandersFollowRoleChange = 'ALL' ObserverOverride = 'FALSE' ExternalDestination1 = '' ExternalDestination2 = '' PrimaryLostWriteAction = 'CONTINUE' ConfigurationWideServiceName = 'orcl01_CFG' Fast-Start Failover: DISABLED Configuration Status: SUCCESS
Data Guard environment orcl02
DGMGRL> show configuration verbose Configuration - orcl02 Protection Mode: MaxAvailability Members: orcl04 - Primary database orcl02 - Physical standby database Properties: FastStartFailoverThreshold = '30' OperationTimeout = '30' TraceLevel = 'USER' FastStartFailoverLagLimit = '30' CommunicationTimeout = '180' ObserverReconnect = '0' FastStartFailoverAutoReinstate = 'TRUE' FastStartFailoverPmyShutdown = 'TRUE' BystandersFollowRoleChange = 'ALL' ObserverOverride = 'FALSE' ExternalDestination1 = '' ExternalDestination2 = '' PrimaryLostWriteAction = 'CONTINUE' ConfigurationWideServiceName = 'orcl02_CFG' Fast-Start Failover: DISABLED Configuration Status: SUCCESS
Step to perform the movement of the PDB from one CDB container to an other CDB container.
- Stop all services on both the source primary database and any standby database(s)
- If using Active Data Guard mode, Validate if patch 25616359 is applied, and if not then close the PDB on all instances of those standbys
- Start dgmgrl, important connect as SYSDBA to the environment, not SYSDG
dgmgrl "sys/oracle@//oel7/orcl01_cfg/cdb1" as sysdba DGMGRL for Linux: Release 12.2.0.1.0 - Production on Mon Oct 1 02:42:14 2018 Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved. Welcome to DGMGRL, type "help" for information. Connected to "orcl01" Connected as SYSDBA. DGMGRL> show configuration Configuration - orcl01 Protection Mode: MaxAvailability Members: orcl01 - Primary database orcl03 - Physical standby database Fast-Start Failover: DISABLED Configuration Status: SUCCESS (status updated 55 seconds ago)
- Use the MIGRATE command withing the dgmgrl
DGMGRL > migrate pluggable database joord01 to container orcl04 using '/home/oracle/app/pdb/joord01/pdb.xml' connect as sys@"oel7/orcl02_cfg/orcl04"
- DGMGRL Command output
DGMGRL> migrate pluggable database joord01 to container orcl04 using '/home/oracle/app/pdb/joord01/pdb.xml' connect as sys@"oel7/orcl02_cfg/orcl04" Password: Connected to "orcl04" Connected as SYSDBA. Beginning migration of pluggable database JOORD01. Source multitenant container database is orcl01. Destination multitenant container database is orcl04. Closing pluggable database JOORD01 on all instances of multitenant container database orcl01. Unplugging pluggable database JOORD01 from multitenant container database orcl01. Pluggable database description will be written to /home/oracle/app/pdb/joord01/pdb.xml. Dropping pluggable database JOORD01 from multitenant container database orcl01. Creating pluggable database JOORD01 on multitenant container database orcl04. Opening pluggable database JOORD01 on all instances of multitenant container database orcl04. Succeeded.
- Once the command completes perform the following tasks
- Add service for the PDB desired and start the services
- Backup the PDB
Done not use the pdb archive file in the command. For this the the file name extension is changed from xml. to pdb.
/home/oracle/app/pdb/joord01/pdb.xml to /home/oracle/app/pdb/joord01/pdb.pdb
pdb_unplug_clause
- If you specify a file name that ends with the extension .pdb, then Oracle creates a .pdb archive file. This is a compressed file that includes an XML file containing metadata about the PDB, as well as the PDB's data files. You can then copy this single archive file to a new location and specify the archive file name when plugging the PDB into a CDB. This eliminates having to copy the PDB's data files separately. When you use a .pdb archive file when plugging in a PDB, this file is extracted when you plug in the PDB, and the PDB’s files are placed in the same directory as the .pdb archive file.
This will give an Oracle Dataguard error.
Dropping pluggable database JOORD01 from multitenant container database orcl04.
Creating pluggable database JOORD01 on multitenant container database orcl01.ORA-65314: cannot use NOCOPY when plugging in a PDB using an archive file
Creating pluggable database JOORD01 on multitenant container database orcl01.ORA-65314: cannot use NOCOPY when plugging in a PDB using an archive file
Information:
Perfect guide on DGMGRL migrate, thanks!
ReplyDelete