詳解oracle 12c數據庫新特征CDB與PDB(熱插拔數據庫)以及表空間管理
表空間是數據庫的邏輯劃分,一個表空間只能屬於一個數據庫。所有的數據庫對象都存放在指定的表空間中。但主要存放的是表, 所以稱作表空間。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 #登錄數據庫
二、表空間管理
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; #更改表空間為讀寫,默認情況下
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 #切換成功
詳解oracle 12c數據庫新特征CDB與PDB(熱插拔數據庫)以及表空間管理