Renaming the PDBS is very easy in the CDB / PDB architure.
With 18c onwards , we can have 3 pdbs with the regular oracle license.
Please refer to the documentation for further details.
In my example , I have 3 pdbs. We will be renaming one of the pdbs ( from PDB1 to pdb_lx).
Here are my list of PBS
SQL> select name from v$pdbs;
NAME
--------------------------------
PDB$SEED
PDB1
PDB2
PDB3
Let us confirm if we are in the correct container.
SQL> alter session set container=PDB1;
Session altered.
SQL> show con_id
CON_ID
------------------------------
3
SQL> show con_name
CON_NAME
------------------------------
PDB1
PDB needs to be restricted state for it to be renamed.
So , we will close and reopen in the restricted mode.
SQL> alter pluggable database rename global_name to pdb_lx;
alter pluggable database rename global_name to pdb_lx
*
ERROR at line 1:
ORA-65045: pluggable database not in a restricted mode
SQL> alter pluggable database PDB1 close;
Pluggable database altered.
SQL> alter pluggable database PDB1 open restricted;
Pluggable database altered.
SQL> alter pluggable database rename global_name to pdb_lx;
Pluggable database altered.
Just to confirm , we will select the old name for the PDB.
As expected , this will fail.
SQL> alter session set container=PDB1;
ERROR:
ORA-65011: Pluggable database PDB1 does not exist.
Even though the renaming of the PDB is successful , the underlying file structure still has pdb1.
$ ls -lrt /ora01/oradata/CDBLX/pdb1
total 640088
-rw-r-----. 1 oracle oinstall 37756928 Apr 19 11:32 temp01.dbf
-rw-r-----. 1 oracle oinstall 5251072 Apr 19 11:39 users01.dbf
-rw-r-----. 1 oracle oinstall 104865792 Apr 19 11:39 undotbs01.dbf
-rw-r-----. 1 oracle oinstall 283123712 Apr 19 11:39 system01.dbf
-rw-r-----. 1 oracle oinstall 262152192 Apr 19 11:39 sysaux01.dbf
We will create directory and move the datafiles ONLINE ( hey , we are in 19c) .
mkdir -p / /ora01/oradata/CDBLX/pdb_lx
$ ls -lrt /ora01/oradata/CDBLX/pdb_lx/
total 0
$ sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Mon Apr 19 11:47:46 2021
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
SQL> alter session set container=pdb_lx;
Session altered.
SQL> alter database move datafile '/ora01/oradata/CDBLX/pdb1/undotbs01.dbf' to '/ora01/oradata/CDBLX/pdb_lx/undotbs01.dbf';
Database altered.
SQL> alter database move datafile '/ora01/oradata/CDBLX/pdb1/sysaux01.dbf' to '/ora01/oradata/CDBLX/pdb_lx/sysaux01.dbf';
Database altered.
SQL> alter database move datafile '/ora01/oradata/CDBLX/pdb1/system01.dbf' to '/ora01/oradata/CDBLX/pdb_lx/system01.dbf';
Database altered.
SQL> alter database move datafile '/ora01/oradata/CDBLX/pdb1/users01.dbf' to '/ora01/oradata/CDBLX/pdb_lx/users01.dbf';
Database altered.
We will drop the temp tablespace datafile from the old directory and recreate it in the new directory.
SQL> alter database tempfile '/ora01/oradata/CDBLX/pdb1/temp01.dbf' drop including datafiles;
Database altered.
SQL> alter tablespace TEMP add tempfile '/ora01/oradata/CDBLX/pdb_lx/temp01.dbf' size 1G reuse;
Tablespace altered.
Let us confirm the contents of the directory structure
SQL> ! ls -lrt /ora01/oradata/CDBLX/pdb1/
total 0
SQL> ! ls -lrt /ora01/oradata/CDBLX/pdb_lx
total 641056
-rw-r-----. 1 oracle oinstall 104865792 Apr 19 11:48 undotbs01.dbf
-rw-r-----. 1 oracle oinstall 262152192 Apr 19 11:49 sysaux01.dbf
-rw-r-----. 1 oracle oinstall 283123712 Apr 19 11:49 system01.dbf
-rw-r-----. 1 oracle oinstall 5251072 Apr 19 11:49 users01.dbf
-rw-r-----. 1 oracle oinstall 1073750016 Apr 19 11:49 temp01.dbf
Let us say close the PDB and open it in the normal mode.
SQL> alter pluggable database pdb_lx close;
Pluggable database altered.
SQL> alter pluggable database pdb_lx open;
Pluggable database altered.
We are back in business with the new name for the PDB.
For the databases in non-CDB architecture , we will be using DBNEWID (nid) utility.