Visit Counter
Tuesday, November 26, 2013
Monday, November 25, 2013
Thursday, November 21, 2013
Oracle 12c Database Online Move Datafile
Prior to Oracle 12c, if you wanted to move a database’s file, you either had to shutdown the database, or take the datafile/tablespace offline. Here is an example of the steps you might take
SQL> ALTER TABLESPACE test OFFLINE;
SQL> !mv /ora/test1/test01.dbf /ora/test2/test01.dbf
SQL> ALTER DATABASE RENAME FILE ‘/ora/test1/test01' TO ‘/ora/test2/test01.dbf’;
SQL>ALTER TABLESPACE test ONLINE;
[oracle@oracle12c bin]$ export ORACLE_SID=cdb1
[oracle@oracle12c bin]$ pwd
/ora/oracle/app/oracle/product/12.1.0/dbhome_1/bin
[oracle@oracle12c bin]$ ./sqlplus /nolog
SQL*Plus: Release 12.1.0.1.0 Production on Fri 6 Sept 22 01:38:02 2013
Copyright (c) 1982, 2013, Oracle. All rights reserved.
SQL> conn / as sysdba
Connected.
SQL> show con_name
CON_NAME
------------------------------
CDB$ROOT
SQL> alter session set container=pdb1;
Session altered.
SQL> show pdbs;
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
3 PDB1 READ WRITE NO
SQL> select file_name from dba_data_Files;
FILE_NAME
--------------------------------------------------------------------------------
/ora/oracle/app/oracle/oradata/cdb1/pdb1/system01.dbf
/ora/oracle/app/oracle/oradata/cdb1/pdb1/sysaux01.dbf
/ora/oracle/app/oracle/oradata/cdb1/pdb1/pdb1_users01.dbf
SQL> show con_name
CON_NAME
------------------------------
PDB1
SQL> select tablespace_name from dba_data_Files;
TABLESPACE_NAME
------------------------------
SYSTEM
SYSAUX
USERS
Creating Tablespace user_data
Creating Tablespace user_data
SQL> create tablespace user_dat
2 datafile '/ora/oracle/app/oracle/oradata/cdb1/pdb1/userdat.dbf'
3 size 1g;
Tablespace created.
SQL> select tablespace_name from dba_data_files;
TABLESPACE_NAME
------------------------------
SYSTEM
SYSAUX
USERS
USER_DAT
Inserting Rows in test table
SQL> create table system.test(id number) tablespace user_dat;
Table created.
SQL> insert into system.test values(05);
1 row created.
SQL> commit;
Commit complete.
Move Tablespace datafile to another location
Move Tablespace datafile to another location
SQL> alter database move datafile
2 '/ora/oracle/app/oracle/oradata/cdb1/pdb1/userdat.dbf' to
3 '/ora/oracle/app/oracle/oradata/cdb1/movefile/userdat.dbf';
Database altered.
SQL> insert into system.test values(20);
1 row created.
SQL> commit;
Commit complete.
SQL> select * from system.test;
ID
----------
5
20
SQL> exit
Disconnected from Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
[oracle@oracle12c bin]$ pwd
/ora/oracle/app/oracle/product/12.1.0/dbhome_1/bin
oracle@oracle12c bin]$ cd /
oracle@oracle12c cdb1]$ ls
control01.ctl pdb1.xml pdbseed redo03.log temp01.dbf
movefile pdb2 redo01.log sysaux01.dbf undotbs01.dbf
pdb1 pdb3 redo02.log system01.dbf users01.dbf
oracle@oracle12c cdb1]$ cd movefile
oracle@oracle12c movefile]$ pwd
/ora/oracle/app/oracle/oradata/cdb1/movefile
oracle@oracle12c movefile]$ ls
userdat.dbf
[oracle@oracle12c movefile]$ cd ..
[oracle@oracle12c cdb1]$ cd pdb1
[oracle@oracle12c pdb1]$ ls
pdb1_users01.dbf
sysaux01.dbf
system01.dbf
temp01.dbf
Wednesday, November 20, 2013
Migrate a Non-Container Database (CDB) to a Pluggable Database (PDB) in Oracle Database 12c
Migrate a Non-Container DB (CDB) to PDB
Container DB: CDB2
Non-PDB: PDB7
Shutdown the non-CDB and start it in read-only mode.
$ export ORACLE_SID=pdb7
$ sqlplus / as sysdba
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup open read only;
ORACLE instance started.
Total System Global Area 835104768 bytes
Fixed Size 2293880 bytes
Variable Size 595595144 bytes
Database Buffers 234881024 bytes
Redo Buffers 2334720 bytes
Database mounted.
Database opened.
This procedure creates an XML file in the same way that the unplug operation does for a PDB.
SQL>
SQL> begin
2 DBMS_PDB.DESCRIBE(
3 pdb_descr_file => '/tmp/db12c.xml');
4 end;
5 /
PL/SQL procedure successfully completed.
Shutdown the non-CDB database.
Database dismounted.
ORACLE instance shut down.
SQL> startup open read only;
ORACLE instance started.
Total System Global Area 835104768 bytes
Fixed Size 2293880 bytes
Variable Size 595595144 bytes
Database Buffers 234881024 bytes
Redo Buffers 2334720 bytes
Database mounted.
Database opened.
This procedure creates an XML file in the same way that the unplug operation does for a PDB.
SQL>
SQL> begin
2 DBMS_PDB.DESCRIBE(
3 pdb_descr_file => '/tmp/db12c.xml');
4 end;
5 /
PL/SQL procedure successfully completed.
Shutdown the non-CDB database.
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL>
SQL> exit
Disconnected from Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
$ oracle@oracle12c bin]$ export ORACLE_SID=cdb2
$ oracle@oracle12c bin]$ ./sqlplus / as sysdba
SQL*Plus: Release 12.1.0.1.0 Production on SEPT 21 01:15:21 2013
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connect to an existing CDB and create a new PDB using the file describing the non-CDB database. Remember to configure the
FILE_NAME_CONVERT
parameter to convert the existing files to the new location.SQL> create pluggable database pdb7 using '/tmp/db12c.xml'
2 copy
3 file_name_convert = ('/ora/oracle/app/oracle/oradata/pdb7/','/ora/oracle/app/oracle/oradata/cdb2/pdb7/');
Pluggable database created.
System altered.
Switch to the PDB container and run the "$ORACLE_HOME/rdbms/admin/noncdb_to_pdb.sql" script to clean up the new PDB, removing any items that should not be present in a PDB. You can see an example of the output produced by this script here.
SQL> alter session set container = pdb7;
Session altered.
SQL>@ORACLE_HOME/rdbms/admin/noncdb_to_pdb.sql
..........
...........
SQL> -- leave the PDB in the same state it was when we started
SQL> BEGIN
2 execute immediate '&open_sql &restricted_state';
3 EXCEPTION
4 WHEN OTHERS THEN
5 BEGIN
6 IF (sqlcode <> -900) THEN
7 RAISE;
8 END IF;
9 END;
10 END;
11 /
PL/SQL procedure successfully completed.
SQL>
SQL> WHENEVER SQLERROR CONTINUE;
Startup the PDB and check the open mode.
SQL> alter session set container=pdb7;
Session altered.
SQL> alter pluggable database open;
Pluggable database altered.
SQL> select name,open_mode from v$pdbs;
NAME OPEN_MODE
------------------------------ ------------------------
PDB7 READ WRITE
1 row selected.
NcFTP Client for copying files to remote location
http://www.ncftp.com/ncftp/
Download ncftp client
# vi xyz.sh
cd /ncftp-3.2.4/bin
./ncftpput -DD -u admin -p xyz123 192.0.0.120 /Archivelog1 /ora_temp/archive1/*.dbf
Username: admin
Password: xyz123
Remotely Location IP: 192.0.0.120
Remotely Folder: Archivelog1
host Location Folder: /ora_temp/archive1
Sunday, November 17, 2013
Connecting to Container Databases (CDB) and Pluggable Databases (PDB) in Oracle Database 12c R.1
Connecting to Container Databases (CDB) and Pluggable Databases (PDB)
$ export ORACLE_SID=cdb1
$ sqlplus / as sysdba
SQL*Plus: Release 12.1.0.1.0 Production on Sat 17 15:20:10 2013
Copyright (c) 1982, 2013, Oracle. All rigths reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
with the partitioning, OLAP, Advance Analytics and real Application Testing options
SQL>
Switching Between Containers:
SQL> ALTER SESSION SET CONTAINER = pdb1;
session altered.
SQL> SHOW con_name
CON_NAME
---------------------------------
PDB1
SQL> ALTER SESSION SET container = cdb$root;
Session Altered.
SQL> SHOW CON_NAME
CON_NAME
-----------------------------
CDB$ROOT
$ export ORACLE_SID=cdb1
$ sqlplus / as sysdba
SQL*Plus: Release 12.1.0.1.0 Production on Sat 17 15:20:10 2013
Copyright (c) 1982, 2013, Oracle. All rigths reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
with the partitioning, OLAP, Advance Analytics and real Application Testing options
SQL>
Switching Between Containers:
SQL> ALTER SESSION SET CONTAINER = pdb1;
session altered.
SQL> SHOW con_name
CON_NAME
---------------------------------
PDB1
SQL> ALTER SESSION SET container = cdb$root;
Session Altered.
SQL> SHOW CON_NAME
CON_NAME
-----------------------------
CDB$ROOT
Connecting to a Pluggable Database (PDB):
SQL> conn sys/xyz55555@localhost:1521/pdb1 as sysdba
Connected.
SQL> show con_name
CON_NAME
------------------------------
PDB1
Displaying the Current Container:
The
SHOW CON_NAME
command in SQL*Plus displays the current container name.
SQL> show con_name
CON_NAME
-------------------------------------------------
CDB$ROOT
retrieved using the
SYS_CONTEXT
function.
SQL> SELECT SYS_CONTEXT('USERENV','CON_NAME')
FROM DUAL;
SYS_CONTEXT('USERENV','CON_NAME')
-----------------------------------------------------------------------
CDB$ROOT
Oracle RMAN Hot backup Script
#!/bin/sh
# $Header: hot_database_backup.sh,v 1.2 2002/08/06 23:51:42 $
#
#bcpyrght
#***************************************************************************
#* $VRTScprght: Copyright 1993 - 2007 Symantec Corporation, All Rights Reserved $ *
#***************************************************************************
#ecpyrght
#
# ---------------------------------------------------------------------------
# hot_database_backup.sh
# ---------------------------------------------------------------------------
# This script uses Recovery Manager to take a hot (inconsistent) database
# backup. A hot backup is inconsistent because portions of the database are
# being modified and written to the disk while the backup is progressing.
# You must run your database in ARCHIVELOG mode to make hot backups. It is
# assumed that this script will be executed by user root. In order for RMAN
# to work properly we switch user (su -) to the oracle dba account before
# execution. If this script runs under a user account that has Oracle dba
# privilege, it will be executed using this user's account.
# ---------------------------------------------------------------------------
# ---------------------------------------------------------------------------
# Determine the user which is executing this script.
# ---------------------------------------------------------------------------
CUSER=`id |cut -d"(" -f2 | cut -d ")" -f1`
# ---------------------------------------------------------------------------
# Put output in <this file name>.out. Change as desired.
# Note: output directory requires write permission.
# ---------------------------------------------------------------------------
RMAN_LOG_FILE=${0}.out
# ---------------------------------------------------------------------------
# You may want to delete the output file so that backup information does
# not accumulate. If not, delete the following lines.
# ---------------------------------------------------------------------------
if [ -f "$RMAN_LOG_FILE" ]
then
rm -f "$RMAN_LOG_FILE"
fi
# -----------------------------------------------------------------
# Initialize the log file.
# -----------------------------------------------------------------
echo >> $RMAN_LOG_FILE
chmod 666 $RMAN_LOG_FILE
# ---------------------------------------------------------------------------
# Log the start of this script.
# ---------------------------------------------------------------------------
echo Script $0 >> $RMAN_LOG_FILE
echo ==== started on `date` ==== >> $RMAN_LOG_FILE
echo >> $RMAN_LOG_FILE
# ---------------------------------------------------------------------------
# Replace /db/oracle/product/ora81, below, with the Oracle home path.
# ---------------------------------------------------------------------------
#ORACLE_HOME=/db/oracle/product/ora81
ORACLE_HOME=/ora/crs/oracle/product/10/app
export ORACLE_HOME
# ---------------------------------------------------------------------------
# Replace ora81, below, with the Oracle SID of the target database.
# ---------------------------------------------------------------------------
#ORACLE_SID=ora81
ORACLE_SID=test
export ORACLE_SID
# ---------------------------------------------------------------------------
# Replace ora81, below, with the Oracle DBA user id (account).
# ---------------------------------------------------------------------------
#ORACLE_USER=ora81
ORACLE_USER=oracle
# ---------------------------------------------------------------------------
# Set the target connect string.
# Replace "sys/manager", below, with the target connect string.
# ---------------------------------------------------------------------------
#TARGET_CONNECT_STR=sys/manager
TARGET_CONNECT_STR=sys/oracle
# ---------------------------------------------------------------------------
# Set the Oracle Recovery Manager name.
# ---------------------------------------------------------------------------
RMAN=$ORACLE_HOME/bin/rman
# ---------------------------------------------------------------------------
# Print out the value of the variables set by this script.
# ---------------------------------------------------------------------------
echo >> $RMAN_LOG_FILE
echo "RMAN: $RMAN" >> $RMAN_LOG_FILE
echo "ORACLE_SID: $ORACLE_SID" >> $RMAN_LOG_FILE
echo "ORACLE_USER: $ORACLE_USER" >> $RMAN_LOG_FILE
echo "ORACLE_HOME: $ORACLE_HOME" >> $RMAN_LOG_FILE
# ---------------------------------------------------------------------------
# Print out the value of the variables set by bphdb.
# ---------------------------------------------------------------------------
echo >> $RMAN_LOG_FILE
echo "NB_ORA_FULL: $NB_ORA_FULL" >> $RMAN_LOG_FILE
echo "NB_ORA_INCR: $NB_ORA_INCR" >> $RMAN_LOG_FILE
echo "NB_ORA_CINC: $NB_ORA_CINC" >> $RMAN_LOG_FILE
echo "NB_ORA_SERV: $NB_ORA_SERV" >> $RMAN_LOG_FILE
set NB_ORA_POLICY Oracle_ssaerp_hot
NB_ORA_POLICY=Oracle_test_hot;export NB_ORA_POLICY
echo "NB_ORA_POLICY: $NB_ORA_POLICY" >> $RMAN_LOG_FILE
# ---------------------------------------------------------------------------
# NOTE: This script assumes that the database is properly opened. If desired,
# this would be the place to verify that.
# ---------------------------------------------------------------------------
echo >> $RMAN_LOG_FILE
# ---------------------------------------------------------------------------
# If this script is executed from a NetBackup schedule, NetBackup
# sets an NB_ORA environment variable based on the schedule type.
# The NB_ORA variable is then used to dynamically set BACKUP_TYPE
# For example, when:
# schedule type is BACKUP_TYPE is
# ---------------- --------------
# Automatic Full INCREMENTAL LEVEL=0
# Automatic Differential Incremental INCREMENTAL LEVEL=1
# Automatic Cumulative Incremental INCREMENTAL LEVEL=1 CUMULATIVE
#
# For user initiated backups, BACKUP_TYPE defaults to incremental
# level 0 (full). To change the default for a user initiated
# backup to incremental or incremental cumulative, uncomment
# one of the following two lines.
# BACKUP_TYPE="INCREMENTAL LEVEL=1"
# BACKUP_TYPE="INCREMENTAL LEVEL=1 CUMULATIVE"
#
# Note that we use incremental level 0 to specify full backups.
# That is because, although they are identical in content, only
# the incremental level 0 backup can have incremental backups of
# level > 0 applied to it.
# ---------------------------------------------------------------------------
if [ "$NB_ORA_FULL" = "1" ]
then
echo "Full backup requested" >> $RMAN_LOG_FILE
BACKUP_TYPE="INCREMENTAL LEVEL=0"
elif [ "$NB_ORA_INCR" = "1" ]
then
echo "Differential incremental backup requested" >> $RMAN_LOG_FILE
BACKUP_TYPE="INCREMENTAL LEVEL=1"
elif [ "$NB_ORA_CINC" = "1" ]
then
echo "Cumulative incremental backup requested" >> $RMAN_LOG_FILE
BACKUP_TYPE="INCREMENTAL LEVEL=1 CUMULATIVE"
elif [ "$BACKUP_TYPE" = "" ]
then
echo "Default - Full backup requested" >> $RMAN_LOG_FILE
BACKUP_TYPE="INCREMENTAL LEVEL=0"
fi
# ---------------------------------------------------------------------------
# Call Recovery Manager to initiate the backup. This example does not use a
# Recovery Catalog. If you choose to use one, replace the option 'nocatalog'
# from the rman command line below with the
# 'rcvcat <userid>/<passwd>@<tns alias>' statement.
#
# Note: Any environment variables needed at run time by RMAN
# must be set and exported within the switch user (su) command.
# ---------------------------------------------------------------------------
# Backs up the whole database. This backup is part of the incremental
# strategy (this means it can have incremental backups of levels > 0
# applied to it).
#
# We do not need to explicitly request the control file to be included
# in this backup, as it is automatically included each time file 1 of
# the system tablespace is backed up (the inference: as it is a whole
# database backup, file 1 of the system tablespace will be backed up,
# hence the controlfile will also be included automatically).
#
# Typically, a level 0 backup would be done at least once a week.
#
# The scenario assumes:
# o you are backing your database up to two tape drives
# o you want each backup set to include a maximum of 5 files
# o you wish to include offline datafiles, and read-only tablespaces,
# in the backup
# o you want the backup to continue if any files are inaccessible.
# o you are not using a Recovery Catalog
# o you are explicitly backing up the control file. Since you are
# specifying nocatalog, the controlfile backup that occurs
# automatically as the result of backing up the system file is
# not sufficient; it will not contain records for the backup that
# is currently in progress.
# o you want to archive the current log, back up all the
# archive logs using two channels, putting a maximum of 20 logs
# in a backup set, and deleting them once the backup is complete.
#
# Note that the format string is constructed to guarantee uniqueness and
# to enhance NetBackup for Oracle backup and restore performance.
#
#
# NOTE WHEN USING TNS ALIAS: When connecting to a database
# using a TNS alias, you must use a send command or a parms operand to
# specify environment variables. In other words, when accessing a database
# through a listener, the environment variables set at the system level are not
# visible when RMAN is running. For more information on the environment
# variables, please refer to the NetBackup for Oracle Admin. Guide.
#
# ---------------------------------------------------------------------------
CMD_STR="
ORACLE_HOME=$ORACLE_HOME
export ORACLE_HOME
ORACLE_SID=$ORACLE_SID
export ORACLE_SID
$RMAN target $TARGET_CONNECT_STR rcvcat rman/rman123@cattest msglog $RMAN_LOG_FILE append << EOF
RUN {
ALLOCATE CHANNEL ch00 TYPE 'SBT_TAPE';
ALLOCATE CHANNEL ch01 TYPE 'SBT_TAPE';
SEND 'NB_ORA_SERV=backupserver, NB_ORA_CLIENT=lh-ora-rs, NB_ORA_POLICY=Oracle_test_hot';
BACKUP
$BACKUP_TYPE
SKIP INACCESSIBLE
TAG hot_db_bk_level0
FILESPERSET 5
# recommended format
FORMAT 'bk_%s_%p_%t'
DATABASE;
sql 'alter system archive log current';
RELEASE CHANNEL ch00;
RELEASE CHANNEL ch01;
# backup all archive logs
ALLOCATE CHANNEL ch00 TYPE 'SBT_TAPE';
ALLOCATE CHANNEL ch01 TYPE 'SBT_TAPE';
SEND 'NB_ORA_SERV=backupserver-baan, NB_ORA_CLIENT=lh-ora-rs, NB_ORA_POLICY=Oracle_test_hot';
BACKUP
filesperset 20
FORMAT 'al_%s_%p_%t'
#ARCHIVELOG ALL;
ARCHIVELOG ALL NOT BACKED UP 1 TIMES;
DELETE NOPROMPT ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';
RELEASE CHANNEL ch00;
RELEASE CHANNEL ch01;
#Tell to backup all archive logs that haven't backed up one time
#prevents from backing up more then once to
#BACKUP ARCHIVELOG ALL NOT BACKED UP 1 TIMES;
#Delete archive log more than 7 days old.
#DELETE ARCHIVE ALL COMPLETED AFTER SYSDATE-7;
#
# Note: During the process of backing up the database, RMAN also backs up the
# control file. This version of the control file does not contain the
# information about the current backup because "nocatalog" has been specified.
# To include the information about the current backup, the control file should
# be backed up as the last step of the RMAN section. This step would not be
# necessary if we were using a recovery catalog.
#
ALLOCATE CHANNEL ch00 TYPE 'SBT_TAPE';
SEND 'NB_ORA_SERV=backupserver-baan, NB_ORA_CLIENT=lh-ora-rs, NB_ORA_POLICY=Oracle_ssaerp_hot';
BACKUP
# recommended format
FORMAT 'cntrl_%s_%p_%t'
CURRENT CONTROLFILE;
RELEASE CHANNEL ch00;
}
EOF
"
# Initiate the command string
if [ "$CUSER" = "root" ]
then
su - $ORACLE_USER -c "$CMD_STR" >> $RMAN_LOG_FILE
RSTAT=$?
else
/usr/bin/sh -c "$CMD_STR" >> $RMAN_LOG_FILE
RSTAT=$?
fi
# ---------------------------------------------------------------------------
# Log the completion of this script.
# ---------------------------------------------------------------------------
if [ "$RSTAT" = "0" ]
then
LOGMSG="ended successfully"
else
LOGMSG="ended in error"
fi
echo >> $RMAN_LOG_FILE
echo Script $0 >> $RMAN_LOG_FILE
echo ==== $LOGMSG on `date` ==== >> $RMAN_LOG_FILE
echo >> $RMAN_LOG_FILE
exit $RSTAT
Duplicate Database Using RMAN
Recovery Manager: Release 10.2.0.2.0 - Production on Thu 01 Apr 14:35:00 2010
Copyright (c) 1982, 2005, Oracle. All rights reserved.
connected to auxiliary database: ORADUP (not mounted)
channel ORA_AUX_DISK_1: sid=156 devtype=DISK
contents of Memory Script:
"/home/oracle/oracle/product/10.2.0/db_2/oradata/oradup/system01.dbf";
set newname for datafile 2 to
"/home/oracle/oracle/product/10.2.0/db_2/oradata/oradup/undotbs01.dbf";
set newname for datafile 3 to
"/home/oracle/oracle/product/10.2.0/db_2/oradata/oradup/sysaux01.dbf";
set newname for datafile 4 to
"/home/oracle/oracle/product/10.2.0/db_2/oradata/oradup/users01.dbf";
set newname for datafile 5 to
"/home/oracle/oracle/product/10.2.0/db_2/oradata/oradup/example01.dbf";
restore
check readonly
clone database
;
}
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
channel ORA_AUX_DISK_1: starting datafile backupset restore
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
restoring datafile 00001 to /home/oracle/oracle/product/10.2.0/db_2/oradata/oradup/system01.dbf
restoring datafile 00002 to /home/oracle/oracle/product/10.2.0/db_2/oradata/oradup/undotbs01.dbf
restoring datafile 00003 to /home/oracle/oracle/product/10.2.0/db_2/oradata/oradup/sysaux01.dbf
restoring datafile 00004 to /home/oracle/oracle/product/10.2.0/db_2/oradata/oradup/users01.dbf
restoring datafile 00005 to /home/oracle/oracle/product/10.2.0/db_2/oradata/oradup/example01.dbf
channel ORA_AUX_DISK_1: reading from backup piece /home/oracle/flash_recovery_area/ORASOFT/backupset/2010-04-
01/o1_mf_nnndf_TAG20120522T131351_7vpsq0ls_.bkp
channel ORA_AUX_DISK_1: restored backup piece 1
piece handle=/home/oracle/flash_recovery_area/ORASOFT/backupset/2010_04_01/o1_mf_nnndf_TAG2010522T131351_7vpsq0ls_.bkp tag=TAG20100401T131351
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:36
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
contents of Memory Script:
$ rman target sys/pwd@orasoft nocatalog
auxiliary /
Recovery Manager: Release 10.2.0.2.0 - Production on Thu 01 Apr 14:35:00 2010
Copyright (c) 1982, 2005, Oracle. All rights reserved.
connected to target database: ORASOFT
(DBID=3746996829)
using target database control file
instead of recovery catalogconnected to auxiliary database: ORADUP (not mounted)
RMAN> duplicate target database to
oradup
2>
pfile='/home/oracle/oracle/product/10.2.0/db_2/dbs/initdup.ora';
Starting Duplicate Db at 01-APR-10
allocated channel: ORA_AUX_DISK_1channel ORA_AUX_DISK_1: sid=156 devtype=DISK
contents of Memory Script:
{
set until scn 796992;
set newname for datafile 1 to"/home/oracle/oracle/product/10.2.0/db_2/oradata/oradup/system01.dbf";
set newname for datafile 2 to
"/home/oracle/oracle/product/10.2.0/db_2/oradata/oradup/undotbs01.dbf";
set newname for datafile 3 to
"/home/oracle/oracle/product/10.2.0/db_2/oradata/oradup/sysaux01.dbf";
set newname for datafile 4 to
"/home/oracle/oracle/product/10.2.0/db_2/oradata/oradup/users01.dbf";
set newname for datafile 5 to
"/home/oracle/oracle/product/10.2.0/db_2/oradata/oradup/example01.dbf";
restore
check readonly
clone database
;
}
executing Memory Script
executing command: SET until clauseexecuting command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
Starting restore at 01-APR-10
using channel ORA_AUX_DISK_1channel ORA_AUX_DISK_1: starting datafile backupset restore
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
restoring datafile 00001 to /home/oracle/oracle/product/10.2.0/db_2/oradata/oradup/system01.dbf
restoring datafile 00002 to /home/oracle/oracle/product/10.2.0/db_2/oradata/oradup/undotbs01.dbf
restoring datafile 00003 to /home/oracle/oracle/product/10.2.0/db_2/oradata/oradup/sysaux01.dbf
restoring datafile 00004 to /home/oracle/oracle/product/10.2.0/db_2/oradata/oradup/users01.dbf
restoring datafile 00005 to /home/oracle/oracle/product/10.2.0/db_2/oradata/oradup/example01.dbf
channel ORA_AUX_DISK_1: reading from backup piece /home/oracle/flash_recovery_area/ORASOFT/backupset/2010-04-
01/o1_mf_nnndf_TAG20120522T131351_7vpsq0ls_.bkp
channel ORA_AUX_DISK_1: restored backup piece 1
piece handle=/home/oracle/flash_recovery_area/ORASOFT/backupset/2010_04_01/o1_mf_nnndf_TAG2010522T131351_7vpsq0ls_.bkp tag=TAG20100401T131351
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:36
Finished restore at 01-APR-10
sql statement: CREATE CONTROLFILE REUSE
SET DATABASE "ORADUP" RESETLOGS ARCHIVELOG
MAXLOGFILES 16MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 (
'//home/oracle/oracle/product/10.2.0/db_2/oradata/oradup/redo01.log'
) SIZE 50 M REUSE,
GROUP 2 (
'//home/oracle/oracle/product/10.2.0/db_2/oradata/oradup/redo02.log'
) SIZE 50 M REUSE,
GROUP 3 (
'//home/oracle/oracle/product/10.2.0/db_2/oradata/oradup/redo03.log'
) SIZE 50 M REUSE
DATAFILE
'/home/oracle/oracle/product/10.2.0/db_2/oradata/oradup/system01.dbf'
CHARACTER SET WE8ISO8859P1
contents of Memory Script:
{
switch clone datafile all;
}
executing Memory Script
released channel: ORA_AUX_DISK_1
datafile 2 switched to datafile copy
input datafile copy recid=1
stamp=783959863
filename=/home/oracle/oracle/product/10.2.0/db_2/oradata/oradup/undotbs01.dbf
datafile 3 switched to datafile copy
input datafile copy recid=2
stamp=783959863
filename=/home/oracle/oracle/product/10.2.0/db_2/oradata/oradup/sysaux01.dbf
datafile 4 switched to datafile copy
input datafile copy recid=3
stamp=783959863
filename=/home/oracle/oracle/product/10.2.0/db_2/oradata/oradup/users01.dbf
datafile 5 switched to datafile copy
input datafile copy recid=4
stamp=783959863
filename=/home/oracle/oracle/product/10.2.0/db_2/oradata/oradup/example01.dbf
contents of Memory Script:
{
set until scn 796992;
recover
clone database
delete archivelog
;
}
executing Memory Script
executing command: SET until clause
Starting recover at 01-APR-10
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: sid=159
devtype=DISK
starting media recovery
archive log thread 1 sequence 3 is
already on disk as file /home/oracle/archiev1/1_3_783781354.dbf
archive log
filename=/home/oracle/archiev1/1_3_783781354.dbf thread=1 sequence=3
media recovery complete, elapsed time:
00:00:01
Finished recover at 01-APR-10
contents of Memory Script:
{
shutdown clone;
startup clone nomount pfile=
'/home/oracle/oracle/product/10.2.0/db_2/dbs/initdup.ora';
}
executing Memory Script
database dismounted
Oracle instance shut down
connected to auxiliary database (not
started)
Oracle instance started
Total System Global Area 608174080
bytes
Fixed Size 1281624
bytes
Variable Size 163578280
bytes
Database Buffers 436207616
bytes
Redo Buffers 7106560
bytes
sql statement: CREATE CONTROLFILE REUSE
SET DATABASE "ORADUP" RESETLOGS ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 (
'//home/oracle/oracle/product/10.2.0/db_2/oradata/oradup/redo01.log'
) SIZE 50 M REUSE,
GROUP 2 (
'//home/oracle/oracle/product/10.2.0/db_2/oradata/oradup/redo02.log'
) SIZE 50 M REUSE,
GROUP 3 (
'//home/oracle/oracle/product/10.2.0/db_2/oradata/oradup/redo03.log'
) SIZE 50 M REUSE
DATAFILE
'/home/oracle/oracle/product/10.2.0/db_2/oradata/oradup/system01.dbf'
CHARACTER SET WE8ISO8859P1
contents of Memory Script:
{
set newname for tempfile 1 to
"/home/oracle/oracle/product/10.2.0/db_2/oradata/oradup/temp01.dbf";
switch clone tempfile all;
catalog clone datafilecopy
"/home/oracle/oracle/product/10.2.0/db_2/oradata/oradup/undotbs01.dbf";
catalog clone datafilecopy
"/home/oracle/oracle/product/10.2.0/db_2/oradata/oradup/sysaux01.dbf";
catalog clone datafilecopy
"/home/oracle/oracle/product/10.2.0/db_2/oradata/oradup/users01.dbf";
catalog clone datafilecopy
"/home/oracle/oracle/product/10.2.0/db_2/oradata/oradup/example01.dbf";
switch clone datafile all;
}
executing Memory Script
executing command: SET NEWNAME
renamed temporary file 1 to
/home/oracle/oracle/product/10.2.0/db_2/oradata/oradup/temp01.dbf in
control file
cataloged datafile copy
datafile copy
filename=/home/oracle/oracle/product/10.2.0/db_2/oradata/oradup/undotbs01.dbf
recid=1 stamp=783959877
cataloged datafile copy
datafile copy
filename=/home/oracle/oracle/product/10.2.0/db_2/oradata/oradup/sysaux01.dbf
recid=2 stamp=783959877
cataloged datafile copy
datafile copy
filename=/home/oracle/oracle/product/10.2.0/db_2/oradata/oradup/users01.dbf
recid=3 stamp=783959877
cataloged datafile copy
datafile copy
filename=/home/oracle/oracle/product/10.2.0/db_2/oradata/oradup/example01.dbf
recid=4 stamp=783959877
datafile 2 switched to datafile copy
input datafile copy recid=1
stamp=783959877
filename=/home/oracle/oracle/product/10.2.0/db_2/oradata/oradup/undotbs01.dbf
datafile 3 switched to datafile copy
input datafile copy recid=2
stamp=783959877
filename=/home/oracle/oracle/product/10.2.0/db_2/oradata/oradup/sysaux01.dbf
datafile 4 switched to datafile copy
input datafile copy recid=3
stamp=783959877
filename=/home/oracle/oracle/product/10.2.0/db_2/oradata/oradup/users01.dbf
datafile 5 switched to datafile copy
input datafile copy recid=4
stamp=783959877
filename=/home/oracle/oracle/product/10.2.0/db_2/oradata/oradup/example01.dbf
contents of Memory Script:
{
Alter clone database open resetlogs;
}
executing Memory Script
database opened
Finished Duplicate Db at 01-APR-10
RMAN>
Oracle Catalog Offline Backup Script
Oracle Catalog Offline Backup Script
Enviroment: Solaris 10 64-bit Sparc
Oracle DB 10.2.0
/opt/oracle10g
$ cat coldbk.sh
cd /opt/oracle10g/bin
rman target / nocatalog <<@
shutdown immediate;
startup mount;
run {
allocate channel ch1 type
disk format='/data1/db-offline/bk_%s_%p_%t';
backup (database);
release channel ch1;
startup;
}
$ ./coldbk.sh
Recovery Manager: Release 10.2.0.4.0 - Production on Thu Jan 20 10:30:01 2011
Copyright (c) 1982, 2007, Oracle. All rights reserved.
connected to target database: CATDB (DBID=927922687)
using target database control file instead of recovery catalog
RMAN>
database closed
database dismounted
Oracle instance shut down
RMAN>
connected to target database (not started)
Oracle instance started
database mounted
Total System Global Area 612368384 bytes
Fixed Size 2042528 bytes
Variable Size 209720672 bytes
Database Buffers 394264576 bytes
Redo Buffers 6340608 bytes
RMAN> 2> 3> 4> 5> 6> 7>
allocated channel: ch1
channel ch1: sid=157 devtype=DISK
Starting backup at 20-Jan-2011
channel ch1: starting full datafile backupset
channel ch1: specifying datafile(s) in backupset
input datafile fno=00005 name=/opt/oracle10g/oradata/catdb/rmants.dbf
input datafile fno=00001 name=/opt/oracle10g/oradata/catdb/system01.dbf
input datafile fno=00003 name=/opt/oracle10g/oradata/catdb/sysaux01.dbf
input datafile fno=00002 name=/opt/oracle10g/oradata/catdb/undotbs01.dbf
input datafile fno=00006 name=/opt/oracle10g/oradata/catdb/system2.dbf
input datafile fno=00004 name=/opt/oracle10g/oradata/catdb/users01.dbf
channel ch1: starting piece 1 at 20-JAN-11
channel ch1: finished piece 1 at 20-JAN-11
piece handle=/data1/db-offline-bk/bk_157_1_784117842 tag=TAG20120524T
103042 comment=NONE
channel ch1: backup set complete, elapsed time: 00:01:25
channel ch1: starting full datafile backupset
channel ch1: specifying datafile(s) in backupset
including current control file in backupset
including current SPFILE in backupset
channel ch1: starting piece 1 at 20-JAN-11
channel ch1: finished piece 1 at 20-JAN-11
piece handle=/data1/db-offline-bk/bk_158_1_784117928 tag=TAG20120524T
103042 comment=NONE
channel ch1: backup set complete, elapsed time: 00:00:05
Finished backup at 20-JAN-11
released channel: ch1
database is already started
database opened
RMAN>
RMAN>
RMAN>
Recovery Manager complete.
$
Installed Netbackup Database Agent on Solaris 10
/swap/netbackup/database/agent/
# ls
NBdbext i386 install sparc
# ls -l
total 124
drwxr-xr-x 4 root root 512 Mar 27 15:39 NBdbext
drwxr-xr-x 4 root root 512 Mar 27 15:39 i386
-rwxr--r-- 1 root root 60274 Mar 27 15:39 install
drwxr-xr-x 8 root root 512 Mar 27 15:39 sparc
# ./install
**********
There are two ways to install database agent software.
1. Remote Installation: Loads the software on a server with
the intent of pushing database software out to affected clients.
2. Local Installation: Loads and installs the software only to this
local machine.
**********
Do you want to do a local installation? [y,n] (n) y
**********
NetBackup Database Agent Installation
Choose the Database Agents you wish to install
one at a time or select Install All Database Agents.
1) NetBackup for DB2
2) NetBackup for Informix
3) NetBackup for Lotus Notes
4) NetBackup for Oracle
5) NetBackup for SAP
6) NetBackup for Sybase
7) Install All Database Agents
q) Done Selecting Agents
x) Exit from this Script
Choose an option: 4
Choose an option: q
You have chosen to install these Database Agents:
NetBackup for Oracle
Is this list correct? [y,n] (y)
**********
Of the agents selected, the following are supported
on this platform and will be installed:
Oracle
Loading the Database Agent packages into the
/usr/openv/netbackup/dbext directory and installing.
**********
Installing NetBackup for Oracle
Installing NetBackup for Oracle...
Extracting files from /usr/openv/netbackup/dbext/OEBU.solaris8.tar.Z ...
x usr/openv/netbackup, 0 bytes, 0 tape blocks
x usr/openv/netbackup/bin, 0 bytes, 0 tape blocks
x usr/openv/netbackup/bin/bpubsora, 194676 bytes, 381 tape blocks
x usr/openv/netbackup/bin/bpdbsbora, 291956 bytes, 571 tape blocks
x usr/openv/netbackup/bin/libobk.so.1, 112480 bytes, 220 tape blocks
x usr/openv/netbackup/bin/oracle_link, 32260 bytes, 64 tape blocks
x usr/openv/netbackup/bin/bporaexp, 122336 bytes, 239 tape blocks
x usr/openv/netbackup/bin/bporaimp, 134128 bytes, 262 tape blocks
x usr/openv/netbackup/bin/libobk.so64.1, 183360 bytes, 359 tape blocks
x usr/openv/netbackup/bin/bporaexp64, 151376 bytes, 296 tape blocks
x usr/openv/netbackup/bin/bporaimp64, 164088 bytes, 321 tape blocks
x usr/openv/netbackup/dbext, 0 bytes, 0 tape blocks
x usr/openv/netbackup/dbext/OEBU.solaris8.version, 28 bytes, 1 tape blocks
x usr/openv/netbackup/ext, 0 bytes, 0 tape blocks
x usr/openv/netbackup/ext/db_ext, 0 bytes, 0 tape blocks
x usr/openv/netbackup/ext/db_ext/oracle, 0 bytes, 0 tape blocks
x usr/openv/netbackup/ext/db_ext/oracle/samples, 0 bytes, 0 tape blocks
x usr/openv/netbackup/ext/db_ext/oracle/samples/rman, 0 bytes, 0 tape blocks
x usr/openv/netbackup/ext/db_ext/oracle/samples/rman/cold_database_backup.sh, 11 875 bytes, 24 tape blocks
x usr/openv/netbackup/ext/db_ext/oracle/samples/rman/cold_duplex_database_backup _full.sh, 12789 bytes, 25 tape blocks
x usr/openv/netbackup/ext/db_ext/oracle/samples/rman/database_restore.sh, 7155 b ytes, 14 tape blocks
x usr/openv/netbackup/ext/db_ext/oracle/samples/rman/hot_database_backup.sh, 115 38 bytes, 23 tape blocks
x usr/openv/netbackup/ext/db_ext/oracle/samples/rman/hot_tablespace_backup.sh, 1 1154 bytes, 22 tape blocks
x usr/openv/netbackup/ext/db_ext/oracle/samples/rman/pit_database_restore.sh, 10 307 bytes, 21 tape blocks
x usr/openv/netbackup/ext/db_ext/oracle/samples/rman/hot_database_backup_proxy.s h, 9983 bytes, 20 tape blocks
x usr/openv/netbackup/ext/db_ext/oracle/samples/rman/hot_tablespace_backup_proxy .sh, 8575 bytes, 17 tape blocks
x usr/openv/netbackup/ext/db_ext/oracle/samples/bpend_notify.oracle_bli.sh, 2776 4 bytes, 55 tape blocks
x usr/openv/netbackup/ext/db_ext/oracle/samples/bpstart_notify.oracle_bli.sh, 31 867 bytes, 63 tape blocks
x usr/openv/netbackup/ext/db_ext/oracle/samples/post_checkpoint_notify.oracle_bl i.sh, 21844 bytes, 43 tape blocks
x usr/openv/netbackup/ext/db_ext/oracle/samples/bporaexp, 0 bytes, 0 tape blocks
x usr/openv/netbackup/ext/db_ext/oracle/samples/bporaexp/data_archiver_export.sh , 5124 bytes, 11 tape blocks
x usr/openv/netbackup/ext/db_ext/oracle/samples/bporaexp/data_archiver_export64. sh, 5130 bytes, 11 tape blocks
x usr/openv/netbackup/ext/db_ext/oracle/samples/bporaexp/bporaexp_help.param, 73 3 bytes, 2 tape blocks
x usr/openv/netbackup/ext/db_ext/oracle/samples/bporaexp/bporaexp_partitions.par am, 1605 bytes, 4 tape blocks
x usr/openv/netbackup/ext/db_ext/oracle/samples/bporaexp/bporaexp_table_to_files .param, 1652 bytes, 4 tape blocks
x usr/openv/netbackup/ext/db_ext/oracle/samples/bporaexp/bporaexp_tables.param, 1669 bytes, 4 tape blocks
x usr/openv/netbackup/ext/db_ext/oracle/samples/bporaexp/bporaexp_tables_rows.pa ram, 1868 bytes, 4 tape blocks
x usr/openv/netbackup/ext/db_ext/oracle/samples/bporaimp, 0 bytes, 0 tape blocks
x usr/openv/netbackup/ext/db_ext/oracle/samples/bporaimp/data_archiver_import.sh , 5044 bytes, 10 tape blocks
x usr/openv/netbackup/ext/db_ext/oracle/samples/bporaimp/data_archiver_import64. sh, 5050 bytes, 10 tape blocks
x usr/openv/netbackup/ext/db_ext/oracle/samples/bporaimp/bporaimp_archive.param, 1242 bytes, 3 tape blocks
x usr/openv/netbackup/ext/db_ext/oracle/samples/bporaimp/bporaimp_archive_schema _to_files.param, 1317 bytes, 3 tape blocks
x usr/openv/netbackup/ext/db_ext/oracle/samples/bporaimp/bporaimp_archive_to_use rs.param, 1510 bytes, 3 tape blocks
x usr/openv/netbackup/ext/db_ext/oracle/samples/bporaimp/bporaimp_bfile_table.pa ram, 1604 bytes, 4 tape blocks
x usr/openv/netbackup/ext/db_ext/oracle/samples/bporaimp/bporaimp_help.param, 73 3 bytes, 2 tape blocks
x usr/openv/netbackup/ext/db_ext/oracle/samples/bporaimp/bporaimp_ignore_rows_ta ble.param, 1530 bytes, 3 tape blocks
x usr/openv/netbackup/ext/db_ext/oracle/samples/bporaimp/bporaimp_large_table.pa ram, 1542 bytes, 4 tape blocks
x usr/openv/netbackup/ext/db_ext/oracle/samples/bporaimp/bporaimp_list.param, 15 94 bytes, 4 tape blocks
x usr/openv/netbackup/ext/db_ext/oracle/samples/bporaimp/bporaimp_old_archive.pa ram, 1556 bytes, 4 tape blocks
x usr/openv/netbackup/ext/db_ext/oracle/samples/bporaimp/bporaimp_partitions.par am, 1513 bytes, 3 tape blocks
x usr/openv/netbackup/ext/db_ext/oracle/samples/bporaimp/bporaimp_table_from_fil es.param, 1370 bytes, 3 tape blocks
x usr/openv/netbackup/ext/db_ext/oracle/samples/bporaimp/bporaimp_table_to_files .param, 1301 bytes, 3 tape blocks
x usr/openv/netbackup/ext/db_ext/oracle/samples/bporaimp/bporaimp_table_to_user. param, 1656 bytes, 4 tape blocks
x usr/openv/netbackup/ext/db_ext/oracle/samples/bporaimp/bporaimp_tables.param, 1289 bytes, 3 tape blocks
x usr/openv/netbackup/ext/db_ext/oracle/bin, 0 bytes, 0 tape blocks
x usr/openv/netbackup/ext/db_ext/oracle/bin/setup_bli_scripts, 18091 bytes, 36 t ape blocks
x usr/openv/lib, 0 bytes, 0 tape blocks
x usr/openv/lib/libdbsbrman.so, 1765172 bytes, 3448 tape blocks
x usr/openv/lib/libbpora.so.8.0, 44232 bytes, 87 tape blocks
x usr/openv/lib/libbpora.so.9.0, 44244 bytes, 87 tape blocks
x usr/openv/lib/libbpora64.so.8.0, 61840 bytes, 121 tape blocks
x usr/openv/lib/libbpora64.so.9.0, 61848 bytes, 121 tape blocks
x usr/openv/lib/libnbberman.so, 112692 bytes, 221 tape blocks
LiveUpdate is not installed, skipping registration step...
NetBackup for Oracle installation completed.
**********
Execution of ./install_dbext is complete.
Execution of ./install is complete.
File /usr/openv/tmp/install_addon_trace.25104 contains a trace of this install.
#
Thursday, November 14, 2013
Startup and Shutdown Container Databases (CDB) and Pluggable Databases (PDB) in Oracle Database 12c R1
Startup and shutdown of the container database is the same as it has always been
for regular instances. The SQL*Plus
STARTUP
and SHUTDOWN
commands are available when connected to the CDB as a privileged user.
Some typical values are shown below.
Starting CDB (container database) will NOT OPEN PDB (pluggable database)
Use SHOW CON_NAME to know where you are at, i.e. CDB or PDB
Use ALL to have OPEN/CLOSE all PDB, i.e. ALTER PLUGGABLE DATABASE ALL OPEN;
Use ALTER SESSION to switch to PDB, i.e. alter session set container=PDB01;
$
SQL> SHOW CON_NAME
CON_NAME
----------------------------
CDB$ROOT
SQL> SHOW PDBS
CON_ID CON_NAME OPEN MODE RESTRICTED
-----------------------------------------------------------------------
2 PDB$SEED READ ONLY NO
3 PDB1 MOUNTED
4 PDB2 MONUTED
SQL> ALTER PLUGGABLE DATABASE ALL OPEN;
pluggable database altered.
SQL> SHOW PDBS
CON_ID CON_NAME OPEN MODE RESTRICTED
-----------------------------------------------------------------------
2 PDB$SEED READ ONLY NO
3 PDB1 READ WRITE NO
4 PDB2 READ WRITE NO
SQL> alter pluggable database all close;
CON_ID CON_NAME OPEN MODE RESTRICTED
-------------------------------------------------------------------------------------
2 PDB$SEED READ ONLY NO
3 PDB1 MOUNTED
4 PDB2 MONUTED
SQL> ALTER PLUGGABLE DATABASE PDB1 OPEN;
pluggable database altered.
Accessing a Container in a CDB with SQL*PlusSQL> alter session set container=PDB1;
session altered.
SQL> show con_name
con_name
--------------------------
PDB1
How to unplug a PDB and Plug it back into the same CDB
You have just unplugged a PDB and want to know how to eventually plug it back into the same container.
Let's assume I have a pluggable database named PDB1 and I am just able to unplug it using the following commands:
Container Database: CDB1
Pluggable Databases: PDB1 , PDB2
$ ORACLE_HOME='/ora/oracle/app/oracle/product/12.1.0/dbhome_1/bin
$ export ORACLE_HOME
$ ORACLE_SID=cdb1
$ export ORACLE_SID
SQL> alter pluggable database pdb1 close immediate;
Pluggable database altered.
SQL> alter pluggable database PDB1 unplug into '/ora/oracle/app/oracle/oradata/cdb1/pdb1.xml';
Pluggable database altered.
If you query the CDB_PDBS view you can receive useful information about all PDBs contained: id, name, unique identifiers, SCN at the time of creation and the status.
The STATUS column has several values:
- NEW, the pdb has been created but never opened
- NORMAL, pdb available to be used
- UNPLUGGED, the pdb has been unplugged
- NEEDS UPGRADE, the pdb must be upgraded
- CONVERTING, a non-CDB is going to be converted into a pdb
- UNUSABLE, the pdb cannot be used (creation in progress)
SQL> select * from CDB_PDBS;
SQL> select * from CDB_PDBS;
PDB_ID PDB_NAME DBID CON_UID GUID STATUS CREATION_SCN CON_ID
---------- ---------- ---------- ---------- -------------------------------- ------------- ------------ ----------
2 PDB$SEED 4063489868 4063489868 E19363E52C005C9AE045000000000001 NORMAL 233 1
3 PDB2 1701599811 1701599811 E1F26215682E1142E045000000000001 NORMAL 1821405 1
4 PDB1 1497027100 1497027100 E1F329ECE0F411E6E045000000000001 UNPLUGGED 1844390 1
To plug again the pluggable database PDB003 inside the original container (CDB001) you cannot use a syntax like: ALTER PLUGGABLE DATABASE ... PLUG (it doesn't exist in the "SQL Language Reference" manual a PLUG clause) ...
SQL> alter pluggable database pdb1 plug;
alter plugable database pdb1 plug
*
ERROR at line 1:
ORA-00922: missing or invalid option
... neither you can simply use CREATE PLUGGABLE DATABASE ... USING SQL> create pluggable database PDB003 using
'/ora/oracle/app/oracle/oradata/cdb1/pdb1.xml' nocopy tempfile reuse;
SQL> create pluggable database PDB003 using
'/ora/oracle/app/oracle/oradata/cdb1/pdb1.xml' nocopy tempfile
reuse * ERROR at line 1:
ORA-65012: Pluggable database PDB003 already exists.
you need first to drop the pluggable database (DROP PLUGGABLE DATABASE command) and then create it again (CREATE PLUGGABLE DATABASE command).
In this way the pluggable database is plugged again into the same CDB and using the same PDB name.
Have a look at the following commands:
SQL> drop pluggable database PDB003;
Pluggable database dropped.
SQL> create pluggable database PDB1 using
'/ora/oracle/app/oracle/oradata/cdb1/pdb1.xml' nocopy;
Pluggable database created.
SQL> select PDB_NAME, STATUS from CDB_PDBS;
PDB_NAME STATUS
---------- -------------
PDB$SEED NORMAL
PDB2 NORMAL
PDB1 NEW
SQL> alter session set container=PDB1;
Session altered.
SQL> alter database open;
Database altered.
SQL> select count(*) from emp.T1;
COUNT(*)
----------
100
Have a look again at the CDB_PDBS view and note the differences compared with the previous results.
All the unique identifiers of PDB003 have been recreated.
Open another terminal & run the command.
SQL> select * from CDB_PDBS;
PDB_ID PDB_NAME DBID CON_UID GUID STATUS CREATION_SCN CON_ID ---------- ---------- ---------- ---------- -------------------------------- ------------- ------------ ----------
2 PDB$SEED 4063489868 4063489868 E19363E52C005C9AE045000000000001 NORMAL 233 1 3 PDB1 1701599811 1701599811 E1F26215682E1142E045000000000001 NORMAL 1821405 1 4 PDB2 1497027100 1497027100 E1F329ECE0F411E6E045000000000001 NORMAL 1844390 1
Subscribe to:
Posts (Atom)