详解oracle 12c数据库新特征CDB与PDB(热插拔数据库)以及表空间管理

表空间概念

表空间是数据库的逻辑划分,一个表空间只能属于一个数据库。所有的数据库对象都存放在指定的表空间中。但主要存放的是表, 所以称作表空间。Oracle数据库中至少存在一个表空间,即SYSTEM的表空间

CDB与PDB概念

详解oracle 12c数据库新特征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
详解oracle 12c数据库新特征CDB与PDB(热插拔数据库)以及表空间管理

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
详解oracle 12c数据库新特征CDB与PDB(热插拔数据库)以及表空间管理

法二:添加文件

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
详解oracle 12c数据库新特征CDB与PDB(热插拔数据库)以及表空间管理

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               #切换成功

猜你喜欢

转载自blog.51cto.com/11905606/2296165
今日推荐