天天看點

ORACLE Multitenant專題--1 Multitenant簡介

簡介

         Multitenant翻譯成中文為:多租戶,是ORACLE公司為應對雲計算發展潮流對ORACLE DB推出的新特性,于2013/06 12c版本正式釋出(其中字母c為cloud含義),旨在實作資料庫快速部署、即插即用、彈性擴充的優勢,以上三點也即主流雲計算的賣點。

在傳統的ORACLE資料庫(non-CDB)架構中,不同使用者的資料通過schema區分,使用者資料寫入不同的表空間or預設USERS表空間,所有使用者共享一個執行個體,也即共享一個SGA區;若需要進行隔離,往往通過部署多個oracle執行個體實作,這樣管理起來存在諸多不變(如每次用sqlplus / as sysdba進入之前都要export ORACLE_SID=XXX);

在多租戶架構中,一個ORACLE執行個體被視作一個容器資料庫(container database--CDB),在CDB内部包括多個使用者自定義的可插拔資料庫(pluggable database--PDB),PDB對外單獨服務,類似于一個完整的資料庫。其大緻架構圖如下所示:

ORACLE Multitenant專題--1 Multitenant簡介

其中,CDB中包含6個使用者PDB+1個種子PDB(PDB$SEED),種子PDB使用者PDB的快速克隆。

主要原理

         前面已與大家分享過oracle TTS(可傳輸表空間)的概念,CDB即是TTS技術的深入擴充。在TTS使用中,使用者資料存儲于指定使用者表空間中,使用者資料的中繼資料metadata(如表結構,索引結構等)則存儲于SYSTEM表空間中。CDB正是通過對中繼資料metedata的進一步下放(即下放到PDB中)實作。

         中繼資料的下放即使得CDB執行個體需要存儲的資料大大減少,實作執行個體和資料庫的松耦合;也使得資料遷移變得更加容易(因為幾乎所有資料都在PDB中)。

使用CDB架構的優勢

Cost reduction—降低成本

         CDB通過整合IT基礎設施,可以實作計算資源、記憶體資源的充分利用。在RAC架構中,還可根據多執行個體的不同負載能力,指定PDB位于哪裡執行個體中,以便最大限度的發揮各個執行個體的能力。

Easier and more rapid movement of data and code—快速的遷移能力

         這點就不多說了。上面的“主要原理”章節有提及;

Easier management and monitoring—簡化管理

         以往non-CDB架構中DBA可能需要管理多個執行個體,現在隻需要管理一個執行個體。

Separation of data and code—資料和代碼的隔離

       在以往non-CDB架構中,盡管可以通過schema進行相關分離,但有些系統全局對象不能分離,如目錄對象directory、資料庫連結dblink等。

Ease of performance tuning—簡化性能調優

         It is easier to collect performance metrics for a single database than for multiple databases. It is easier to size one SGA than 100 SGAs.

總結

         新特性的引入往往是順應時代的發展與需求的變化,無論我們是否接受CDB架構都将會是ORACLE官方之後主推的特性。盡管non-CDB架構也還被支援,但想想便知,ORACLE對non-CDB的支援會越來越少,我們的使用也會越來越不便。以下是ORACLE官方的資料庫版本維護圖,從圖可知,11g即将結束維護,後續的12c、18c、19c将逐漸成為主流。

ORACLE Multitenant專題--1 Multitenant簡介