詳解ORACLE資料庫12C--多租戶體系架構概念

2019-07-31     波波說運維

概述

今天主要介紹下Oracle 12c的新特性--多租戶。

參考:https://www.cnblog.com/kingle-study/p/10695830.html

相關概念

1、多租戶

多租戶這個概念並不是12C的新特性,而是體系架構,多租戶架構使得oracle 資料庫成為了一個多租戶的容器資料庫,也就是container database,也就是CDB。而一個CDB可以包含0個、一個或者多個用戶創建的可插入的資料庫,也就是pluggable database,也就是PDB,也就是所謂的「租戶」。這就像合租房一樣,每個租戶可以獲得其所需的各種資源。也可以說CDB就是各PDB的母體。


2、多租戶架構

一個CDB包括零個,一個或多個用戶創建的可插拔資料庫(PDBs)。PDB是模式、模式對象和非模式對象的可移植集合,在Oracle NET客戶機看來,Oracle資料庫12c之前的所有Oracle資料庫都是非CDB。

ORACLE 12C 是世界上第一款基於雲計算設計的多租戶資料庫,底層為一個多租戶的架構,支持雲計算(共享軟硬體資源,降低成本),等同於把多個數據塊當成一個數據塊來管理,即共享伺服器,共享作業系統,共享數據塊。


3、CDB容器

容器是多租戶體系結構中數據或元數據的邏輯集合。

每個CDB都有以下容器:

1)只有一個CDB根容器(也稱為根容器)

cdb根是所有pdb所屬的模式、模式對象和非模式對象的集合。根存儲Oracle提供的元數據和普通用戶。元數據的一個例子是Oracle提供的PL/SQL包的原始碼。公共用戶是每個容器中已知的資料庫用戶。根容器名為cdb$root。


2)只有一個系統容器

系統容器包括根CDB和CDB中的所有PDB。因此,系統容器是CDB本身的邏輯容器。


3)零個或多個應用程式容器

應用程式容器僅由一個應用程式根組成,PDB插入到該根。雖然系統容器包含cdb根目錄和cdb中的所有pdb,但是應用程式容器只包含插入到應用程式根目錄中的pdb。應用程式根屬於cdb根,沒有其他容器。


4)零個或多個用戶創建的PDB

PDB包含特定功能集所需的數據和代碼。例如,PDB可以支持特定的應用程式,例如人力資源或銷售應用程式。創建CDB時不存在PDB。您可以根據業務需求添加PDB。

PDB正好屬於零或一個應用程式容器。如果PDB屬於應用程式容器,則它是應用程式PDB。例如,Cust1_PDB和Cust2_PDB應用程式PDB可能屬於SaaS_Sales_AC應用程式容器,在這種情況下,它們不屬於其他應用程式容器。應用程式種子是可選的應用程式PDB,充當用戶創建的PDB模板,使您能夠快速創建新的應用程式PDB。


5)只有一個SEED pdb

SEED PDB是由系統提供的模板,CDB可以使用它來創建新的PDB。SEED pdb被命名為pdb$seed。不能在pdb$seed中添加或修改對象。


多租戶的優勢

1、使用多租戶體系結構進行資料庫整合優勢:

1 )降低成本

通過將硬體和資料庫基礎結構整合到一組後台進程,並高效地共享計算和內存資源,可以降低硬體和維護成本。例如,單個伺服器上的100個PDB共享一個資料庫實例。

2) 更容易、更快速地移動數據和代碼

通過設計,您可以快速地將PDB插入CDB,從CDB中拔下PDB,然後將此PDB插入不同的CDB。您還可以在PDB保持可用時克隆它們。您可以使用任何字符集插入PDB,並在不進行字符集轉換的情況下訪問它。如果cdb的字符集是cdb的字符集是al32utf8,那麼同一cdb中可以存在具有不同資料庫字符集的pdb。

3) 更容易管理和監控物理資料庫

CDB管理員可以通過為所有託管租戶和CDB根執行單個操作(如修補或執行RMAN備份)將環境作為聚合進行管理。簡化了備份策略和災難恢復。

4) 數據和代碼分離

雖然PDB合併到一個物理資料庫中,但它模擬了非CDB的行為。例如,如果用戶錯誤丟失了關鍵數據,那麼PDB管理員可以使用Oracle Flashback或時間點恢復來檢索丟失的數據,而不會影響其他PDB。

5) 確保行政職責分離

普通用戶可以連接到其具有足夠權限的任何容器,而本地用戶僅限於特定的PDB。管理者可以按如下方式劃分職責:

管理員使用公用帳戶管理CDB或應用程式容器。因為權限包含在授予它的容器中,所以一個PDB上的本地用戶對同一個CDB中的其他PDB沒有權限。

管理員使用本地帳戶管理單個PDB。

6 )易於性能調整

收集單個資料庫的性能指標比收集多個資料庫的性能指標更容易。一個SGA的尺寸比100個SGA的尺寸更容易。

7 )更少的資料庫補丁和升級

對一個資料庫應用補丁比對100個資料庫應用補丁更容易,對一個資料庫進行升級也比對100個資料庫進行升級更容易。


2、多租戶架構對可管理性的好處

1) 更容易升級數據和代碼

例如,不需要將CDB從一個資料庫版本升級到另一個資料庫版本,您可以從現有CDB中快速拔出PDB,然後將其從更高版本插入到新創建的CDB中。

2 )更容易在伺服器之間遷移

要執行負載平衡或滿足SLA,您可以將應用程式資料庫從本地數據中心遷移到雲,或者在同一環境中的兩個伺服器之間遷移。

3 )防止PDB中的數據損壞

可以將PDB快閃記憶體回特定於SCN或PDB的還原點,而不影響其他PDB。此功能類似於非CDB的閃回資料庫功能。

能夠在單個位置安裝、管理和升級特定於應用程式的數據和元數據

可以將一組特定於應用程式的PDB定義為單個組件,稱為應用程式容器。然後可以在此容器中定義一個或多個應用程式。每個應用程式都是此應用程式容器中共享的一組命名的、版本控制的通用元數據和數據。

例如,SaaS供應商的每個客戶都可以擁有自己的應用程式PDB。每個應用程式PDB可能都有相同定義的表,名為sales-mlt,每個PDB中有不同的數據。PDB可以共享一個名為「國家」的數據連結公共對象,每個PDB中都有相同的數據。作為應用程式管理員,您可以管理主應用程式定義,以便每個新客戶都獲得具有相同對象的PDB,並且對現有模式的每個更改(例如,添加新表或更改表的定義)都適用於共享應用程式定義的所有PDB。

4) 與Oracle資料庫資源管理器集成

在多租戶環境中,一個問題是運行在同一伺服器上的PDB之間的系統資源爭用。另一個問題是限制資源使用以獲得更一致、可預測的性能。要解決此類資源爭用、使用和監視問題,請使用Oracle資料庫資源管理器。


相關命令

1、查看管理用戶是否是CDB

SQL> SELECT NAME, CDB, CON_ID FROM V$DATABASE;

2、查看狀態

select name ,open_mode from v$pdbs ; 


後面會分享更多devops和DBA方面的內容,感興趣的朋友可以關注一下~


文章來源: https://twgreatdaily.com/zh-tw/OucBRGwB8g2yegND2LUD.html