Oracle12c 中,增加了可插接数据库的概念,即PDB,允许一个数据库容器(CDB)承载多个可插拔数据库(PDB)。CDB全称为 ContainerDatabase,中文翻译为数据库容器,PDB全称为PluggableDatabase,即可插拔数据库。下面是官方文档关于CDB与PDB的关系图。
在CDB中,只能创建以c##或C##开头的用户,如果不加c##,则会提示错误“ORA-65096:公用用户名或角色名无效”,只有在PDB数据库中才能创建我们习惯性命名的用户,oracle称之为Local User,前者称之为Common User。本文主要解决如何创建DPB用户并设置默认表空间全过程。
1、创建PDB
在12C安装时,会提示你是否安装可插接式数据库,如下图所示:
该项为默认安装,如果当时没有安装,可以用以下语句创建:
CREATE pluggable DATABASE pdborcl admin USER pdbadmin identified BY Learning roles=(connect) file_name_convert= ('D:\App\Oracle\oradata\orcl\pdbseed', 'D:\App\Oracle\oradata\orcl\pdborcl');
其中pdborcl是我创建的可插接式数据库,pdbadmin是创建的用户,Learning是密码。file_name_convert换成相应目录。至此PDB创建成功。
2、启动PDB数据库
1)打开SQL Plus, 以system用户登录,注意输入密码后面加入“as sysdba”;
这是如果创建普通用户则会提示“ORA-65096:公用用户名或角色名无效”。
输入
show con_name
显示如下图:
可以看出当前容器为CDB。
2)输入以下代码,启动PDB数据库:
alter session set container=pdborcl; startup;
如果需要创建个人账户,运行以下代码
--Oracle创建用户权限 --创建用户 create user pdbadmin identified by pdbadmin default tablespace test;
3)修改tnsnames.ora:
在"D:\App\Oracle\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) ) )
保存后退出。
3、pl/sql developer登陆
这里要注意Database的选择。
4、创建默认表空间
1)用dba账户登陆
2)创建表空间,并修改用户默认表空间
1 -- 创建临时空间 2 create temporary tablespace pdbadmin_temp 3 tempfile 'D:\App\Oracle\oradata\orcl\pdborcl\pdbadmin_temp01.dbf' 4 size 32m 5 autoextend on 6 next 32m MAXSIZE unlimited 7 extent management local; 8 9 10 -- 创建数据表空间 11 create tablespace pdbadmin_data 12 logging 13 datafile 'D:\App\Oracle\oradata\orcl\pdborcl\pdbadmin_data01.dbf' 14 size 10240m 15 autoextend on 16 next 100m MAXSIZE unlimited 17 extent management local; 18 19 -- 更改用户默认表空间 20 alter user pdbadmin default tablespace pdbadmin_data temporary tablespace pdbadmin_temp;
参考资料:
1、http://www.cnblogs.com/kerrycode/p/3386917.html
2、http://blog.csdn.net/yuguanquan1990/article/details/17495331