表空间概念
表空间是数据库的逻辑划分,一个表空间只能属于一个数据库。所有的数据库对象都存放在指定的表空间中。但主要存放的是表, 所以称作表空间。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
命令步骤
一、登录数据库
[oracle@oracle ~]$ lsnrctl
LSNRCTL> start #启动监听功能
LSNRCTL> quit
[oracle@oracle ~]$ 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,提高数据库分配空间的效率.
[root@oracle ~]# cd /opt/app/oracle/oradata/
[root@oracle 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; #重新设置大小
[root@oracle ~]# cd /opt/app/oracle/oradata/
[root@oracle 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;
[root@oracle ~]# cd /opt/app/oracle/oradata/
[root@oracle oradata]# ll -h
4、更改表空间权限
SQL> alter tablespace db_work read only; #更改表空间为只读
SQL> alter tablespace db_work read write; #更改表空间为读写,默认情况下
###除表空间
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 #切换成功