As said earlier, I am currently doing a POC on multitenant 12.1.0.2 for my customer.
Unfortunately 12.1 and not 12.2 which seems to have really nice features especially with regards to FLASHBACK, limiting resources in the containers ….

One of the tasks I am investigating is backup and recovery. here some findings so far.

Situation :

CDB called CDB

container called ORA1

I have used OMF this time on a regular fs just to be able to easily remove datafiles while the db is running ….





SQL>!rm /oradata/CDB/2223196C0BE77A23E053144EA8C066EC/datafile/o1_mf_users_d3k2nnz6_.dbf'



SQL> alter session set container = ora1

  2  /



Session altered.



SQL>  select * from phil.test;



no rows selected



SQL>

SQL> create table phil.test2 as select * from dba_objects;

create table phil.test2 as select * from dba_objects

                                                   *

ERROR at line 1:

ORA-01116: error in opening database file 10

ORA-01110: data file 10:

'/oradata/CDB/2223196C0BE77A23E053144EA8C066EC/datafile/o1_mf_users_d3k2nnz6_.db

f'

ORA-27041: unable to open file

Linux-x86_64 Error: 2: No such file or directory

Additional information: 3


ok the file is gone ! yippee

next step connect to RMAN

ok connected in the CDB :






$ rman target /



Recovery Manager: Release 12.1.0.2.0 - Production on Fri Nov 25 15:18:00 2016



Copyright (c) 1982, 2014, Oracle and/or its affiliates.  All rights reserved.



connected to target database: CDB (DBID=2009742972)



RMAN> restore tablespace ora1:users;



Starting restore at 25-NOV-16

using target database control file instead of recovery catalog

allocated channel: ORA_DISK_1

channel ORA_DISK_1: SID=17 device type=DISK



channel ORA_DISK_1: starting datafile backup set restore

channel ORA_DISK_1: specifying datafile(s) to restore from backup set

channel ORA_DISK_1: restoring datafile 00010 to /oradata/CDB/2223196C0BE77A23E053144EA8C066EC/datafile/o1_mf_users_d3k2nnz6_.dbf

channel ORA_DISK_1: reading from backup piece /oraarch/bck/CDB_0grlqcro_1_1

RMAN-00571: ===========================================================

RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============

RMAN-00571: ===========================================================

RMAN-03002: failure of restore command at 11/25/2016 15:18:11

ORA-19870: error while restoring backup piece /oraarch/bck/CDB_0grlqcro_1_1

ORA-19573: cannot obtain exclusive enqueue for datafile 10



RMAN>



RMAN>



RMAN> alter database datafile 10 offline;



RMAN-00571: ===========================================================

RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============

RMAN-00571: ===========================================================

RMAN-03002: failure of sql statement command at 11/25/2016 15:19:35

ORA-01516: nonexistent log file, data file, or temporary file "10"







RMAN> exit



ok the CDB is not aware of datafile 10 ….

connect to SQLPLUS






 sqlplus / as sysdba



SQL*Plus: Release 12.1.0.2.0 Production on Fri Nov 25 15:21:54 2016



Copyright (c) 1982, 2014, Oracle.  All rights reserved.





Connected to:

Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production

With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options



SQL> alter session set container = ora1;



Session altered.



SQL>  alter database datafile 10 offline;



Database altered.

ok back to RMAN






rman target /



Recovery Manager: Release 12.1.0.2.0 - Production on Fri Nov 25 15:22:44 2016



Copyright (c) 1982, 2014, Oracle and/or its affiliates.  All rights reserved.



connected to target database: CDB (DBID=2009742972)



RMAN> restore tablespace ora1:users;



Starting restore at 25-NOV-16

using target database control file instead of recovery catalog

allocated channel: ORA_DISK_1

channel ORA_DISK_1: SID=267 device type=DISK



channel ORA_DISK_1: starting datafile backup set restore

channel ORA_DISK_1: specifying datafile(s) to restore from backup set

channel ORA_DISK_1: restoring datafile 00010 to /oradata/CDB/2223196C0BE77A23E053144EA8C066EC/datafile/o1_mf_users_d3k2nnz6_.dbf

channel ORA_DISK_1: reading from backup piece /oraarch/bck/CDB_0grlqcro_1_1

channel ORA_DISK_1: piece handle=/oraarch/bck/CDB_0grlqcro_1_1 tag=TAG20161125T151456

channel ORA_DISK_1: restored backup piece 1

channel ORA_DISK_1: restore complete, elapsed time: 00:00:01

Finished restore at 25-NOV-16



RMAN> recover tablespace ora1:users;



Starting recover at 25-NOV-16

using channel ORA_DISK_1



starting media recovery

media recovery complete, elapsed time: 00:00:00



Finished recover at 25-NOV-16



RMAN> exit


ok table space restored and recovered .

where are the datafiles now ?






SQL> alter session set container=ora1;



Session altered.



SQL> select name from v$datafile;



NAME

--------------------------------------------------------------------------------

/oradata/CDB/datafile/o1_mf_undotbs1_c1yz8bk7_.dbf

/oradata/CDB/2223196C0BE77A23E053144EA8C066EC/datafile/o1_mf_system_c1yzs31m_.db

f



/oradata/CDB/2223196C0BE77A23E053144EA8C066EC/datafile/o1_mf_sysaux_c1yzs31t_.db

f



/oradata/CDB/datafile/o1_mf_users_d3k7f3tk_.dbf

ok so the users tablespace was restored in the CDB root directory ….
instead of here :




/oradata/CDB/2223196C0BE77A23E053144EA8C066EC/datafile/o1_mf_users_d3k2nnz6_.dbf

hmm lets check if we see the same when connecting to PDB instead of CDB when recovering :

so same scenario remove the datafile …




[oracle@12cR1 datafile]$ rman target sys@ora1



Recovery Manager: Release 12.1.0.2.0 - Production on Fri Nov 25 15:42:42 2016



Copyright (c) 1982, 2014, Oracle and/or its affiliates.  All rights reserved.



target database Password:

connected to target database: CDB (DBID=2009742972)



RMAN> restore tablespace users;



Starting restore at 25-NOV-16

using target database control file instead of recovery catalog

allocated channel: ORA_DISK_1

channel ORA_DISK_1: SID=21 device type=DISK



channel ORA_DISK_1: starting datafile backup set restore

channel ORA_DISK_1: specifying datafile(s) to restore from backup set

channel ORA_DISK_1: restoring datafile 00010 to /oradata/CDB/datafile/o1_mf_users_d3k7f3tk_.dbf

channel ORA_DISK_1: reading from backup piece /oraarch/bck/CDB_0grlqcro_1_1

channel ORA_DISK_1: piece handle=/oraarch/bck/CDB_0grlqcro_1_1 tag=TAG20161125T151456

channel ORA_DISK_1: restored backup piece 1

channel ORA_DISK_1: restore complete, elapsed time: 00:00:01

Finished restore at 25-NOV-16



RMAN> recover tablespace users;



Starting recover at 25-NOV-16

using channel ORA_DISK_1



starting media recovery

media recovery complete, elapsed time: 00:00:00



Finished recover at 25-NOV-16




RMAN> alter tablespace users online;



Statement processed

okay restored where they were originally stored


Connected to:

Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production

With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options



SQL> select name from v$datafile;



NAME

--------------------------------------------------------------------------------

/oradata/CDB/datafile/o1_mf_undotbs1_c1yz8bk7_.dbf

/oradata/CDB/2223196C0BE77A23E053144EA8C066EC/datafile/o1_mf_system_c1yzs31m_.dbf




/oradata/CDB/2223196C0BE77A23E053144EA8C066EC/datafile/o1_mf_sysaux_c1yzs31t_.dbf



/oradata/CDB/2223196C0BE77A23E053144EA8C066EC/datafile/o1_mf_users_d3k8lbts_.dbf



for me while making sense I see lots of potential issues with this 😉 so I hope it was worthwhile to note this down

Leave a Reply