基本概念:
Multitenant Environment:多租戶環境
CDB(Container Database):數據庫容器
PD(Pluggable Database):可插拔數據庫
CDB與PDB關係圖
SQL> select con_id,dbid,NAME,OPEN_MODE from v$pdbs;
CON_ID DBID NAME OPEN_MODE
---------- ---------- ------------------------------ ----------
2 3519850196 PDB$SEED READ ONLY
3 575147372 PDB1 READ WRITE
4 2788087049 HJ_PDB READ WRITE
SQL> CREATE PLUGGABLE DATABASE hj_pdb ADMIN USER xff IDENTIFIED BY sys
2 FILE_NAME_CONVERT= ('/home/oracle/app/oracle/oradata/D12C1/pdbseed/','/home/oracle/app/oracle/oradata/D12C1/HJPDB/');
Pluggable database created.
SQL> CREATE PLUGGABLE DATABASE hj1_pdb ADMIN USER hjsys IDENTIFIED BY sys
2 FILE_NAME_CONVERT = ('/home/oracle/app/oracle/oradata/D12C1/','/home/oracle/app/oracle/oradata/D12C1/HJPDB1/');
Pluggable database created.
注意CON_ID:alter pluggable database hj1_pdb open;
alter pluggable database all close immediate
SQL> select con_id,name from v$datafile;
CON_ID NAME
---------- ----------------------------------------------------------------------------------------------------
1 /home/oracle/app/oracle/oradata/D12C1/system01.dbf
1 /home/oracle/app/oracle/oradata/D12C1/sysaux01.dbf
1 /home/oracle/app/oracle/oradata/D12C1/undotbs01.dbf
2 /home/oracle/app/oracle/oradata/D12C1/pdbseed/system01.dbf
1 /home/oracle/app/oracle/oradata/D12C1/users01.dbf
2 /home/oracle/app/oracle/oradata/D12C1/pdbseed/sysaux01.dbf
3 /home/oracle/app/oracle/oradata/D12C1/PDB1/system01.dbf
3 /home/oracle/app/oracle/oradata/D12C1/PDB1/sysaux01.dbf
3 /home/oracle/app/oracle/oradata/D12C1/PDB1/PDB1_users01.dbf
4 /home/oracle/app/oracle/oradata/D12C1/HJPDB/system01.dbf
4 /home/oracle/app/oracle/oradata/D12C1/HJPDB/sysaux01.dbf
5 /home/oracle/app/oracle/oradata/D12C1/HJPDB1/pdbseed/system01.dbf
5 /home/oracle/app/oracle/oradata/D12C1/HJPDB1/pdbseed/sysaux01.dbf
13 rows selected.
<pre name="code" class="html">SQL> desc v$datafile
Name Null? Type
----------------------------------------- -------- ----------------------------
FILE# NUMBER
CREATION_CHANGE# NUMBER
CREATION_TIME DATE
TS# NUMBER
RFILE# NUMBER
STATUS VARCHAR2(7)
ENABLED VARCHAR2(10)
CHECKPOINT_CHANGE# NUMBER
CHECKPOINT_TIME DATE
UNRECOVERABLE_CHANGE# NUMBER
UNRECOVERABLE_TIME DATE
LAST_CHANGE# NUMBER
LAST_TIME DATE
OFFLINE_CHANGE# NUMBER
ONLINE_CHANGE# NUMBER
ONLINE_TIME DATE
BYTES NUMBER
BLOCKS NUMBER
CREATE_BYTES NUMBER
BLOCK_SIZE NUMBER
NAME VARCHAR2(513)
PLUGGED_IN NUMBER
BLOCK1_OFFSET NUMBER
AUX_NAME VARCHAR2(513)
FIRST_NONLOGGED_SCN NUMBER
FIRST_NONLOGGED_TIME DATE
FOREIGN_DBID NUMBER
FOREIGN_CREATION_CHANGE# NUMBER
FOREIGN_CREATION_TIME DATE
PLUGGED_READONLY VARCHAR2(3)
PLUGIN_CHANGE# NUMBER
<span style="color:#ff6666;"> PLUGIN_RESETLOGS_CHANGE# NUMBER
PLUGIN_RESETLOGS_TIME DATE
CON_ID NUMBER</span>
cdb信息
SQL> select tablespace_name,con_id from cdb_tablespaces;
TABLESPACE_NAME CON_ID
------------------------------ ----------
SYSTEM 1
SYSAUX 1
UNDOTBS1 1
TEMP 1
USERS 1
SQL> col file_name for a50
SQL> select file_name,con_id from cdb_data_files;
FILE_NAME CON_ID
-------------------------------------------------- ----------
/home/oracle/app/oracle/oradata/D12C1/system01.dbf 1
/home/oracle/app/oracle/oradata/D12C1/sysaux01.dbf 1
/home/oracle/app/oracle/oradata/D12C1/undotbs01.dbf 1
/home/oracle/app/oracle/oradata/D12C1/users01.dbf 1
在root中創建用戶c##1,用戶名需要以c##開頭,在root中創建的用戶會複製到所有的pdbs中,除了seed pdb。SQL> create user c##2 identified by password container=all ;
User created.
SQL> select username,common,con_id from cdb_users where username like 'C##%' ;
SQL> col username for a10
SQL> /
USERNAME COM CON_ID
---------- --- ----------
C##2 YES 1
C##2 YES 5
C##2 YES 4
C##2 YES 3
SQL>
鏈接pdbSQL> ALTER SESSION SET CONTAINER =PDB$SEED;
Session altered.
SQL> select con_id,dbid,NAME,OPEN_MODE from v$pdbs;
CON_ID DBID NAME OPEN_MODE
---------- ---------- ------------------------------ ----------
2 3519850196 PDB$SEED READ ONLY
SQL> ALTER SESSION SET CONTAINER =CDB$ROOT;
Session altered.
SQL> select con_id,dbid,NAME,OPEN_MODE from v$pdbs;
CON_ID DBID NAME OPEN_MODE
---------- ---------- ------------------------------ ----------
2 3519850196 PDB$SEED READ ONLY
3 575147372 PDB1 READ WRITE
4 2788087049 HJ_PDB READ WRITE
5 3892046480 HJ1_PDB READ WRITE
SQL>ALTER SESSION SET CONTAINER =HJ1_PDB;</span>
Session altered.
SQL> select con_id,dbid,NAME,OPEN_MODE from v$pdbs;
CON_ID DBID NAME OPEN_MODE
---------- ---------- ------------------------------ ----------
5 3892046480 HJ1_PDB READ WRITE
SQL>
方法2:
hj1_pdb =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = ora12.dom)(PORT = 1522))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = hj1_pdb)
)
)
[oracle@ora12 admin]$ tnsping hj1_pdb
TNS Ping Utility for Linux: Version 12.1.0.2.0 - Production on 06-JAN-2015 19:29:2
Copyright (c) 1997, 2014, Oracle. All rights reserved.
Used parameter files:
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = ora12.dom)(PORT = 1522)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = hj1_pdb)))
OK (30 msec)
[oracle@ora12 admin]$ sqlplus sys@hj1_pdb as sysdba
SQL*Plus: Release 12.1.0.2.0 Production on Tue Jan 6 19:29:49 2015
Copyright (c) 1982, 2014, Oracle. All rights reserved.
Enter password:
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
SQL>
刪除pdb
SQL> select con_id,dbid,NAME,OPEN_MODE from v$pdbs;
CON_ID DBID NAME OPEN_MODE
---------- ---------- ------------------------------ ----------
2 3519850196 PDB$SEED READ ONLY
3 575147372 PDB1 READ WRITE
4 2788087049 HJ_PDB READ WRITE
5 3892046480 HJ1_PDB READ WRITE
SQL> alter pluggable database hj1_pdb close immediate;
Pluggable database altered.
SQL> DROP PLUGGABLE DATABASE hj1_pdb INCLUDING DATAFILES;
Pluggable database dropped.
SQL> select con_id,dbid,NAME,OPEN_MODE from v$pdbs;
CON_ID DBID NAME OPEN_MODE
---------- ---------- ------------------------------ ----------
2 3519850196 PDB$SEED READ ONLY
3 575147372 PDB1 READ WRITE
4 2788087049 HJ_PDB READ WRITE
SQL>
<pre name="code" class="html">SQL> <span style="color:#ff0000;">show con_name;</span>
CON_NAME
------------------------------
CDB$ROOT
SQL>