表空间概念
Oracle 12C引入了CDB与PDB的新特性,在ORACLE 12C数据库引入的多租用户环境(Multitenant Environment)中,允许一个数据库容器(CDB)承载多个可插拔数据库(PDB)。CDB全称为Container Database,中文翻译为数据库容器,PDB全称为Pluggable Database,即可插拔数据库。在ORACLE 12C之前,实例与数据库是一对一或多对一关系(RAC):即一个实例只能与一个数据库相关联,数据库可以被多个实例所加载。而实例与数据库不可能是一对多的关系。当进入ORACLE 12C后,实例与数据库可以是一对多的关系
表空间是数据库的逻辑划分,一个表空间只能属于一个数据库。所有的数据库对象都存放在指定的表空间中。但主要存放的是表, 所以称作表空间。Oracle数据库中至少存在一个表空间,即SYSTEM的表空间
CDB与PDB概念
Oracle 12C引入了CDB与PDB的新特性,在ORACLE 12C数据库引入的多租用户环境(Multitenant Environment)中,允许一个数据库容器(CDB)承载多个可插拔数据库(PDB)。CDB全称为Container Database,中文翻译为数据库容器,PDB全称为Pluggable Database,即可插拔数据库。在ORACLE 12C之前,实例与数据库是一对一或多对一关系(RAC):即一个实例只能与一个数据库相关联,数据库可以被多个实例所加载。而实例与数据库不可能是一对多的关系。当进入ORACLE 12C后,实例与数据库可以是一对多的关系
实验环境
系统环境:centos7.4
Oracle服务IP地址:192.168.100.99
光盘挂载目录:/mnt/sr0
安装相关目录:/opt
注意:如果没有搭建oracle 12c的朋友可以查看我之前写的博客,里面有详细的搭建过程
http://blog.51cto.com/11905606/2295913
命令步骤
一、登录数据库
[[email protected] ~]$ lsnrctl
LSNRCTL> start #启动监听功能
LSNRCTL> quit
[[email protected] ~]$ sqlplus / as sysdba #登录数据库
sql> startup #启动数据库
二、表空间管理
1、创建表空间
1)、创建临时表空间
sql> create temporary tablespace user_temp #指定表空间名称 2 tempfile ‘/opt/app/oracle/oradata/TEMPWORK01.DBF‘ #指定表空间物理路径 3 size 50m #指定表空间大小 4 autoextend on #设置表空间自动扩展 5 next 50m maxsize 20480m #每次扩展50M,最大扩展20480M 6 extent management local; #表空间的区管理为本地管理,为的是减少分配extent的时候产生的内部递归sql,提高数据库分配空间的效率.
[[email protected] ~]# cd /opt/app/oracle/oradata/
[[email protected] oradata]# ls
2)、创建数据表空间
sql> create tablespace db_work 2 datafile ‘/opt/app/oracle/oradata/WORKDB01.DBF‘ 3 size 50m 4 autoextend on 5 next 50m maxsize 20480m 6 extent management local;
2、查看表空间
sql> select tablespace_name from dba_tablespaces; TABLESPACE_NAME -------------------------------------------------------------------------------- SYSTEM SYSAUX UNDOTBS1 TEMP USERS USER_TEMP DB_WORK 已选择 7 行。
3、调整表空间大小
法一:直接修改大小
sql> alter database datafile 2 ‘/opt/app/oracle/oradata/WORKDB01.DBF‘ 3 resize 80m; #重新设置大小
[[email protected] ~]# cd /opt/app/oracle/oradata/
[[email protected] oradata]# ll -h
法二:添加文件
sql> alter tablespace db_work 2 add datafile 3 ‘/opt/app/oracle/oradata/WORKDB02.DBF‘ 4 size 50m 5 autoextend on 6 next 50m maxsize 20480m;
[[email protected] ~]# cd /opt/app/oracle/oradata/
[[email protected] oradata]# ll -h
4、更改表空间权限
sql> alter tablespace db_work read only; #更改表空间为只读
sql> alter tablespace db_work read write; #更改表空间为读写,默认情况下
5、删除表空间
sql> drop tablespace db_work including contents; #删除指定表空间,including contents参数表示删除表空间的所有内容
三、CDB与PDB操作
1、查看数据库模式
sql> show con_name #查询当前所在的容器 CON_NAME ------------------------------ CDB$ROOT #默认为CDB模式
sql> show pdbs #查询数据库的所有容器 CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 ORCLPDB READ WRITE NO #存在容器型数据库,此时默认使用为PDB而非ORCLPDB
2、切换数据库模式为orclpdb
sql> alter pluggable database orclpdb open; #修改可插拔库orclpdb为开启状态
sql> alter session set container=orclpdb; #CDB下切换会话到PDB中,oracle容器连接到插拔库中
sql> show con_name CON_NAME ------------------------------ ORCLPDB #数据库模式已切换为容器型数据库
3、切换数据库模式为CDB$ROOT
sql> shutdown immediate #关闭数据库 插接式数据库已关闭。
sql> startup #打开数据库 插接式数据库已打开。
sql> alter session set container=cdb$root; #切换会话为CDB
sql> show con_name CON_NAME ------------------------------ CDB$ROOT #切换成功