Professional Documents
Culture Documents
12c Single-Tenant:
Multitenant Features for All Editions
12c Single-Tenant
Infrastructure at your Service.
About me
Franck Pachot
Senior consultant
Oracle Technology Leader
Based In Switzerland
> 100% self-financed Swiss company
> Over CHF6 mio. turnover
CDB$ROOT
PDB$SEED
PDB
PDB
CDB
Incorrect:
> CDB$ROOT is a container but cannot be unplugged
> PDB$SEED is a PDB but cannot be unplugged
> When you unplug, you do not detach anything. You just close it forever.
CDB$ROOT
SYSTEM
CDB$ROOT:SYSAUX
CDB
Non-CDB1
CDB
SYSAUX
CDB$ROOT:UNDO
UNDO
USER_DATA1 PDB$SEED:SYSTEM
PDB$SEED
PDB$SEED:SYSAUX
PDB_APP1:SYSTEM
PDB_APP1
SYSTEM
Non-CDB2
PDB_APP1:SYSAUX
SYSAUX
PDB_APP1:USER_DATA1
UNDO
PDB_APP2:SYSTEM
Without multitenant option we
USER_DATA2
PDB_APP2
PDB_APP2:SYSAUX
can create only one user PDB
PDB_APP2:USER_DATA2
CDB$ROOT
CDB$ROOT:SYSAUX
CDB1
CDB$ROOT:UNDO
SYSTEM PDB$SEED:SYSTEM
Non-CDB1
PDB$SEED
PDB$SEED:SYSAUX
SYSAUX
UNDO
PDB_APP1:SYSTEM
PDB_APP1
USER_DATA1 PDB_APP1:SYSAUX
PDB_APP1:USER_DATA1
CDB$ROOT:SYSTEM
CDB$ROOT
CDB$ROOT:SYSAUX
CDB2
CDB$ROOT:UNDO
SYSTEM
Non-CDB2
PDB$SEED:SYSTEM
SYSAUX
PDB$SEED
PDB$SEED:SYSAUX
UNDO
USER_DATA2
PDB_APP1:SYSTEM
PDB_APP1
PDB_APP1:SYSAUX
PDB_APP12USER_DATA2
NAME AUX_COUNT
-------------------- ----------
Oracle Multitenant 4096
> No history stored, so if you created one more PDB by mistake, just drop it
PDB_APP2:USER_DATA2
PDB_APP1:USER_DATA1
PDB_APP2:SYSTEM
PDB_APP1:SYSTEM
PDB_APP2:SYSAUX
PDB$SEED:SYSTEM
PDB_APP1:SYSAUX
PDB$SEED:SYSAUX
CDB$ROOT:SYSTEM
CDB$ROOT:SYSAUX
CDB$ROOT:UNDO
Containers where con_id ≥ 2
> are PDBs (pluggable databases)
exp/imp
> Logical transport (like select/insert) -> very slow
Data Pump export / import
> Includes direct-path but still logical -> flexible but slow
RMAN Duplicate
> Physical transport -> fast but same database version
Transportable Tablespaces
> Physical transport of user data, logical transport of metadata
-> fast and cross version
but source in read-only
Unplug / Plug or PDB clone
> Physical transport of user data and metadata
-> the fastest
-> online when in local undo
CDB$ROOT
2. Unplug from non-CDB CDB$ROOT:SYSAUX
CDB
and plug into CDB CDB$ROOT:UNDO
3. noncdb_to_pdb.sql
PDB$SEED:SYSTEM
PDB$SEED
PDB$SEED:SYSAUX
PDB_APP1:SYSTEM
PDB_APP1:SYSTEM
SYSTEM
Non-CDB1
PDB_APP1
SYSAUX PDB_APP1:SYSAUX
UNDO PDB_APP1:USER_DATA1
USER_DATA1
With non-CDB
> You can transport only data with TTS
> Metadata has to be re-created
> And this transport is not available in Standard Edition
In Single-Tenant
> You can transport physically data + metadata
> In all editions
> Online
> With a simple command
CDB$ROOT:SYSAUX data
CDB
CDB$ROOT:UNDO
undo
PDB$SEED:SYSTEM
SYSTEM
transaction
PDB$SEED
PDB$SEED:SYSAUX
PDB$SEED:UNDO
undo
PDB_APP1:SYSTEM
data
PDB_APP1
PDB_APP1:SYSAUX
> Point In Time Recovery needs to rollback transactions from that PIT
> Restore UNDO at that PIT, and this cannot overwrite CDB UNDO
§
PDB_APP1 PDB$SEED CDB$ROOT
Common privileges
> From CDB$ROOT to common users
> with container=common
Alternative:
SQL> create procedure kill_session (…) as begin
if … /* check if session USERNAME */
execute immediate 'alter system kill session …'
…
SQL> grant EXECUTE on kill_session to MY_DEVELOPER;
> Great encapsulation, but how does it work with TOAD ‘kill’ button?
for a PDB
PRIVATE_DBAAS EMPTY
PUBLIC_DBAAS EMPTY
SAAS EMPTY
for a PDB
SQL> alter lockdown profile APPDBA_PROF disable statement = ('ALTER SYSTEM')
clause all except = ('KILL SESSION');
> Any user will get an ‘ORA-01031: insufficient privileges’ for any ALTER
SYSTEM command, except an ALTER SYSTEM KILL SESSION
Only ALTER SYSTEM commands are currently documented
for a PDB
SQL> alter lockdown profile APPDBA_PROF disable feature =
('UTL_HTTP','UTL_SMTP','UTL_TCP');
strings $ORACLE_HOME/bin/oracle
NETWORK_ACCESS TRACE_VIEW_ACCESS
COMMON_SCHEMA_ACCESS AQ_PROTOCOLS
UTL_TCP SECURITY_POLICIES
UTL_HTTP EXTERNAL_AND_GLOBAL_AUTHENTICATION
UTL_SMTP LOCAL_SYSOPER_RESTRICTED_MODE_CONNECT
UTL_INADDR COMMON_USER_CONNECT
XDB_PROTOCOLS FILE_TRANSFER
CTX_PROTOCOLS AWR_ACCESS
CTX_LOGGING COMMON_USER_LOCAL_SCHEMA_ACCESS
OS_ACCESS LOCAL_USER_COMMON_SCHEMA_ACCESS
UTL_FILE EXTERNAL_FILE_ACCESS
EXTERNAL_PROCEDURES DROP_TABLESPACE_KEEP_DATAFILES
JAVA_OS_ACCESS LOB_FILE_ACCESS
JAVA_RUNTIME ADR_ACCESS
In 12.1
> we can limit directories to a PATH_PREFIX at PDB creation
> Cannot be changed after creation
> NONE if we want absolute path
> We can use OMF (CREATE_FILE_DEST) to encourage new datafile location
4. Shutdown source
5. Plug intopluggable
create CDB database PDBORCL using /oradata/PDBORCL.xml';
OraWorld-Team
They also write articles
12c Single-Tenant 61
8.11.2016
12c Multitenant
How to learn it?
Authors
> Anton Els
> Vít Špinka
> Franck Pachot
Reviewers
> Deiby Gómez
> Arup Nanda
> Mike Donovan
Availability
> Christmas 2016