创建PDB表空间与用户(不创建通用用户)
Oracle12c中,增加了可插接数据库的概念,即PDB,允许一个数据库容器(CDB)承载多个可插拔数据库(PDB)。CDB全称为ContainerDatabase,中文翻译为数据库容器,PDB全称为PluggableDatabase,即可插拔数据库。在ORACLE 12C之前,实例与数据库是一对一或多对一关系(RAC):即一个实例只能与一个数据库相关联,数据库可以被多个实例所加载。而实例与数据库不可能是一对多的关系。当进入ORACLE 12C后,实例与数据库可以是一对多的关系。下面是官方文档关于CDB与PDB的关系图。
common user 和local user是和oracle 12c的新特性pluggable database(PDB)有关。在PDB中创建的用户就是local user。从上图可以看出,common user必须以大写或小写的c##开头。下面是官方文档User的关系图。
步骤:
1、安装,基本默认,默认安装会默认装一个PDB(orclpdb),
2、安装完之后登录,登录之后默认是CDB,创建CDB的表空间,(我试过如果单纯在PDB下创建表空间的话,之后创建用户无法指定表空间,意思是,CDB与PDB必须有相同名称的表空,才可以指定表空间,不然默认用的是TEMP与USERS);
>sqlplus sys/password as sysdba
SQL> show con_name;
SQL> select con_id,dbid,name,open_mode from v$pdbs;
--查看目前有的PDB容器
--创建CDB临时表空间(如果使用默认的临时表空间TEMP可以忽略这步)
SQL> create temporary tablespace wmstest_temp
tempfile 'C:\app\Administrator\virtual\oradata\wmstest_temp.dbf'
size 128m
autoextend on
next 128m maxsize 20480m
extent management local;
--创建CDB数据表空间(如果使用默认的表空间USERS可以忽略这步)
SQL>create tablespace wmstest_data
logging
datafile 'C:\app\Administrator\virtual\oradata\wmstest_data.dbf'
size 128m
autoextend on
next 128m maxsize 20480m
extent management local;
3、创建需要使用的PDB,我不使用默认的PDB,通过Datebase Configuration Assistant 创建一个PDB(wmstestpdb),创建完之后可以使用em界面来创建表空间 用户及授权等。
通过em界面可以省事很多
4、如果不通过em界面的话,使用命令行的话,需要执行以下步骤
--切换到指定的库,方才创建的PDB是(WMSTESTPDB);
SQL> alter session set container=WMSTESTPDB;
-- 查看切换之后是否在PDB下,上一步会有显示,这一步纯粹无聊的
SQL> show con_name;
SQL> select con_id,dbid,name,open_mode from v$pdbs;
--如果是刚创建的PDB默认已经打开,不过可以执行startup命令确认下,反正如果已经打开的话也不会重复打开
SQL> startup;
--创建临时表空间(与CDB同名,不同tempfile, 的文件即可),其实用EM界面还有更多可选参数
SQL> create temporary tablespace wmstest_temp
tempfile 'C:\app\Administrator\virtual\oradata\wmstestpdb_temp.dbf'
size 128m
autoextend on
next 128m maxsize 20480m
extent management local;
--创建数据表空间(与CDB同名,不同tempfile, 的文件即可)
SQL> create tablespace wmstest_data
logging
datafile 'C:\app\Administrator\virtual\oradata\wmstestpdb_data.dbf'
size 128m
autoextend on
next 128m maxsize 20480m
extent management local;
-- 1 此时是在PDB下哦,创建用户并制定表空间
-- WMSTEST_DATA ,WMSTEST_TEMP必须同时存在CDB与PDB中哦,不然会报错哦
SQL> create user wmstest identified by wms123 default tablespace WMSTEST_DATA temporary tablespace WMSTEST_TEMP;
-- 2 使用默认的表空间(USERS,TEMP在CDB中默认存在有,并且新建的PDB也是默认存在的)
SQL> create user wmstest identified by wms123 default tablespace USERS temporary tablespace TEMP;
--给用户授予权限,授所有权限
SQL> grant all to wmstest;
其他的sql
--其他
--删除用户
SQL> drop user wmstest cascade;
--删除表空间
SQL> DROP TABLESPACE wmstest_temp INCLUDING CONTENTS AND DATAFILES;
SQL> DROP TABLESPACE wmstest_data INCLUDING CONTENTS AND DATAFILES;
-- 查看表空间
SQL> select tablespace_name, file_id, file_name,
round(bytes/(1024*1024),0) total_space
from dba_data_files
order by tablespace_name;
-- 查看用户
SQL> select * from dba_users;
5 、使用PLSQL连接
配置
tnsnames.ora
# wmstest/wms123
wmstestpdb =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = IP )(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = WMSTESTPDB)
)
)
如此可以连接并操作数据库了。