User Tools

Site Tools


multitenantarchitecture

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
multitenantarchitecture [2015/07/28 08:37] – created z0hpvkmultitenantarchitecture [2025/03/08 22:24] (current) – external edit 127.0.0.1
Line 1: Line 1:
 ===== Multitenant Architecture ===== ===== Multitenant Architecture =====
 +==== Advantages ====
 +  * Database Consolidation
 +  * Reduced Costs
 +  * Rapid Implementation
 +  * Simplified Management
 +  * Separation of Duties
 +  * Simplified Tuning
 +  * Simplified Patching
 +
 +==== Creating a CDB ====
 +Create spfile setting parameter ENABLE_PLUGGABLE_DATABASES = TRUE\\
 +Create instance by specifying STARTUP NOMOUNT\\
 +Create database using CREATE DATABASE command, adding new clause ENABLE_PLUGGABLE_DATABASES. \\
 + If you are not using OMF you must either ... \\
 + Use the SEED FILE_NAME_CONVERT option or set PDB_FILE_NAME_CONVERT in spfile \\
 +Connect to root and run scripts to create data dictionary\\
 +
 ==== Opening / Closing Pluggable Databases ==== ==== Opening / Closing Pluggable Databases ====
 <code>SQL> alter session set container = pdb2; <code>SQL> alter session set container = pdb2;
Line 17: Line 34:
 Pluggable database altered.</code> Pluggable database altered.</code>
  
 +I think it always safer to use the "alter pluggable" command so you definitely know which database you are closing.
 +
 +Sometimes you may get an error when opening a pluggable database
 +<code>SQL> alter pluggable database pdb2 open;
 +
 +Warning: PDB altered with errors.</code>
 +
 +The "show pdbs" reveals that pluggable database pdb2 has been opened in restricted mode.
 +<code>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 YES</code>
 +
 +Use the view PDB_PLUG_IN_VIOLATIONS to see what the error is.\\
 +The full error message is not always written to the Alert Log.
 +<code>select time, message from pdb_plug_in_violations;
 +
 +TIME                      MESSAGE
 +------------------------- --------------------------------------------------------------------------------
 +28-JUL-15 08.59.31.507182 Sync PDB failed with ORA-959 during 'CREATE USER c##ian IDENTIFIED BY *DEFAULT T
 +                          ABLESPACE "USERS" TEMPORARY TABLESPACE "TEMP" container = all'</code>
 +                          
 +In the above case I had forgotten to create the tablespace users in database pdb2.
 +
 +==== Unplugging a PDB ====
 +
 +<code>SQL> alter session set container=pdb2;
 +
 +Session altered.
 +
 +SQL> shutdown immediate;
 +Pluggable Database closed.
 +SQL> show pdbs
 +
 +    CON_ID CON_NAME   OPEN MODE  RESTRICTED
 +---------- ------------------------------ ---------- ----------
 + 4 PDB2   MOUNTED
 +
 +SQL> conn / as sysdba
 +Connected.
 +SQL> alter pluggable database pdb2 unplug into '/home/oracle/pdb2.xml';
 +
 +Pluggable database altered.
 +
 +SQL> select pdb_name, status from dba_pdbs;
 +
 +PDB_NAME STATUS
 +--------------- ---------
 +PDB$SEED NORMAL
 +PDB1 NORMAL
 +PDB2 UNPLUGGED
 +
 +SQL> drop pluggable database pdb2;
 +
 +Pluggable database dropped.</code>
 +
 +==== Plugging In an Unplugged PDB ====
 +For this example I will simply plug back in the database that was dropped from above.\\
 +If I was moving the PDB to a new location on the server I would need to use the 'copy' parameter at the end of the command.
 +<code>SQL> create pluggable database pdb3 using '/home/oracle/pdb2.xml';
 +
 +Pluggable database created.</code>
 +
 +The database is in MOUNTED mode and must be opened after it has been created.\\
 +The Service Name was created automatically when the PDB was plugged in.
  
multitenantarchitecture.1438072633.txt.gz · Last modified: 2025/03/08 22:23 (external edit)