Oracle:cdb和pdb

Oracle 12C引入了CDB与PDB的新特性:
cdb(Container Database)数据库容器
pdb(pluggable database)插接式数据库,也叫可插拔数据库。(也可以看作一种容器)
默认启动的是cdb,pdb没启动。

--查看当前容器,在sqlplus命令行下输入:
show con_name

--查看CDB中有多少个PDB
select * from v$pdbs;

--切换CDB和PDB
--切换到PDB后一般需要先启动,在sqlplus命令行下输入:startup,关闭是shutdown
alter session set container=ORCLPDB;
alter session set container=CDB$ROOT;
--CDB存储着ORACLE提供的元数据和公共用户(Common User),元数据的一个例子是ORACLE提供的PL/SQL包的源代码,公共用户是指在每个容器中都存在的用户。

--在PDB中建立用户,用户名不用加C##开头,建立的是本地用户。
--在CDB中新建用户,用户名需要加C##开头,建立的是公共用户(Common User)

安装数据库时候如果打开了PDB功能(勾选了创建容器数据库复选框),则会默认生成一个pdb,否则可以用以下语句创建PDB:

--创建pdb
CREATE pluggable DATABASE orclpdb admin USER spark identified by 12345a roles=(connect) file_name_convert= ('D:\oracle\oradata\orcl\pdbseed', 'D:\oracle\oradata\orcl\orclpdb'); 

--删除pdb
drop pluggable database orclpdb including datafiles;

默认容器连接没有PDB只有CBD,只能通过sqlplus连接到CDB:

sqlplus sys as sysdba
#或
sqlplus / as sysdba

若想增加PDB容器连接,可以在$ORACLE_HOME/product/12.1.0/dbhome_1/NETWORK/ADMIN/tnsnames.ora文件中添加链接字符串:

PDBORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = PDBORCL)
    )
  )

这样PLSQL Developer在建立连接时,选择数据库的下拉框中就可以直接选择PDBORCL库了。
也可以直接用sqlplus连接:

sqlplus user@pdborcl as 连接类型
posted @ 2019-01-02 14:13  xuejianbest  阅读(1475)  评论(0编辑  收藏  举报