数据库12C创办PDB表空间用户及授权(DEMO)
创建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) ) )
如此可以连接并操作数据库了。