日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

OCA/OCP Oracle 数据库12c考试指南读书笔记:第31章:Multitenant Container and Pluggable Database Architecture

發布時間:2023/12/20 数据库 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OCA/OCP Oracle 数据库12c考试指南读书笔记:第31章:Multitenant Container and Pluggable Database Architecture 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

多租戶選件將多個數據庫整合為一個,但數據庫仍可以獨立管理和使用。對于用戶和開發者改變不大,但DBA需要學習新東西。
多租戶需要在企業版基礎上額外購買多租戶選件,否則只能使用non-CDB。但non-CDB會逐漸淘汰。
unequivocal = 毫不含糊

多租戶容器數據庫架構

整合的驅動力是運維和費用(硬件和許可)。
可以一臺服務器多個數據庫,一個數據庫多個schema,甚至虛擬化,但都沒有多租戶簡單。

多租戶概念

多租戶架構包括CDB和PDB。CDB包括兩個容器,CDB$ROOT和PDB$SEED,前者用于管理,后者用于克隆。
一些重要概念:

  • 只有一個實例
  • 只有一個數據庫,即CDB
  • PDB就是服務+一些表空間 (用戶表空間和定義了數據字典的系統表空間)
  • PDB服務通過監聽提供
  • 根容器中的對象可以讓所有PDB看到
  • 連接到PDB時,會話的范圍就是PDB所關聯的表空間
  • PDB中定義的對象為PDB私有
  • 每個PDB有自己的數據字典,自己定義的對象,以及指向根容器中共享對象的指針

在根容器中可以定義在所有容器中均存在的用戶和角色,而其在各容器中的權限可以不同。

多租戶和其它選件配合時的考慮:

  • 所有容器需使用相同字符集。目前已經可以不同,但需根容器是AL32UTF8。
  • DataGuard需在CDB層面配置,因只有一個redo,但可以排除某些PDB
  • Database Vault必須PDB單獨配置
  • 加密必須每PDB單獨配置
  • unified audit可以在CDB或PDB一級配置
  • GoldenGate可以在PDB一級配置

CDB/PDB架構在任何Edition都具備(單租戶或non-CDB架構),但多租戶選件只有在企業版才有。但
從20c開始,non-CDB不再支持。而從19c開始,如果沒有多租戶選件,仍可以創建3個PDB。詳見這里。

在CDB架構中,系統視圖較之前的USER_, ALL_, 和DBA_多了一個CDB_。
CDB_視圖只有在根容器中才有意義,相當于所有PDB視圖的union,而在PDB只,此視圖相當于DBA_。CDB_視圖中有一個CON_ID唯一標示個各容器。

SQL> select con_id, name, tablespace_name from v$containers join cdb_tablespaces using (con_id) order by con_id;CON_ID NAME TABLESPACE_NAME ---------- -------------------- ------------------------------1 CDB$ROOT SYSTEM1 CDB$ROOT SYSAUX1 CDB$ROOT USERS1 CDB$ROOT TEMP1 CDB$ROOT UNDOTBS13 ORCLPDB1 SYSTEM3 ORCLPDB1 SYSAUX3 ORCLPDB1 USERS3 ORCLPDB1 TEMP3 ORCLPDB1 UNDOTBS110 rows selected.

一些CDB視圖為CDB_DATA_FILES, CDB_USERS, 和 CDB_TABLES。

Multitenant的驅動力

最主要用于數據庫整合。
不整合時,每個數據庫需要單獨的硬件,更重要的是需要維護,如補丁升級,當然還有許可的考慮。
在非CDB架構下,每一個數據庫有自己的SGA,后臺進程和數據字典。可能有自己的Oracle Home,可能運行在不同的機器。在CDB架構下,Oracle Home,數據字典,SGA和后臺進程只有一個。更重要的是透明性,應用無需改變,PDB可以單獨的DBA管理。
最大的好處在管理運維。例如升級和補丁。關鍵數據字典信息定義在一個地方,因此維護簡單,如果PDB有指向這些共享對象,而這些對象又發生改變的話,徐需要重新編譯。而且升級可以采用新建一個新版本CDB,然后拔出老版本CDB下的PDB,插入到新版本CDB來實現。

CDB和根容器

實例open和mount的數據庫即CDB。
根容器是共享資源所在之處,有SYSTEM,SYSAUX,UNDO和TEMP四個表空間,以及可以傳播到所有PDB的common 用戶和角色,PL/SQL包。
根容器是唯一的可以不通過監聽連接的容器。

$ export SID=ORCLCDB $ sqlplus / as sysdbaSQL*Plus: Release 19.0.0.0.0 - Production on Wed Jan 1 17:17:30 2020 Version 19.3.0.0.0Copyright (c) 1982, 2019, Oracle. All rights reserved.Connected to: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Version 19.3.0.0.0SQL> show con_name;CON_NAME ------------------------------ CDB$ROOT SQL> alter session set container=orclpdb1;Session altered.SQL> show con_nameCON_NAME ------------------------------ ORCLPDB1

alter session可切換容器,但不能切換schema。

PDB: 可插拔的容器

PDB類似于獨立的數據庫。PDB也有SYSTEM表空間,其中包括私有的對象和指向根容器中共同對象的邏輯鏈接。
每一個PDB都有一個唯一的容器ID和名字。這些被記錄在controlfile中,并可以在V$CONTAINERS和V$PDBS查看到。V$PDBS中排除了根容器的數據,其它與V$CONTAINERS一樣。
如果連接到PDB,與本容器無關的數據被過濾掉;如果連接到根容器,則所有數據可見。
每一個PDB都有唯一的給global name,這也是注冊到監聽的默認服務名。

SQL> select name from v$pdbs;NAME -------------------------------------------------------------------------------- PDB$SEED ORCLPDB1SQL> connect system、Welcome Enter password:SQL> connect system/Welcome1@localhost:1521/orclpdb1 Connected.SQL> select 'instance: ' || instance_name from v$instance union all select 'database: ' || name from v$database union all select 'container: ' || global_name from global_name;'INSTANCE:'||INSTANCE_NAME -------------------------------------------------------------------------------- instance: ORCLCDB database: ORCLCDB container: ORCLPDB1

可插拔數據庫的供應

多租戶架構的一個好處是PDB的供應,包括創建,拷貝和重定位。

供應PDB的技術

  • 從種子PDB創建
  • 從Non-CDB(12.x版本)創建
  • 從已有PDB克隆
  • 插入已拔出的PDB(relocate)
  • 容器間的通訊

    在沒有多租戶之前,數據庫之間通過Database Link通訊;多租戶整合后,也可以使用此方法。
    如果位于根容器,則可以查詢所有PDB中的對象。
    如果common user在每一個容器中擁有的表、視圖或同義詞的定義一致,就可以在根容器中使用帶CONTAINERS子句的SELECT語句統一查詢。
    以SYSTEM表空間中的DUAL表為例:

    SQL> select con_id, name, dummy from containers(sys.dual) natural join v$containers;CON_ID NAME D ---------- -------------------- -1 CDB$ROOT X3 ORCLPDB1 XSQL> alter session set container=orclpdb1;Session altered.SQL> select con_id, name, dummy from containers(sys.dual) natural join v$containers;CON_ID NAME D ---------- -------------------- -3 ORCLPDB1 X

    總結

    以上是生活随笔為你收集整理的OCA/OCP Oracle 数据库12c考试指南读书笔记:第31章:Multitenant Container and Pluggable Database Architecture的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。