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 连接类型