1.启动CDB和PDB数据库
SQL> select con_id,dbid,name,open_mode from v$pdbs;
CON_ID DBID NAME OPEN_MODE
---------- ---------- ------------------------------ ----------
2 1226396669 PDB$SEED READ ONLY
3 411454583 DB12CCD MOUNTED
SQL> alter pluggable database all open;
Pluggable database altered.
SQL> select con_id,dbid,name,open_mode from v$pdbs;
CON_ID DBID NAME OPEN_MODE
---------- ---------- ------------------------------ ----------
2 1226396669 PDB$SEED READ ONLY
3 411454583 DB12CCD READ WRITE
2.创建PDB数据库
SQL> select name,cdb from v$database;
NAME CDB
--------- ---
DB12C YES
SQL> select pdb_id,pdb_name,dbid,status,creation_scn from dba_pdbs;
PDB_ID PDB_NAME DBID STATUS CREATION_SCN
---------- -------------------- ---------- --------- ------------
3 DB12CCD 411454583 NORMAL 1744330
2 PDB$SEED 1226396669 NORMAL 1594399
SQL> create pluggable database test admin user test identified by test file_name_convert=('/u01/app/oracle/oradata/cdb/pdbseed/','/u01/app/oracle/oradata/cdb/test/');
Pluggable database created.
create pluggable database test1 admin user test1 identified by test1 file_name_convert=('/u01/app/oracle/oradata/cdb/test/','/u01/app/oracle/oradata/cdb/test1/');
3.建立连接
--进入cdb
sqlplus / as sysdba
sqlplus sys/[email protected]:1521/cdb as sysdba
--进入pdb
3.1)通过tns方式用创建的admin user登录
[oracle@ora12cA ~]$ sqlplus sys/[email protected]:1521/test as sysdba
SQL> show con_name
CON_NAME
------------------------------
TEST
--查看admin user拥有的权限
SQL> select * from session_privs;
PRIVILEGE
----------------------------------------
SET CONTAINER
CREATE PLUGGABLE DATABASE
CREATE SESSION
3.2)通过set container来连接pdb
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB MOUNTED
4 TEST READ WRITE NO
SQL> alter session set container=test;
Session altered.
SQL> show con_name
CON_NAME
------------------------------
TEST
4.打开和关闭pdb
SQL>alter pluggable database all close immediate;
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB MOUNTED
4 TEST MOUNTED
--打开单个pdb
SQL> alter pluggable database pdb open;
Pluggable database altered.
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB READ WRITE NO
4 TEST MOUNTED
--打开所有pdb
SQL> alter pluggable database all open;
Pluggable database altered.
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB READ WRITE NO
4 TEST READ WRITE NO
--关闭所有pdb
SQL> alter pluggable database all close immediate;
Pluggable database altered.
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB MOUNTED
4 TEST
5.创建用户。
1).概述
在cdb默认是container=all,在cdb中只能创建全局用户;
在pdb默认是container=current,在pdb只能创建本地用户。
http://dovelauren.blog.51cto.com/9876026/1719310
如果在cdb中创建用户会在cdb和所有的pdb中创建该用户,但是pdb中的全局用户需要另外授权才能够在pdb中访问)。
2).创建全局用户
SQL> show con_name
CON_NAME
------------------------------
CDB$ROOT
SQL> create user c##t identified by t;
User created.
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB READ WRITE NO
4 PDB1 READ WRITE NO
3).创建本地用户
SQL> alter session set container=pdb1;
Session altered.
SQL> create user t identified by t;
User created.
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
4 PDB1 READ WRITE NO
6.用户授权
用户授权默认情况下是只会给当前container,在cdb中也可以指定container=all,对所有open的pdb且存在该用户都进行授权
Connected.
SQL> grant connect,resource to c##t;
Grant succeeded.
SQL> grant connect,resource to c##t container=all;
Grant succeeded.
7.修改参数
在cdb中修改,pdb会继承进去;如果在pdb中修改会覆盖pdb从cdb中继承的参数含义
SQL> show con_name
CON_NAME
------------------------------
CDB$ROOT
SQL> show parameter open_cursors
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
open_cursors integer 300
SQL> alter system set open_cursors=500;
System altered.
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB READ WRITE NO
4 PDB1 READ WRITE NO
SQL> alter session set container=pdb1;
Session altered.
SQL> show parameter open_cursors
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
open_cursors integer 500
SQL> alter system set open_cursors=100;
System altered.
SQL> show parameter open_cursors
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
open_cursors integer 100
SQL> show con_name
CON_NAME
------------------------------
PDB1
SQL> alter session set container=CDB$ROOT;
Session altered.
SQL> show parameter open_cursors
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
open_cursors integer 500