1. 程式人生 > >詳解oracle 12c數據庫新特征CDB與PDB(熱插拔數據庫)以及表空間管理

詳解oracle 12c數據庫新特征CDB與PDB(熱插拔數據庫)以及表空間管理

dia emp 圖片 朋友 不可 管理 ada pfile esp

表空間概念

表空間是數據庫的邏輯劃分,一個表空間只能屬於一個數據庫。所有的數據庫對象都存放在指定的表空間中。但主要存放的是表, 所以稱作表空間。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;  #更改表空間為讀寫,默認情況下

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(熱插拔數據庫)以及表空間管理