Saturday, August 6, 2022

Convert Non-CDB database as PDB inside CDB database

Converting a non-CDB to a PDB

Source: DEVDB (Normal 19c database)
Target: DEVCDB (CDB database)

Task: 
Convert this DEVDB(Normal database) as PDB inside DEVCDB database.

High level Steps:
1. Create xml file from Non-CDB database
2. Check plug in compatibility check for created xml file from CDB database
3. Create or plugin Non-CDB database as PDB inside CDB database
4. Run noncdb_to_pdb.sql sql script inside newly create PDB 

1. Create xml file from Non-CDB database
[oracle@oraclelab1 patches]$ ps -ef|grep smon
oracle    2827     1  0 19:59 ?        00:00:00 ora_smon_TESTCDB
oracle    6556  2545  0 20:52 pts/1    00:00:00 grep --color=auto smon
oracle   12924     1  0 Aug02 ?        00:00:08 ora_smon_DEVDB
oracle   15033     1  0 Aug02 ?        00:00:03 ora_smon_DEVCDB
[oracle@oraclelab1 patches]$

[oracle@oraclelab1 patches]$ . oraenv
ORACLE_SID = [TESTCDB] ? DEVDB
The Oracle base remains unchanged with value /u01/app/oracle
[oracle@oraclelab1 patches]$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Fri Aug 5 20:52:59 2022
Version 19.14.0.0.0

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


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.14.0.0.0

SQL> shut immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.

Total System Global Area  268434272 bytes
Fixed Size                  8895328 bytes
Variable Size             218103808 bytes
Database Buffers           33554432 bytes
Redo Buffers                7880704 bytes
Database mounted.
SQL> alter database open read only;

Database altered.

SQL> begin
DBMS_PDB.DESCRIBE(pdb_descr_file => '/u01/patches/DEVDB.xml');
end;
/  2    3    4

PL/SQL procedure successfully completed.

SQL> exit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.14.0.0.0
[oracle@oraclelab1 patches]$ 

begin 
DBMS_PDB.DESCRIBE(pdb_descr_file => '/u01/patches/DEVDB.xml');
end;
/

2. Check plug in compatibility check for created xml file from CDB database
[oracle@oraclelab1 patches]$ . oraenv
ORACLE_SID = [DEVDB] ? DEVCDB
The Oracle base remains unchanged with value /u01/app/oracle
[oracle@oraclelab1 patches]$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Fri Aug 5 20:56:34 2022
Version 19.14.0.0.0

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


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.14.0.0.0

SQL> SET SERVEROUTPUT ON
DECLARE
  l_result BOOLEAN;
BEGIN
  l_result := DBMS_PDB.check_plug_compatibility(
                pdb_descr_file => '/u01/patches/DEVDB.xml',
                pdb_name       => 'DEVDB');

  IF l_result THEN
    DBMS_OUTPUT.PUT_LINE('compatible');
  ELSE
    DBMS_OUTPUT.PUT_LINE('incompatible');
  END IF;
END;
/
SQL> 
incompatible >>>>>>>>>>>>>>>>>>>>>>>>> Issue here

PL/SQL procedure successfully completed.

SQL>

SET SERVEROUTPUT ON
DECLARE
  l_result BOOLEAN;
BEGIN
  l_result := DBMS_PDB.check_plug_compatibility(
                pdb_descr_file => '/u01/patches/DEVDB.xml',
                pdb_name       => 'DEVDB');

  IF l_result THEN
    DBMS_OUTPUT.PUT_LINE('compatible');
  ELSE
    DBMS_OUTPUT.PUT_LINE('incompatible');
  END IF;
END;
/

Issue1:
For alert log we got to know the database patch level miss match between source DB and target CDB

[root@oraclelab1 ~]# locate alert_DEVCDB.log
/u01/app/oracle/diag/rdbms/devcdb/DEVCDB/trace/alert_DEVCDB.log
[root@oraclelab1 ~]# tail -f /u01/app/oracle/diag/rdbms/devcdb/DEVCDB/trace/alert_DEVCDB.log
DEVPDB(3):Clearing Resource Manager plan via parameter
PDB2(5):Closing scheduler window
PDB2(5):Closing Resource Manager plan via scheduler window
PDB2(5):Clearing Resource Manager plan via parameter
2022-08-05T16:30:02.138175+05:30
Thread 1 advanced to log sequence 31 (LGWR switch),  current SCN: 4303253
  Current log# 1 seq# 31 mem# 0: /u01/app/oracle/oradata/DEVCDB/onlinelog/o1_mf_1_kfypzdy8_.log
  Current log# 1 seq# 31 mem# 1: /u01/app/oracle/fast_recovery_area/DEVCDB/onlinelog/o1_mf_1_kfypzf45_.log
2022-08-05T20:56:50.597761+05:30
Opatch validation is skipped for PDB DEVDB (con_id=0)

DEVDB:
======
QL> set pagesize 1000;
set linesize 1000;
col STATUS for a10;
col ACTION_TIME format a30;
col DESCRIPTION format a55;
select PATCH_ID,status,ACTION_TIME,DESCRIPTION from dba_registry_sqlpatch;
SQL> SQL> SQL> SQL> SQL>
  PATCH_ID STATUS      ACTION_TIME                    DESCRIPTION
---------- ----------- ------------------------------ -------------------------------------------------------
  29517242 SUCCESS     11-JUL-22 09.09.12.789728 AM   Database Release Update : 19.3.0.0.190416 (29517242)
  33515361 WITH ERRORS 02-AUG-22 09.59.05.092960 AM   Database Release Update : 19.14.0.0.220118 (33515361)
SQL>

SQL> column comp_name format a40
column version format a12
column status format a15
select comp_name,version,status from dba_registry;
SQL> SQL> SQL>
COMP_NAME                                VERSION      STATUS
---------------------------------------- ------------ ---------------
Oracle Database Catalog Views            19.0.0.0.0   VALID
Oracle Database Packages and Types       19.0.0.0.0   INVALID
Oracle Real Application Clusters         19.0.0.0.0   OPTION OFF
JServer JAVA Virtual Machine             19.0.0.0.0   VALID
Oracle XDK                               19.0.0.0.0   VALID
Oracle Database Java Packages            19.0.0.0.0   VALID
OLAP Analytic Workspace                  19.0.0.0.0   VALID
Oracle XML Database                      19.0.0.0.0   INVALID
Oracle Workspace Manager                 19.0.0.0.0   INVALID
Oracle Text                              19.0.0.0.0   VALID
Oracle Multimedia                        19.0.0.0.0   VALID

COMP_NAME                                VERSION      STATUS
---------------------------------------- ------------ ---------------
Spatial                                  19.0.0.0.0   INVALID
Oracle OLAP API                          19.0.0.0.0   VALID
Oracle Label Security                    19.0.0.0.0   VALID
Oracle Database Vault                    19.0.0.0.0   VALID

15 rows selected.

SQL> 

DEVCDB:
=======
SQL> set pagesize 1000;
set linesize 1000;
col STATUS for a10;
col ACTION_TIME format a30;
col DESCRIPTION format a55;
select PATCH_ID,status,ACTION_TIME,DESCRIPTION from dba_registry_sqlpatch;
SQL> SQL> SQL> SQL> SQL>
  PATCH_ID STATUS     ACTION_TIME                    DESCRIPTION
---------- ---------- ------------------------------ -------------------------------------------------------
  29517242 SUCCESS    26-JUL-22 08.46.22.698373 AM   Database Release Update : 19.3.0.0.190416 (29517242)
  33515361 SUCCESS    02-AUG-22 10.21.30.647761 AM   Database Release Update : 19.14.0.0.220118 (33515361)
SQL>

Solution 1:
Lots of Registry componets were invalid due to that datapatch was failed with error inside DEVDB.
I have fixed the registry componets re-ran the datapatch which went fine.

SQL> column comp_name format a40
column version format a12
column status format a15
select comp_name,version,status from dba_registry;SQL> SQL> SQL>

COMP_NAME                                VERSION      STATUS
---------------------------------------- ------------ ---------------
Oracle Database Catalog Views            19.0.0.0.0   VALID
Oracle Database Packages and Types       19.0.0.0.0   VALID
Oracle Real Application Clusters         19.0.0.0.0   OPTION OFF
JServer JAVA Virtual Machine             19.0.0.0.0   VALID
Oracle XDK                               19.0.0.0.0   VALID
Oracle Database Java Packages            19.0.0.0.0   VALID
OLAP Analytic Workspace                  19.0.0.0.0   VALID
Oracle XML Database                      19.0.0.0.0   VALID
Oracle Workspace Manager                 19.0.0.0.0   VALID
Oracle Text                              19.0.0.0.0   VALID
Oracle Multimedia                        19.0.0.0.0   VALID

COMP_NAME                                VERSION      STATUS
---------------------------------------- ------------ ---------------
Spatial                                  19.0.0.0.0   VALID
Oracle OLAP API                          19.0.0.0.0   VALID
Oracle Label Security                    19.0.0.0.0   VALID
Oracle Database Vault                    19.0.0.0.0   VALID

15 rows selected.

SQL>

SQL> set pagesize 1000;
set linesize 1000;
col STATUS for a10;
col ACTION_TIME format a30;
col DESCRIPTION format a55;
select PATCH_ID,status,ACTION_TIME,DESCRIPTION from dba_registry_sqlpatch;SQL> SQL> SQL> SQL> SQL>

  PATCH_ID STATUS     ACTION_TIME                    DESCRIPTION
---------- ---------- ------------------------------ -------------------------------------------------------
  29517242 SUCCESS    11-JUL-22 09.09.12.789728 AM   Database Release Update : 19.3.0.0.190416 (29517242)
  33515361 SUCCESS    06-AUG-22 07.58.22.273849 AM   Database Release Update : 19.14.0.0.220118 (33515361)

SQL>

[oracle@oraclelab1 ~]$ . oraenv
ORACLE_SID = [oracle] ? DEVCDB
The Oracle base has been set to /u01/app/oracle
[oracle@oraclelab1 ~]$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Sat Aug 6 20:34:57 2022
Version 19.14.0.0.0

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


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.14.0.0.0

SQL> SET SERVEROUTPUT ON
DECLARE
  l_result BOOLEAN;
BEGIN
  l_result := DBMS_PDB.check_plug_compatibility(
                pdb_descr_file => '/u01/patches/DEVDB.xml',
                pdb_name       => 'DEVDB');

  IF l_result THEN
    DBMS_OUTPUT.PUT_LINE('compatible');
  ELSE
    DBMS_OUTPUT.PUT_LINE('incompatible');
  END IF;
END;
/SQL>   
compatible >>>>>>>>>>>>>>>>>>>>>>>>>>> Its succeeded now which failed earlier 

PL/SQL procedure successfully completed.

SQL>

3. Create or plugin Non-CDB database as PDB inside CDB database
Issue 2: 
While creating DEVDB as PDB inside CDB which failed with error message temp file exists. 

SQL> create pluggable database DEVDB using '/u01/patches/DEVDB.xml' nocopy;
create pluggable database DEVDB using '/u01/patches/DEVDB.xml' nocopy
*
ERROR at line 1:
ORA-27038: created file already exists
ORA-01119: error in creating database file
'/u01/app/oracle/oradata/DEVDB/datafile/o1_mf_temp_kgvmybcv_.tmp'

SQL>

Alert log error message:
**************************************************************
Undo Create of Pluggable Database DEVDB with pdb id - 4.
**************************************************************
ORA-27038 signalled during: create pluggable database DEVDB using '/u01/patches/DEVDB.xml' nocopy...
2022-08-06T20:55:18.071973+05:30
create pluggable database DEVDB using '/u01/patches/DEVDB.xml' nocopy
2022-08-06T20:55:18.084888+05:30
Opatch validation is skipped for PDB DEVDB (con_id=6)
**************************************************************
Undo Create of Pluggable Database DEVDB with pdb id - 6.
**************************************************************
ORA-27038 signalled during: create pluggable database DEVDB using '/u01/patches/DEVDB.xml' nocopy...
2022-08-06T20:55:51.372436+05:30
create pluggable database DEVDB using '/u01/patches/DEVDB.xml' nocopy TEMPFILE REUSE
2022-08-06T20:55:51.385142+05:30
Opatch validation is skipped for PDB DEVDB (con_id=7)
DEVDB(7):Endian type of dictionary set to little
****************************************************************
Pluggable Database DEVDB with pdb id - 7 is created as UNUSABLE.
If any errors are encountered before the pdb is marked as NEW,
then the pdb must be dropped
local undo-1, localundoscn-0x0000000000000009
****************************************************************

Solution 2:
We I have used temp file reuse command to create DEVDB as PDB inside CDB.

SQL> create pluggable database DEVDB using '/u01/patches/DEVDB.xml' nocopy TEMPFILE REUSE;

Pluggable database created.

SQL>

Alert log message:
****************************************************************
DEVDB(7):Pluggable database DEVDB pseudo opening
DEVDB(7):SUPLOG: Initialize PDB SUPLOG SGA, old value 0x0, new value 0x18
DEVDB(7):Autotune of undo retention is turned on.
DEVDB(7):Undo initialization recovery: Parallel FPTR complete: start:1597465044 end:1597465045 diff:1 ms (0.0 seconds)
DEVDB(7):Undo initialization recovery: err:0 start: 1597465044 end: 1597465045 diff: 1 ms (0.0 seconds)
DEVDB(7):[4463] Successfully onlined Undo Tablespace 2.
DEVDB(7):Undo initialization online undo segments: err:0 start: 1597465046 end: 1597465070 diff: 24 ms (0.0 seconds)
DEVDB(7):Undo initialization finished serial:0 start:1597465044 end:1597465071 diff:27 ms (0.0 seconds)
DEVDB(7):Database Characterset for DEVDB is AL32UTF8
DEVDB(7):Pluggable database DEVDB pseudo closing
DEVDB(7):JIT: pid 4463 requesting stop
DEVDB(7):Closing sequence subsystem (1597465245122).
2022-08-06T20:55:52.429393+05:30
DEVDB(7):Buffer Cache flush started: 7
DEVDB(7):Buffer Cache flush finished: 7
Completed: create pluggable database DEVDB using '/u01/patches/DEVDB.xml' nocopy TEMPFILE REUSE

SQL> ALTER PLUGGABLE DATABASE DEVDB open;

Warning: PDB altered with errors.

SQL>

Alert log message:
DEVDB(7):Deleting old file#1 from file$
DEVDB(7):Deleting old file#2 from file$
DEVDB(7):Deleting old file#3 from file$
DEVDB(7):Deleting old file#4 from file$
DEVDB(7):Deleting old file#5 from file$
DEVDB(7):Deleting old file#7 from file$
DEVDB(7):Adding new file#25 to file$(old file#1).             fopr-0, newblks-128000, oldblks-64000
DEVDB(7):Adding new file#26 to file$(old file#3).             fopr-0, newblks-98560, oldblks-51200
DEVDB(7):Adding new file#27 to file$(old file#4).             fopr-0, newblks-78720, oldblks-3200
DEVDB(7):Adding new file#28 to file$(old file#7).             fopr-0, newblks-640, oldblks-640
DEVDB(7):Successfully created internal service DEVDB at open
****************************************************************
Post plug operations are now complete.
Pluggable database DEVDB with pdb id - 7 is now marked as NEW.
****************************************************************
DEVDB(7):Database Characterset for DEVDB is AL32UTF8
Violations: Type: 1, Count: 1
DEVDB(7):***************************************************************
DEVDB(7):WARNING: Pluggable Database DEVDB with pdb id - 7 is
DEVDB(7):         altered with errors or warnings. Please look into
DEVDB(7):         PDB_PLUG_IN_VIOLATIONS view for more details.
DEVDB(7):***************************************************************
2022-08-06T20:57:05.441349+05:30
DEVDB(7):SUPLOG: Set PDB SUPLOG SGA at PDB OPEN, old 0x18, new 0x0 (no suplog)
DEVDB(7):Opening pdb with no Resource Manager plan active
DEVDB(7):joxcsys_required_dirobj_exists: directory object does not exist, pid 4463 cid 7
DEVDB(7):joxcsys_ensure_directory_object: created directory object with path /u01/app/oracle/product/19.0.0.0/dbhome_1/javavm/admin/, pid 4463 cid 7
Pluggable database DEVDB opened read write
Completed: ALTER PLUGGABLE DATABASE DEVDB open

4. Run noncdb_to_pdb.sql sql script inside newly create PDB 
SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  YES
         3 DEVPDB                         READ WRITE YES
         5 PDB2                           READ WRITE YES
         7 DEVDB                          READ WRITE YES
SQL> alter session set container=DEVDB;

Session altered.

SQL> @$ORACLE_HOME/rdbms/admin/noncdb_to_pdb.sql;
SQL> SET FEEDBACK 1
SQL> SET NUMWIDTH 10
SQL> SET LINESIZE 80
SQL> SET TRIMSPOOL ON
SQL> SET TAB OFF
SQL> SET PAGESIZE 100
SQL> SET VERIFY OFF
SQL>
SQL> WHENEVER SQLERROR EXIT;
SQL>
SQL> DOC
DOC>#######################################################################
DOC>#######################################################################
DOC>   The following statement will cause an "ORA-01403: no data found"
DOC>   error if we're not in a PDB.
DOC>   This script is intended to be run right after plugin of a PDB,
DOC>   while inside the PDB.
DOC>#######################################################################
DOC>#######################################################################
DOC>#
SQL>
SQL> VARIABLE cdbname VARCHAR2(128)
SQL> VARIABLE pdbname VARCHAR2(128)
SQL> BEGIN
  2    SELECT sys_context('USERENV', 'CDB_NAME')
  3      INTO :cdbname
  4      FROM dual
  5      WHERE sys_context('USERENV', 'CDB_NAME') is not null;
  6    SELECT sys_context('USERENV', 'CON_NAME')
  7      INTO :pdbname
  8      FROM dual
  9      WHERE sys_context('USERENV', 'CON_NAME') <> 'CDB$ROOT';
 10  END;
 11  /

PL/SQL procedure successfully completed.

SQL>
SQL> @@?/rdbms/admin/loc_to_common0.sql
SQL> Rem
...........................
...........................
...........................
...........................
SQL> alter session set "_enable_view_pdb"=false;

Session altered.

SQL>
SQL> SELECT dbms_registry_sys.time_stamp('utlrp_bgn') as timestamp from dual;

TIMESTAMP
--------------------------------------------------------------------------------
COMP_TIMESTAMP UTLRP_BGN              2022-08-06 21:00:37

1 row selected.

SQL>
SQL> DOC
DOC>   The following PL/SQL block invokes UTL_RECOMP to recompile invalid
DOC>   objects in the database. Recompilation time is proportional to the
DOC>   number of invalid objects in the database, so this command may take
DOC>   a long time to execute on a database with a large number of invalid
DOC>   objects.
DOC>
DOC>   Use the following queries to track recompilation progress:
DOC>
DOC>   1. Query returning the number of invalid objects remaining. This
DOC>      number should decrease with time.
DOC>         SELECT COUNT(*) FROM obj$ WHERE status IN (4, 5, 6);
DOC>
DOC>   2. Query returning the number of objects compiled so far. This number
DOC>      should increase with time.
DOC>         SELECT COUNT(*) FROM UTL_RECOMP_COMPILED;
DOC>
DOC>   This script automatically chooses serial or parallel recompilation
DOC>   based on the number of CPUs available (parameter cpu_count) multiplied
DOC>   by the number of threads per CPU (parameter parallel_threads_per_cpu).
DOC>   On RAC, this number is added across all RAC nodes.
DOC>
DOC>   UTL_RECOMP uses DBMS_SCHEDULER to create jobs for parallel
DOC>   recompilation. Jobs are created without instance affinity so that they
DOC>   can migrate across RAC nodes. Use the following queries to verify
DOC>   whether UTL_RECOMP jobs are being created and run correctly:
DOC>
DOC>   1. Query showing jobs created by UTL_RECOMP
DOC>         SELECT job_name FROM dba_scheduler_jobs
DOC>            WHERE job_name like 'UTL_RECOMP_SLAVE_%';
DOC>
DOC>   2. Query showing UTL_RECOMP jobs that are running
DOC>         SELECT job_name FROM dba_scheduler_running_jobs
DOC>            WHERE job_name like 'UTL_RECOMP_SLAVE_%';
DOC>#
SQL>
SQL> DECLARE
  2     threads pls_integer := &&1;
  3  BEGIN
  4     utl_recomp.recomp_parallel(threads);
  5  END;
  6  /
...........................
...........................
...........................
...........................
SQL> alter session set "_enable_view_pdb"=false;

Session altered.

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;
SQL>

SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  YES
         3 DEVPDB                         READ WRITE YES
         5 PDB2                           READ WRITE YES
         7 DEVDB                          MOUNTED
SQL>
SQL> exit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.14.0.0.0
[oracle@oraclelab1 ~]$
[oracle@oraclelab1 ~]$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Sat Aug 6 21:09:05 2022
Version 19.14.0.0.0

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


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.14.0.0.0

SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  YES
         3 DEVPDB                         READ WRITE YES
         5 PDB2                           READ WRITE YES
         7 DEVDB                          MOUNTED
SQL>
SQL> alter pluggable database DEVDB open;

Pluggable database altered.

SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  YES
         3 DEVPDB                         READ WRITE YES
         5 PDB2                           READ WRITE YES
         7 DEVDB                          READ WRITE NO
SQL>
SQL> select name from v$datafile;

NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/DEVDB/datafile/o1_mf_system_kgvmtpcn_.dbf
/u01/app/oracle/oradata/DEVDB/datafile/o1_mf_sysaux_kgvmw3hs_.dbf
/u01/app/oracle/oradata/DEVDB/datafile/o1_mf_undotbs1_kgvmwwmm_.dbf
/u01/app/oracle/oradata/DEVDB/datafile/o1_mf_users_kgvmwxo3_.dbf

SQL> 

Note:
We have already plugged or create DEVDB as PDB inside DEVCDB, If we try to open DEVDB as normal database which will not open. 

[oracle@oraclelab1 ~]$ env |grep ORA
ORACLE_SID=DEVDB
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=/u01/app/oracle/product/19.0.0.0/dbhome_1
[oracle@oraclelab1 ~]$

[oracle@oraclelab1 ~]$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Sat Aug 6 21:11:21 2022
Version 19.14.0.0.0

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

Connected to an idle instance.

SQL> startup;
ORACLE instance started.

Total System Global Area 3690985848 bytes
Fixed Size                  8903032 bytes
Variable Size             721420288 bytes
Database Buffers         2952790016 bytes
Redo Buffers                7872512 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 1 - see DBWR trace file
ORA-01110: data file 1:
'/u01/app/oracle/oradata/DEVDB/datafile/o1_mf_system_kgvmtpcn_.dbf'
SQL> 

Try to shuldwon PDB (DEVDB) from DEVCDB and try to open normal DEVDB database which will fail again
Once you create or plugin node database DEVDB as PDB inside DEVCDB, you dont have any option to revet that back. 

SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         7 DEVDB                          READ WRITE NO
SQL>
SQL> shut immediate;
Pluggable Database closed.
SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         7 DEVDB                          MOUNTED
SQL> conn / as sysdba
Connected.
SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  YES
         3 DEVPDB                         READ WRITE YES
         5 PDB2                           READ WRITE YES
         7 DEVDB                          MOUNTED
SQL>

[oracle@oraclelab1 ~]$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Sat Aug 6 21:14:36 2022
Version 19.14.0.0.0

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

Connected to an idle instance.

SQL> startup;
ORACLE instance started.

Total System Global Area 3690985848 bytes
Fixed Size                  8903032 bytes
Variable Size             721420288 bytes
Database Buffers         2952790016 bytes
Redo Buffers                7872512 bytes
Database mounted.
ORA-01122: database file 1 failed verification check
ORA-01110: data file 1:
'/u01/app/oracle/oradata/DEVDB/datafile/o1_mf_system_kgvmtpcn_.dbf'
ORA-01204: file number is 25 rather than 1 - wrong file

SQL>

Regards,
Mallik

No comments:

Post a Comment

Automation Script | Archivelog Generation Hourly Monitoring

1. List out all the running databases and pic one database where we want to monitore the archive log generation from last 1 month. [oracle@o...