中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Oracle中的12C新特性-容器數據庫概念-基本操作

發布時間:2020-08-08 17:01:22 來源:ITPUB博客 閱讀:597 作者:狂瀾與玉昆0950 欄目:關系型數據庫

Oracle 中的12C新特性-容器數據庫

---12.1.0.2_GI_RAC_Create_CDB_Blog

三月份的時候杰哥跟我講有時間部署 Oracle 12C-容器數據庫,參考公司的遷移文檔,做個測試。這個事一直拖,最近有空嘗試了一下,還是蠻不錯的,就是非常的燒內存。

一、12C概述

Oracle 12C 引入了CDB與PDB的新特性,在ORACLE 12C數據庫引入的多租用戶環境(Multitenant Environment)中,允許一個數據庫容器(CDB)承載多個可插拔數據庫(PDB)。CDB全稱為Container Database,中文翻譯為數據庫容器,PDB全稱為Pluggable Database,即可插拔數據庫。在ORACLE 12C之前,實例與數據庫是一對一或多對一關系(RAC):即一個實例只能與一個數據庫相關聯,數據庫可以被多個實例所加載。而實例與數據庫不可能是一對多的關系。當進入ORACLE 12C后,實例與數據庫可以是一對多的關系。下面是官方文檔關于CDB與PDB的關系圖。
Oracle中的12C新特性-容器數據庫概念-基本操作

其實大家如果對SQL SERVER比較熟悉的話,這種CDB與PDB是不是感覺和SQL SERVER的單實例多數據庫架構是一回事呢。像PDB$SEED可以看成是master、msdb等系統數據庫,PDBS可以看成用戶創建的數據庫。而可插拔的概念與SQL SERVER中的用戶數據庫的分離、附加其實就是那么一回事。

二、CDB組件(Components of a CDB)

一個CDB數據庫容器包含了下面一些組件:


-ROOT組件

ROOT又叫CDB$ROOT, 存儲著ORACLE提供的元數據和Common User,元數據的一個例子是ORACLE提供的PL/SQL包的源代碼,Common User 是指在每個容器中都存在的用戶。


-SEED組件  

Seed又叫PDB$SEED,這個是你創建PDBS數據庫的模板,你不能在Seed中添加或修改一個對象。一個CDB中有且只能有一個Seed. 這個感念,個人感覺非常類似SQL SERVER中的model數據庫。


-PDBS

CDB中可以有一個或多個PDBS,PDBS向后兼容,可以像以前在數據庫中那樣操作PDBS,這里指大多數常規操作。

 

這些組件中的每一個都可以被稱為一個容器。因此,ROOT(根)是一個容器,Seed(種子)是一個容器,每個PDB是一個容器。每個容器在CDB中都有一個獨一無二的的ID和名稱。


注意:

①:一個CDB可以包含253個PDB(去掉一個是seed還能創建252個PDB)。

②:Root,seed以及每一個PDB的數據文件是獨立的。

③:一個單實例的CDB有一個redo log;RAC環境中每個實例有一個redo log。

④:只有一組后臺進程,它們被ROOT和所有PDB共享。

⑤:Root的全局數據庫名就是CDB的全局數據庫名;PDB的全局數據庫名是由PDB name和DB_DOMAIN參數共同定義的。

⑥:一個CDB使用一個SPFILE或者一個PFILE,其中為ROOT設置的參數的值可以被PDB繼承。另外,也可以使用ALTER SYSTEM語句來設置PDB的參數。對參數文件執行     操作時,必須使用common user并且使用AS SYSDBA, ASSYSOPER, AS SYSBACKUP來連接數據庫。要創建CDB,必須要將初始化參數ENABLE_PLUGGABLE_DATABASE的     值設置為TRUE。

 

⑦:所有PDB的字符集都使用CDB的字符集。

      可以設置所有PDB的時區與CDB相同,也可以單獨為PDB設置時區。

      塊大小被應用于整個CDB。

      一個CDB也僅有一個控制文件(可以多路復用)。

 

⑧:Root與每一個PDB都有自己的SYSAUX表空間和SYSTEM表空間。可以為root和每一個PDB設置默認表空間。而默認的臨時表空間對于整個CDB只有一個,但是可以為     每個PDB創建臨時表空間。

 

⑨:撤銷表空間對于CDB是唯一的。在CDB中,初始化參數UNDO_MANAGEMENT必須被設置為AUTO。當前容器為PDB時,無法通過數據字典視圖查看撤銷表空間,只能通     過動態性能視圖。

三、 PDB簡介

1.PDB新特點的優勢

 》可以把多個PDB集成進一個平臺。

 》可以快速提供一個新的PDB或一個已有PDB的克隆。

 》通過拔插技術,可以快速把存在的數據庫重新部署到一個新平臺上。

 》多個PDB數據庫補丁或升級一次完成。

 》通過把單個PDB拔插到較高版本的不同CDB,可以補丁或升級一個PDB。

 》從同一個CDB中眾多PDB中分離出某個PDB的內容。

 》分離這些PDB應用管理員的責任。

2.PDB新特點的功能

 》在一個CDB中,你可以擁有很多PDB。

 》PDB和12.1之前版本的普通數據庫是向后兼容的。

 》PDB對應用是透明的——你不需要改變客戶端代碼或數據庫對象。

 》RAC中每個實例作為一個整體打開CDB(因此CDB和其中的PDB數據庫版本都是相同的)。

 》會話僅僅看到它自己連接的那個PDB。

 》你可以從一個CDB拔出一個PDB,然后插入另一個CDB。

 》你可以在同一個CDB或不同CDB間克隆PDB。

 》資源管理器隨著PDB的功能得以擴展。

 》通過SQL語句實現了實體PDB的操作(創建,拔出,插入,克隆,清除,設置打開模式)。

 》當連接到所謂的“根”(root)時,CDB管理員來執行這些操作。

 》所有的PDB能被一次備份,但可以分別單獨恢復。

3.PDB的詳解

 》每個PDB有自己的私有數據字典用于用戶創建的數據庫對象;另一方面,CDB作為一個整體也包含Oracle提供系統的數據字典,其中,每個數據字典定義自己的命名空間。換句話說,有全局數據字典(CDB級)和本地數據字典(PDB級)。

 》有新的分開的數據字典架構,該架構允許一個PDB被快速從一個CDB拔出并插入一個不同的CDB。

 》每個PDB只能看到oracle提供系統的只讀定義。

 》有全局數據庫參數,也有本地數據庫參數。PDB參數僅僅屬于特定的PDB,并且拔出后,PDB參數也將保持不變。

 》數據庫用戶可以是全局的(CDB)或本地的(PDB)。SYS和SYSTEM用戶一開始就在兩級DB中存在。如果你在CDB中創建了一個新用戶,那么你在PDB中也能看到這個用戶。在PDB中創建的用戶只能在該PDB中使用。

 》臨時表空間可以是全局或本地的。

 》Redo日志和Undo表空間都是全局的(CDB級)。

 》Data Guard在CDB級作為一個整體發揮作用;RMAN調度的備份也作為一個整體在CDB級完成;任何時候,你可以只備份一個PDB。

 》應用連接PDB時,不需做代碼修改;系統管理員可以連接CDB;連接串中的服務名確定目標PDB。

 》PDB允許更加清晰的聲明定義一個應用;一個PDB對同一個CDB里的其他PDB一無所知;每個PDB是個密閉的容器。這保證了新層面DB的獨立和安全。

四、 日常操作  

1. 查看數據庫是否為CDB

[root@vastdata11 ~]# su - oracle
[oracle@vastdata11 ~]$ sqlplus / as sysdba
SQL*Plus: Release 12.1.0.2.0 Production on Sat Jun 1 21:42:21 2019
Copyright (c) 1982, 2014, Oracle.  All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Advanced Analytics and Real Application Testing options
SQL> select name,cdb,open_mode,con_id from v$database;
NAME               CDB    OPEN_MODE                                CON_ID
------------------ ------ ---------------------------------------- ----------
CDB              YES     READ WRITE                                     0

2. 查看當前的容器

SQL> show con_name;
CON_NAME
------------------------------
CDB$ROOT
SQL> select Sys_Context('Userenv', 'Con_Name') "current Container" from dual;
current Container
--------------------------------------------------------------------------------
CDB$ROOT

3 .查看CDB中的PDB信息

SQL> select con_id, dbid, guid, name , open_mode from v$pdbs;
    CON_ID   DBID GUID                       NAME                                                    OPEN_MODE
---------- ---------- -------------------------------- ------------------------------------------------------------ --------------------
        2 2382420430 8A33449DBB2C529AE0530B38A8C0899C PDB$SEED                                     READ ONLY
        3 1983375270 8A337E167FD16986E0530B38A8C0632A PDB1                                                READ WRITE
        4 2621964339 8A33890C63336EADE0530B38A8C02ED2 PDB2                                               READ WRITE
        5 4092698095 8A3390728AB570E0E0530B38A8C0006E PDB3                                                READ WRITE
 
SQL> show pdbs   
    CON_ID CON_NAME                   OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
        2 PDB$SEED              READ ONLY  NO
        3 PDB1                           MOUNTED
        4 PDB2                           MOUNTED
        5 PDB3                           MOUNTED

4. 啟動和關閉已創建好的PDB數據庫

SQL> alter pluggable database pdb1 open;
Pluggable database altered.
SQL> show pdbs  
    CON_ID CON_NAME                   OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
        2 PDB$SEED                       READ ONLY  NO
        3 PDB1                           READ WRITE NO
        4 PDB2                           MOUNTED
        5 PDB3                           MOUNTED
SQL> alter pluggable database pdb1 close; 
Pluggable database altered.  
SQL> show pdbs  
    CON_ID CON_NAME                   OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
        2 PDB$SEED                       READ ONLY  NO
        3 PDB1                           MOUNTED
        4 PDB2                           MOUNTED
        5 PDB3                           MOUNTED
       
----------也可以通過sqlplus使用傳統的startup和shutdown命令來啟動和關閉PDB-----------
SQL> alter session set container=pdb1;
Session altered.
SQL> startup
Pluggable Database opened.
SQL> show pdbs
    CON_ID CON_NAME                   OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
        3 PDB1                               READ WRITE NO
SQL> shu immediate;
Pluggable Database closed.
SQL> show pdbs
    CON_ID CON_NAME                   OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
        3 PDB1                               MOUNTED
SQL> alter session set container=CDB$ROOT;
Session altered.
SQL> show pdbs
    CON_ID CON_NAME                   OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
        2 PDB$SEED                       READ ONLY  NO
        3 PDB1                       MOUNTED
        4 PDB2                       MOUNTED
        5 PDB3                       MOUNTED

5.配置建通文件,并通過網絡登陸PDB1數據庫

監聽文件目錄在 $ORACLE_HOME/network/admin

[oracle@vastdata11 admin]$ cat tnsnames.ora 
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/12.1.0/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
CDB =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = vastdata-scan.us.oracle.com)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = cdb)
    )
  )
 
PDB1 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = vastdata-scan.us.oracle.com)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = pdb1)
    )
  )
[oracle@vastdata11 admin]$ tnsping pdb1
TNS Ping Utility for Linux: Version 12.1.0.2.0 - Production on 01-JUN-2019 23:16:33
Copyright (c) 1997, 2014, Oracle.  All rights reserved.
Used parameter files:
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = vastdata-scan.us.oracle.com)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = pdb1)))
OK (0 msec)
 
[oracle@vastdata11 admin]$ sqlplus system/oracle@pdb1
SQL*Plus: Release 12.1.0.2.0 Production on Sat Jun 1 23:14:15 2019
Copyright (c) 1982, 2014, Oracle.  All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Advanced Analytics and Real Application Testing options
SQL> select name,cdb,open_mode,con_id from v$database;
NAME               CDB    OPEN_MODE                                CON_ID
------------------ ------ ---------------------------------------- ----------
CDB          YES     READ WRITE                                     0
 
SQL> show con_name
CON_NAME
------------------------------
PDB1
 
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
+DATA/CDB/DATAFILE/undotbs1.280.1009718515
+DATA/CDB/8A337E167FD16986E0530B38A8C0632A/DATAFILE/system.292.1009719563
+DATA/CDB/8A337E167FD16986E0530B38A8C0632A/DATAFILE/sysaux.293.1009719563
+DATA/CDB/8A337E167FD16986E0530B38A8C0632A/DATAFILE/users.295.1009719733
SQL>

6.創建CDB啟動觸發器

oracle12C中在啟動數據庫的時候, PDB 并不會隨著 CDB 而啟動。

不過我們可以通過創建一個觸發器讓 PDB 能夠隨 CDB 啟動。如下:

SQL> SHOW CON_NAME  
 CON_NAME  
 ------------------------------  
 CDB$ROOT  
 SQL> CREATE OR REPLACE TRIGGER open_pdbs  
  2  AFTER STARTUP ON DATABASE    
  3  BEGIN  
  4  EXECUTE IMMEDIATE 'ALTER PLUGGABLE DATABASE ALL OPEN';    
  5  END open_pdbs; 
  6  /
Trigger created.
SQL> shu immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL>startup
ORACLE instance started.
Total System Global Area 1560281088 bytes
Fixed Size                 2924784 bytes
Variable Size          570429200 bytes
Database Buffers    973078528 bytes
Redo Buffers           13848576 bytes
Database mounted.
Database opened.
SQL>show pdbs  
    CON_ID CON_NAME                   OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
        2 PDB$SEED                       READ ONLY  NO
        3 PDB1                           READ WRITE NO
        4 PDB2                           READ WRITE NO
        5 PDB3                           READ WRITE NO

7.創建一個新的PDB

SQL> create pluggable database pdb4 admin user admin identified by admin;
SQL> alter pluggable database pdb4 open;
SQL> select con_id,dbid,con_uid,guid,name,open_mode,create_scn,total_size,block_size from v$pdbs;
    CON_ID DBID  CON_UID    GUID                             NAME        OPEN_MODE  CREATE_SCN TOTAL_SIZE BLOCK_SIZE
---------- ----- ---------- -------------------------------- ----------- ---------- ---------- ---------- ----------
    2 427872663  427872663  439BFCB2A2EE1BE7E055000000000001 PDB$SEED    READ ONLY     1594401  838860800       8192
    3 1891424478 1891424478 439C5B1174C121B7E055000000000001 FEIGE       READ WRITE    1753608  865075200       8192
    4 2998508999 2998508999 53F376E8715628BCE055000000000001 PDB4        READ WRITE    1757024  859832320       8192

“admin user”子句是必須的,在擴展格式,給新用戶賦予了權限和角色,該用戶僅在admin內可以創建新會話。
在創建完可插拔數據庫后,新的PDB處于MOUNTED模式.

8.克隆一個新的PDB

SQL> create pluggable database pdb5 from pdb4;
SQL> alter pluggable database pdb5 open;
切換到PDB,或切換到CDB
SQL> alter session set container=pdb4;
SQL> alter session set container=cdb$root;
關閉一個pdb和關閉所有的pdb
SQL> alter pluggable database pdb4 close;
SQL> alter pluggable database all close;

9.插入一個pdb數據庫

pdb5.xml:文件確定數據文件的名字和全路徑等信息。這些信息在插入操作時會用到。
注意:PDB還是其從中拔出的CDB的一部分,只是現在狀態變為了拔出(UNPLUGGED)而已。

SQL> alter pluggable database pdb5 close;
SQL> alter pluggable database pdb5 unplug into '/opt/oracle/oradata/pdb5.xml';

----在當前的容器中刪除這個pdb

SQL> drop pluggable database pdb5 keep datafiles;

----查看pdb和這個容器是否兼容,如果報錯說明不兼容

exec DBMS_PDB.Check_Plug_Compatibility(PDB_Descr_File=>'/opt/oracle/oradata/pdb5.xml');

----開始插入pdb

(using關鍵字后必須跟上PDB描述的絕對路徑,即,先前拔出操作時產生的.XML文件)

create pluggable database pdb5  using '/opt/oracle/oradata/pdb5.xml'  move file_name_convert = ('/cdb1/', '/cdb2/');

----最后打開這個pdb

alter pluggable database pdb5 open;


---至此,

cdb與pdb的一些基礎的知識和操作都有介紹,

就先總結到這里。



向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

景德镇市| 防城港市| 交口县| 微博| 淅川县| 红河县| 乌兰县| 巨鹿县| 西吉县| 盐亭县| 湛江市| 高碑店市| 敖汉旗| 中卫市| 大足县| 尉氏县| 阿城市| 阿瓦提县| 东方市| 阿巴嘎旗| 桂平市| 沙湾县| 富锦市| 苍梧县| 合山市| 德江县| 囊谦县| 杂多县| 隆子县| 西安市| 修文县| 兴业县| 奉节县| 肇庆市| 邵武市| 衡水市| 陕西省| 桐乡市| 城步| 嘉鱼县| 鄂尔多斯市|