*Let us we discuss oracle 12c architecture and explanation before you must have the knowledge on Oracle 11g architecture if you have good knowledge on the oracle 11g architecture it's easy to understand 12c

*Before that 12c Multiple databases reside on single server and single database contains multiple schemas apart from RAC each Oracle database had single instance, but in 12c it supports Many databases to one instance


What is multitenant Architecture?

*The Multiple tenants share the same source of a mutual benefit for different purposes at a very broad level like the same applies to Oracle database which means multiple databases can share a single database instance resources for different purposes on the same server.

*The Oracle 12c which is built on mulitenant foundation is called container database (CDB) and each container (CDB) resides inside is called pluggable database

12c Architecture


Multitenant Config:

*Multitenant configuration contains A CDB includes 0,1 or more PDB's we need license for this option

*Single multitenant configuration Does not require the licensed Oracle Multitenant option

*Non-CDB This is the same as the pre Oracle 12 c database architecture.


Multitenant Configuration


Note: the 12c does not mean it supports only multitenant configuration we can config like the same way of 11g also


About CDB & PDB:

Every CDB container has the following

1)The Root container:

The root (CDB$ROOT) stores Oracle-supplied metadata and common users. Each CDB has one root


2)The One Seed PDB:

The seed container is called PDB$SEED and there is one of these per CDB , It contains a system-supplied template that the CDB can use to create new PDBs and it does not store user data

3)Zero or more user-created PDBs:

The User container is called a pluggable database(PDB)which consists of user metadata and user data.





*Each of this root, the seed & PDB is called container, Each container has some unique container id (CON_ID)and container name (CON_NAME), Each PDB also has a globally unique identifier (GUID).

*A CDB can contain 253 PDBs including the SEED Container

*Starting up and Shutting down a CDB is no different than a Non-CDB except we need to manually mount and dismount associated PDBs

*CDB has common user environment. A User exists in the ROOT Container can login to any PDB with the privileges given. A CDB also has local users exclusive to PDBs. A Common user and role name must start with C## or c## and consists only of ASCII characters.

*If a common user is required to login to a container, "c##" must be supplied as a suffix. For example, If a common user "PDBADMIN" has the privilege to access a container PDB, We need to use it as "C##PDBADMIN" in order to login successfully to container PDB

*PDB is a user-created set of schemas, objects, and related structures that appears logically to an application as a separate database. Every PDB is owned by SYS, which is a common user in the CDB .

*The concept of a container is to separate Oracle metadata and user data by placing the two types of data into separate containers i.e system and user data


*The Purpose of PDB

1)to store specific data for an each application

2)Move data into a different CDB

3)Isolate grants within PDBs

* The PDB's name must be unique in the CDB because each PDB's has a service with its own unique name across all CDB whose services are exposed through a specific listener.

*PDB share the following files:

1)Undo Tablespace

2)Redo Logs

3)Control Files


5)Temporary Tablespace

Note: Some PDB may create their own temporary tablespace

*The system tablespace which resided in cdb and PDB containers how ever they contain different data

* In root container system tablespace consists Oracle metadata at the same time PDB container system tablespace consists of user metadata

*The CDBs contain pointers to the Oracle meta data in the root container, thus allowing the PDBs to access these system objects without duplicating them in the PDBs

1)Background Process:

*There is set of back ground process for the CDB, the PDB does not have any background process



2)Redo log files:

*Redo log files are common for entire CDB, the redo data changes are specifically associated with PDB.

*There is one active online redo log for a single-instance CDB or one active online redo log for each instance of an Oracle RAC CDB. A CDB also has a single set of archived redo log files.




we can only allocate memory to CDB because it is the only instance you need in a multitenant database



4)Control Files:

This file is common for entire CDB and it holds the information of the each and every change of all the PDB's



5)Undo Tablespace:

All the PDB's use the same undo tablespace, this file which resides on a single-instance CDB or one active undo tablespace for each instance of an Oracle RAC CDB.



NOTE: A CDB contains a set of system data files for each container and a set of user-created data files for each PDB. Also, CDB contains a CDB resource manager plan that allows resources management among the PDBs in that CDB.


6)Local users and local roles:

Local users can connect only to the PDB where the users were created. A common user can connect to all the PDBs that are part of a CDB.



7)Local metadata:

The local metadata is specific to each application running in a PDB and the information is not shared with other PDBs.






*The PDB's contains own SYSTEM and SYSAUX tablespace,it hold the information about only user meta data not the oracle metadata.

*The datafiles are associated with the specific container

*The tablespace always associated with only one container which is resides when we are created tablespace on the conatiner