Part III PDB建立概述-Oracle多租戶管理員指南

chenoracle發表於2020-03-29

Oracle® Multitenant   Administrator’s Guide

Part III Creating and Removing PDBs and Application Containers

5   Overview of PDB Creation

6   Creating a PDB from Scratch

7   Cloning a PDB

8   Relocating a PDB

9   Plugging In an Unplugged PDB

10   Creating a PDB as a Proxy PDB

11   Removing a PDB

12   Creating and Removing Application Containers and Seeds

Part III 建立和刪除 PDBs 和應用程式容器

您可以使用各種技術建立pdb 、應用程式容器和應用程式 seeds

例如,您可以從頭開始建立PDB 、克隆現有 PDB 或插入未插電的 PDB 。您還可以從 CDB 中刪除 PDB

5 PDB 建立概述

CDB 支援多種建立 pdb 的技術。

建立的PDB 自動包含一個完整的資料字典,其中包括後設資料和指向 CDB ROOT 中系統提供的物件的內部連結。必須從單個 ROOT 定義每個 PDB CDB 根或應用程式根。

每個PDB 都有一個全域性唯一識別符號( GUID )。 PDB GUID 主要用於為儲存 PDB 檔案的目錄生成名稱,包括 Oracle Managed Files 目錄和 non-Oracle Managed Files 目錄。

5.1 建立 PDB 的技術

您可以使用各種技術建立PDB ,所有這些技術都需要 create PLUGGABLE 資料庫語句。

建立PDB 是將其與 CDB 或應用程式容器關聯的過程。下圖描述了建立 PDB 的選項。

下表描述了建立技術。本手冊中沒有介紹的另一種技術是使用Recovery Manager 中的 DUPLICATE 命令將 PDB 從一個 CDB 複製到另一個 CDB

5-1 建立 PDB 的技術

技術1

Create a PDB from scratch

描述:

使用PDB seed application seed 的檔案在 CDB 中建立 PDB 。此技術將與 seed 關聯的檔案複製到新位置,並將複製的檔案與新 PDB 關聯。這是預設的建立機制。其他技術需要源 PDB XML

更多資訊:

"Creating a PDB from Scratch"

技術2

Clone an existing PDB

描述:

通過克隆源PDB 建立 PDB 。源可以是本地 CDB 中的 PDB 、遠端 CDB 中的 PDB 或本地或遠端應用程式容器中的 PDB 。此技術將與源關聯的檔案複製到新位置,並將複製的檔案與新 PDB 關聯。

更多資訊:

"Cloning a PDB"

技術3

Relocate a PDB to a different CDB

描述:

通過將PDB 從一個 CDB 重新定位到另一個 CDB 來建立 PDB 。此技術將與 PDB 相關聯的檔案移動到新位置。

更多資訊:

"Relocating a PDB"

技術4

Plug an unplugged PDB into a CDB

描述:

通過使用描述PDB XML 後設資料檔案和與 PDB 相關聯的檔案將 PDB 插入 CDB 來建立 PDB

更多資訊:

"Plugging In an Unplugged PDB"

技術5

Reference a PDB as a proxy PDB

描述:

通過使用資料庫連結引用不同的PDB ,將 PDB 建立為代理 PDB 。引用的 PDB 可以與代理 PDB 位於同一 CDB 中,也可以位於不同的 CDB 中。

更多資訊:

"Creating a PDB as a Proxy PDB"

技術6

Adopting a non-CDB as a PDB using Replay Upgrade

描述:

Oracle 20C 版本 cdb 中採用以前版本的非 CDB 作為 PDB 時, PDB 正常開啟時會自動升級。重播升級功能自動捕獲必要的 CREATE REPLACE 語句,僅重播已更改物件的語句,並轉換資料字典。重播機制與應用程式同步中使用的機制相同。

如果通過執行ALTER DATABASE Upgrade SYNC OFF 禁用重播升級(這是不推薦的),則可以使用 -t 選項執行 catctl.pl 進行經典升級。在這種情況下,必須手動解決任何相容性錯誤。

更多資訊:

Oracle Database Upgrade Guide to learn how to adopt a non-CDB as a PDB using Replay Upgrade

當您想要將PDB 插入不同的 CDB 時,可以將其拔掉。當您不再需要一個 PDB 時,您可以拔掉它。未插入的 PDB 在插入 CDB 之前是不可用的。

5.1.1 當前容器和 PDB 建立

您可以使用CREATE PLUGGABLE DATABASE 語句來建立 pdb 、應用程式容器、應用程式 seeds 和應用程式 pdb

建立PDB 時,當前容器 CDB ROOT 或應用程式 ROOT 確定 PDB 的關聯。建立 pdb 和應用程式 pdb SQL 語句是相同的。例如,在 CDB ROOT 中執行 CREATE PLUGGABLE DATABASE 語句時, PDB 屬於 CDB ROOT 。在應用程式 ROOT 中執行 CREATE PLUGGABLE DATABASE 語句時,應用程式 PDB 屬於應用程式 ROOT

CDB ROOT 是當前容器時,通過執行帶有 AS application container 子句的 create PLUGGABLE DATABASE 語句來建立應用程式 ROOT 。克隆、重新定位或將 PDB 插入應用程式容器時, PDB 的應用程式名稱和版本必須與應用程式名稱和應用程式容器的版本匹配。

5.2 PDB 儲存

無論您選擇如何建立PDB ,您都必須決定用於儲存資料的表空間和檔案。

5.2.1 Storage 限制

CREATE PLUGGABLE DATABASE 語句的可選儲存子句指定了 PDBs 的儲存限制。

儲存條款規定了以下限制:

屬於 PDB 的所有表空間可以使用的儲存空間量

使用MAXSIZE size 子句指定限制,或者將 MAXSIZE 設定為 UNLIMITED 以表示沒有限制。

•PDB 中可用於統一審計 OS 溢位 (.bin 格式 ) 檔案的儲存容量

使用MAX_AUDIT_SIZE size 子句來指定限制,或者將 MAX_AUDIT_SIZE 設定為 UNLIMITED 來表示沒有限制。

•PDB 可以使用的自動診斷儲存庫 (ADR) 中的診斷量 ( 跟蹤檔案和事件轉儲 )

使用MAX_DIAG_SIZE size 子句來指定限制,或者將 MAX_DIAG_SIZE 設定為 UNLIMITED 來表示沒有限制。

如果設定了儲存無限,或者沒有儲存子句,那麼PDB 就沒有儲存限制。

下面是使用STORAGE 子句的示例。

示例5-1 指定儲存限制的儲存子句

此儲存子句指定屬於PDB 的所有表空間使用的儲存不能超過 2GB

STORAGE (MAXSIZE 2G)

5-2 指定無限儲存的儲存子句

這個儲存子句為屬於PDB 的所有表空間指定無限的儲存空間。

STORAGE (MAXSIZE UNLIMITED)

5.2.2 預設表空間

CREATE PLUGGABLE DATABASE 語句的 DEFAULT TABLESPACE 子句指定新 PDB 的預設表空間。

Oracle 資料庫將把預設的表空間分配給沒有指定不同的永久表空間的任何 non-SYSTEM 使用者。

當您從PDB seed 或應用程式 seed 中建立 PDB 並指定預設表空間子句時, Oracle 資料庫將建立一個小檔案表空間並將其設定為 PDB 的預設表空間。當使用 PDB 種子或應用程式種子以外的方法建立 PDB 時,例如克隆 PDB 或插入未插入的 PDB ,預設表空間必須是源 PDB 中已經存在的表空間。

5-3 預設表空間子句

DEFAULT TABLESPACE sales

5.2.3 使用者表空間

CREATE PLUGGABLE DATABASE 語句的 USER_TABLESPACES 子句指定在新的 PDB 中哪些表空間可用。可以使用此子句將多個模式的資料分隔為不同的 pdb

你可以使用這個子句來指定以下選項之一:

列出一個或多個要包含的表空間。

指定 ALL( 預設值 ) 來包含所有表空間。

指定除了列出的表空間之外的所有表空間。

指定 NONE 來排除所有表空間。

如果使用者表空間的建立模式必須與 oracle 提供的表空間 ( SYSTEM SYSAUX) 的建立模式不同,那麼在 USER_TABLESPACES 子句中指定以下內容之一 :

-copy: 表空間的檔案被複制到一個新的位置。

-MOVE: 表空間的檔案被移動到一個新的位置。

-NOCOPY: 表空間的檔案不會被複制或移動。

-SNAPSHOT COPY: 表空間克隆儲存快照。

-NO DATA: 表空間的資料模型定義是克隆的,但不是表空間的資料。

CDB 的相容性級別為 12.2.0 或更高時,被這個子句排除的表空間將在新的 PDB 中離線建立,並且沒有與它們相關聯的資料檔案。當 CDB 的相容性級別低於 12.2.0 時,這個子句所排除的表空間在新的 PDB 中處於離線狀態,屬於這些表空間的所有資料檔案都是未命名的,並且處於離線狀態。

此子句不適用於系統、SYSAUX 或臨時表空間。不要在這個子句的表空間列表中包含這些表空間。

下面是使用USER_TABLESPACES 子句的示例。

5-4 包含一個表空間的 user_tablespaces 子句

假設建立PDB PDB 包含以下表空間 :tbs1 tbs2 tbs3 。這個 USER_TABLESPACES 子句包括 tbs2 表空間,但不包括 tbs1 tbs3 表空間。

USER_TABLESPACES=('tbs2')

5-5 user_tablespaces 子句,它包含一個表空間列表

假設建立PDB PDB 包含以下表空間 :tbs1 tbs2 tbs3 tbs4 tbs5 。這個 USER_TABLESPACES 子句包括 tbs1 tbs4 tbs5 表空間,但不包括 tbs2 tbs3 表空間。

USER_TABLESPACES=('tbs1','tbs4','tbs5')

5-6 user_tablespaces 子句,它包含除了列出的表空間之外的所有表空間

假設建立PDB PDB 包含以下表空間 :tbs1 tbs2 tbs3 tbs4 tbs5 。這個 USER_TABLESPACES 子句包括 tbs2 tbs3 表空間,但不包括 tbs1 tbs4 tbs5 表空間。

USER_TABLESPACES=ALL EXCEPT('tbs1','tbs4','tbs5')

5-7 user_tablespaces 在不同的建立模式下

這個例子展示了一個完整的CREATE PLUGGABLE DATABASE 語句,它可以插入 PDB ,並且只包含來自 PDB tbs3 使用者表空間。該示例將 oracle 提供的表空間 ( SYSTEM SYSAUX) 的檔案複製到一個新位置,但是移動了 tbs3 使用者表空間的檔案。

CREATE PLUGGABLE DATABASE ncdb USING '/disk1/oracle/ncdb.xml'

COPY

FILE_NAME_CONVERT = ('/disk1/oracle/dbs/', '/disk2/oracle/ncdb/')

USER_TABLESPACES=('tbs3') MOVE;

5.2.4 PDB 檔案位置

CREATE PLUGGABLE DATABASE 語句中,可以指定新 PDB 使用的檔案的位置。

術語“file name” 是指檔案的名稱和位置。 CREATE PLUGGABLE DATABASE 語句有以下子句,這些子句指示正在建立的新 PDB 的檔名 :

•FILE_NAME_CONVERT 子句指定建立 PDB PDB 檔案的名稱。

當檔案還沒有到達它們的最終目的地,並且您希望在PDB 建立期間複製或移動它們時,可以使用這個子句。您可以在任何 CREATE PLUGGABLE DATABASE 語句中使用此子句。

•CREATE_FILE_DEST 子句為 PDB 的檔案指定預設的 Oracle Managed Files 系統目錄或 Oracle ASM 磁碟組。

使用這個子句為新的PDB 啟用 Oracle Managed Files ,獨立於為 CDB 在根中指定的任何 Oracle Managed Files 的預設位置。您可以在任何 CREATE PLUGGABLE DATABASE 語句中使用此子句。

必要時,可以在同一個CREATE PLUGGABLE DATABASE 語句中使用這兩個子句。此外,以下初始化引數可以控制新 PDB 檔案的位置 :

ROOT 中設定 DB_CREATE_FILE_DEST 初始化引數

這個初始化引數指定了CDB Oracle 託管檔案的預設位置。當在 PDB 中設定此引數時,它將為 PDB 指定 Oracle 託管檔案的預設位置。

•PDB_FILE_NAME_CONVERT 初始化引數

在處理CREATE PLUGGABLE DATABASE 語句時,此初始化引數將現有檔案的名稱對映到新檔名。

下面的表顯示了優先順序時兩個條款中使用相同的語句建立可插入資料庫, 併為每一個條款都初始化引數設定。和初始化引數 , 表也顯示了建立的檔案是否建立可插入資料庫語句將使用 Oracle Managed Files

關於Oracle Managed Files 的使用,該表只適用於 CREATE PLUGGABLE DATABASE 語句建立的檔案。在建立 PDB 之後為 PDB 建立的檔案可能使用 Oracle Managed Files ,也可能不使用。

此外, 如果 FILE_NAME_CONVERT CREATE_FILE_DEST 都是建立可插入資料庫中指定語句 , 然後 FILE_NAME_CONVERT 設定用於檔案被放置在 PDB 創造 , CREATE_FILE_DEST 設定用於設定 DB_CREATE_FILE_DEST PDB 的初始化引數。在這種情況下, Oracle Managed Files PDB 建立之後控制 PDB 檔案的位置。

5.2.4.1 FILE_NAME_CONVERT 子句

如果PDB 不使用 Oracle Managed Files ,那麼 CREATE PLUGGABLE DATABASE 語句的 FILE_NAME_CONVERT 子句指定如何使用現有檔案的名稱生成檔案的名稱 ( 例如資料檔案 )

你可以使用這個子句來指定以下選項之一:

一個或多個檔名模式和替換檔名模式,形式如下 :

'string1' , 'string2' , 'string3' , 'string4' , ...

string2 檔名模式替換 string1 檔名模式, string4 檔名模式替換 string3 檔名模式。您可以根據需要使用盡可能多對的檔名模式和替換檔名模式字串。

如果指定了奇數個字串( 最後一個字串沒有對應的替換字串 ) ,則返回一個錯誤。不要指定與單個檔名或目錄匹配的多個模式 / 替換字串。

PDB 建立過程中不應該複製或移動任何檔案時,則為 NONE 。省略 FILE_NAME_CONVERT 子句與指定 NONE 是一樣的。

您可以在任何CREATE PLUGGABLE 資料庫語句中使用 FILE_NAME_CONVERT 子句。

當在CREATE PLUGGABLE DATABASE 語句中沒有指定 FILE_NAME_CONVERT 子句時, Oracle Managed Files PDB_FILE_NAME_CONVERT 初始化引數指定如何生成檔案的名稱。如果同時使用 Oracle Managed Files PDB_FILE_NAME_CONVERT 初始化引數,則優先使用 Oracle Managed Files FILE_NAME_CONVERT 子句在指定時優先。

FILE_NAME_CONVERT 子句中指定的檔名模式不能匹配由 Oracle Managed Files 管理的檔案或目錄。

5-8 file_name_convert 子句

這個FILE_NAME_CONVERT 子句使用 /oracle/dbs 目錄中的檔名為 /oracle/ pdb5 目錄中的新 PDB 生成檔名。

FILE_NAME_CONVERT = ('/oracle/dbs/', '/oracle/pdb5/')

5.2.4.2 CREATE_FILE_DEST 子句

CREATE PLUGGABLE DATABASE 語句的 CREATE_FILE_DEST 子句為 PDB 啟用了 Oracle Managed Files ,併為 PDB 檔案指定了預設的檔案系統目錄或 Oracle ASM 磁碟組。

PDB 資料檔案和臨時檔案被限制在指定的目錄及其子目錄中。如果在此子句中將檔案系統目錄指定為預設位置,則該目錄必須存在。此外,執行 CREATE PLUGGABLE 資料庫語句的使用者必須具有在指定目錄中建立檔案的適當許可權。或者,您可以指定存在於 CDB 根目錄中的目錄物件的名稱 (CDB$ root) directory 物件指向 CREATE_FILE_DEST 使用的檔案系統目錄。

如果在CDB 根目錄中有針對 CDB 設定的預設 Oracle Managed Files 位置,那麼 CREATE_FILE_DEST 設定將覆蓋 CDB 根目錄的設定,而指定的 CREATE_FILE_DEST 設定將用於 PDB

如果指定CREATE_FILE_DEST=NONE ,則 PDB 將禁用 Oracle Managed Files

CREATE_FILE_DEST 子句設定為非 NONE 值時, DB_CREATE_FILE_DEST 初始化引數在 PDB 中隱式設定, SCOPE=SPFILE

如果CDB 根目錄使用 Oracle Managed Files ,並且沒有指定這個子句,那麼 PDB 將從 CDB 根目錄繼承 Oracle Managed Files 的預設位置。

5-9 create_file_dest 子句

這個CREATE_FILE_DEST 子句指定 /oracle/pdb2/ 作為新 PDB 的預設 oracle Managed Files 系統目錄。

CREATE_FILE_DEST = '/oracle/pdb2/'

5.2.4.3 PDB 檔案位置的限制

CREATE PLUGGABLE DATABASE 語句的 PATH_PREFIX 子句確保與 PDB 關聯的所有目錄物件路徑都限制在指定的目錄或其子目錄中。

這個子句還確保以下與PDB 關聯的檔案被限制在指定的目錄中 : 用於 PDB Oracle XML 儲存庫、使用 CREATE PFILE 語句建立的檔案,以及用於 Oracle wallet 的匯出目錄。當您希望確保 PDB 的檔案位於特定目錄及其子目錄中時,請使用此子句。

你可以使用這個子句來指定以下選項之一:

絕對路徑,用作與 PDB 相關的所有檔案路徑的字首。

存在於 CDB 根目錄中的目錄物件的名稱 (CDB$ root) directory 物件指向用於 PATH_PREFIX 的絕對路徑。

•NONE 表示檔案路徑沒有限制。省略 PATH_PREFIX 子句與指定 NONE 是一樣的。

建立PDB 之後,不能修改它的 PATH_PREFIX 設定。

您可以在任何CREATE PLUGGABLE 資料庫語句中使用 PATH_PREFIX 子句。

5-10 path_prefix 子句

這個PATH_PREFIX 子句確保與 PDB 關聯的所有檔案路徑都限制在 /disk1/oracle/dbs/salespdb/ 目錄下。

PATH_PREFIX = '/disk1/oracle/dbs/salespdb/'

一定要指定路徑名,以便在新增檔名時正確地形成路徑名。例如,在UNIX 系統上,一定要用正斜槓 (/) 結束路徑名。

注意:

在為 PDB 指定了 PATH_PREFIX 子句之後,現有的目錄物件可能無法正常工作,因為總是將 PATH_PREFIX 字串作為字首新增到 PDB 中的所有本地目錄物件。

•PATH_PREFIX 子句不影響由 Oracle Managed Files 建立的檔案。

•PATH_PREFIX 子句只適用於使用者建立的目錄物件。它不適用於 oracle 提供的目錄物件。

•PATH_PREFIX 子句不適用於資料檔案或臨時檔案。如果您使用的是 Oracle Managed Files ,那麼可以使用 CREATE_FILE_DEST 子句來限制資料檔案和臨時檔案的位置。

5.3 服務名稱轉換

建立PDB 的一個重要方面是管理資料庫服務的重新命名。

當新PDB 的服務名稱與 CDB 中現有的服務名稱衝突時,可能會導致 plug-in 衝突。 CREATE PLUGGABLE DATABASE 語句的 SERVICE_NAME_CONVERT 子句根據源 PDB 的服務名稱重新命名新 PDB 的使用者定義服務。使用這個子句,您可以重新命名服務並避免 plug-in 衝突。

你可以使用這個子句來指定以下選項之一:

一個或多個服務名稱和替換服務名稱,格式如下 :

'string1' , 'string2' , 'string3' , 'string4' , ...

string2 服務名替換 string1 服務名, string4 服務名替換 string3 服務名。您可以根據需要使用盡可能多的服務名稱對和替換服務名稱。

如果指定了奇數個字串( 最後一個字串沒有對應的替換字串 ) ,則返回一個錯誤。

當不需要重新命名服務名稱時,則為 NONE 。省略

SERVICE_NAME_CONVERT 子句與指定 NONE 相同。

您可以在任何CREATE PLUGGABLE DATABASE 語句中使用 SERVICE_NAME_CONVERT 子句,除了從 PDB 種子建立 PDB CREATE PLUGGABLE DATABASE 語句之外。 PDB 種子不能有使用者定義的服務。但是,您可以將此語句用於 CREATE PLUGGABLE DATABASE 語句,該語句從應用程式容器中的應用程式種子建立應用程式 PDB

5-11 service_name_convert 子句

SERVICE_NAME_CONVERT 子句使用將 salesrep 服務重新命名為 salesperson

SERVICE_NAME_CONVERT = ('salesrep','salesperson')

5.4 建立 PDB 的子句總結

當您使用create PLUGGABLE DATABASE 語句建立 PDB 時,可以根據不同的因素使用不同的子句。

其中一個因素是用於建立PDB 的技術。你可以通過回答一系列的問題來決定使用哪些子句。

下表描述了根據不同的因素建立可插入資料庫子句的方法。

5-3 用於建立 PDB 的子句

問題1 您想要建立一個應用程式容器而不是PDB ?

YES: 指定 AS APPLICATION CONTAINER 子句。

NO: 省略 AS APPLICATION CONTAINER 子句。

子句只能在以下情況下使用 :在CDB 中建立應用程式容器

問題2 :您是否正在將 PDB 插入包含一個或多個 PDB CDB ,這些 PDB 是通過插入同一 PDB 建立的?

YES: 指定 AS CLONE 子句以確保 Oracle 資料庫生成新 PDB 所需的唯一 PDB DBID GUID 和其他識別符號。 PDB 作為 unplugged PDB 的克隆插入,以確保其所有識別符號都是唯一的。

NO: 省略 AS CLONE 子句

子句只能在以下情況下使用 Plugging in an unplugged PDB

問題3 :要在應用程式容器中建立應用程式 seed ?

YES: 指定 AS SEED 子句

NO: 省略 AS SEED 子句

子句只能在以下情況下使用 :在應用程式容器中建立應用程式seed

問題4 :您想要使用 CREATE_FILE_DEST 子句來為 PDB 檔案指定 Oracle Managed Files 的預設位置嗎 ? 當從 PDB 種子或應用程式種子建立 PDB 時,原始檔是與種子相關聯的檔案。

YES: 包含一個 CREATE_FILE_DEST 子句,它指定 PDB 檔案的預設檔案系統目錄或 ASM 磁碟組。

NO: 忽略 CREATE_FILE_DEST 子句。

使用其中一種技術來指定檔案的目標位置:

FILE_NAME_CONVERT 子句

•為 CDB 啟用 Oracle Managed Files ,以確定目標位置。

•在 PDB_FILE_NAME_CONVERT 初始化引數中指定目標位置。

子句只能在以下情況下使用

PDB 種子或應用程式種子建立 PDB

克隆一個PDB ,重新定位一個 PDB

插入unplugged PDB

問題5 :要為 PDB 指定預設的永久表空間嗎 ?

YES: 指定具有適當限制的預設表空間子句。

Oracle 資料庫將向該表空間分配任何未為其指定其他永久表空間的非系統使用者。

當從PDB 種子或應用程式種子建立 PDB 時, Oracle 資料庫將建立一個 smallfile 表空間並將其設定為預設表空間。使用從 PDB 種子或應用程式種子建立以外的技術時,源 PDB 中必須存在指定的表空間。

NO: 省略 DEFAULT TABLESPACE 子句。

如果不指定此子句,則SYSTEM 表空間是非系統使用者的預設永久表空間。不建議為非系統使用者使用 SYSTEM 表空間。

子句只能在以下情況下使用

PDB 種子或應用程式種子建立 PDB

克隆一個PDB ,重新定位一個 PDB

插入unplugged PDB

問題6 :要使用 FILE_NAME_CONVERT 子句來指定檔案的目標位置嗎 ?

當從PDB 種子或應用程式種子建立 PDB 時,原始檔是與種子相關聯的檔案。

YES: 包含一個 FILE_NAME_CONVERT 子句,它根據原始檔的名稱指定檔案的目標位置。

NO: 忽略 FILE_NAME_CONVERT 子句。

使用其中一種技術來指定檔案的目標位置:

CREATE_FILE_DEST 子句

•為 CDB 啟用 Oracle Managed Files ,以確定目標位置。

•在 PDB_FILE_NAME_CONVERT 初始化引數中指定目標位置。

子句只能在以下情況下使用 :從PDB 種子或應用程式種子建立 PDB

克隆一個PDB ,重新定位一個 PDB

建立代理PDB( 僅適用於系統和 SYSAUX 表空間中的資料檔案 )

插入未插入的PDB

問題7 PDB 是一個具有依賴代理 PDB 的引用 PDB ? 它的監聽器的主機名是否改變了 ?

YES: 包含一個 HOST 子句,併為正在建立的 PDB 指定監聽器的主機名。

例如,您可能有一個用於物理主機名和預設埠的listener network ,並配置第二個偵聽器,該偵聽器繫結到一個虛擬主機名和一個具有非預設埠號的虛擬 IP 地址。

NO: 省略 HOST 子句

子句只能在以下情況下使用 :從PDB 種子或應用程式種子建立 PDB

克隆一個PDB ,重新定位一個 PDB

插入未插入的PDB

問題8 :要在新的 PDB 中指定表空間的日誌屬性嗎 ?

YES: 使用 logging_clause 子句

NO: 省略 logging_clause 子句

子句只能在以下情況下使用

PDB 種子或應用程式種子建立 PDB

克隆一個PDB

插入未插入的PDB

問題9 :您要複製或移動檔案到新的位置嗎 ?

YES: 指定 COPY 以將檔案複製到新位置。 COPY 是預設值。指定 MOVE 將檔案移動到新的位置。使用其中一種技術來指定目標位置 :

•包括一個 FILE_NAME_CONVERT 子句,它根據原始檔的名稱指定目標位置。

•包含一個 CREATE_FILE_DEST 子句,為 PDB 的檔案指定 Oracle Managed Files 的預設位置。

•啟用 Oracle Managed Files ,以確定目標位置。

•在 PDB_FILE_NAME_CONVERT 初始化引數中指定目標位置。

NO: 指定 NOCOPY

子句只能在以下情況下使用 :插入未插入的PDB

問題10 :是否要指定源 PDB 的資料模型定義是克隆的,而不是源 PDB 的資料 ?

YES: 指定 NO DATA 子句

NO: 省略 NO DATA 子句

子句只能在以下情況下使用 :克隆PDB

問題11 :您想要使用多個並行執行伺服器來並行化 PDB 建立嗎?

YES: 要讓 CDB 選擇並行度,可以包括或省略 PARALLEL 子句。

要指定並行度,請使用整數指定PARALLEL 子句。例如,指定 PARALLEL 4 表示並行度為 4

NO: 指定 PARALLEL 0 1

子句只能在以下情況下使用

PDB 種子或應用程式種子建立 PDB

克隆一個PDB

問題12 :您是否希望使用 PATH_PREFIX 子句來限制以下 PDB 的檔案路徑 : 目錄物件、 PDB Oracle XML 儲存庫、使用 CREATE PFILE 語句建立的檔案,以及 Oracle wallets 的匯出目錄 ?

PATH_PREFIX 子句不影響由 Oracle Managed Files 建立的檔案。

YES: 包含一個指定絕對路徑的 PATH_PREFIX 子句。

NO: 指定 PATH_PREFIX NONE 或省略

子句只能在以下情況下使用

PDB 種子或應用程式種子建立 PDB

克隆一個PDB ,重新定位一個 PDB

插入未插入的PDB

問題13 PDB 是具有依賴代理 PDB 的引用 PDB ? 它的偵聽器的埠號是否更改為一個非 1521 的值 ?

YES: 包含一個 PORT 子句,併為正在建立的 PDB 指定監聽器的埠號。

例如,您可能有一個用於物理主機名和預設埠的偵聽器網路,並配置第二個偵聽器,該偵聽器繫結到一個虛擬主機名和一個具有非預設埠號的虛擬IP 地址

NO: 省略 PORT 子句

子句只能在以下情況下使用

PDB 種子或應用程式種子建立 PDB

克隆一個PDB ,重新定位一個 PDB

插入未插入的PDB

問題14 :您希望能夠重新整理 PDB 以將更改從源 PDB 傳播到克隆 PDB ?

可重新整理的PDB 必須以只讀模式開啟。

YES: 包含一個 REFRESH MODE MANUAL REFRESH MODE EVERY minutes 子句。

NO: 省略 REFRESH MODE clause 或包含一個 REFRESH MODE NONE clause.

子句只能在以下情況下使用 :克隆PDB

問題15 :要將預定義的 Oracle 角色授予 PDB 中本地的 PDB_DBA 角色嗎 ?

PDB 的新管理員被授予 PDB 中本地的 PDB_DBA 公共角色。預設情況下, CREATE PLUGGABLE DATABASE 語句不授予管理員或角色任何特權。

YES: 包括 ROLES 子句,並指定要授予 PDB_DBA 角色的預定義 Oracle 角色。指定的角色被授予 PDB 中的本地 PDB_DBA 角色。執行 CREATE PLUGGABLE 資料庫語句的使用者不需要被授予指定的角色。有關預定義 Oracle 角色的資訊,請參閱 Oracle 資料庫安全指南。

NO: 省略 ROLES 子句

子句只能在以下情況下使用

PDB 種子或應用程式種子建立 PDB

建立代理PDB

問題16 :要使用 SERVICE_NAME_CONVERT 子句根據源 PDB 的服務名稱重新命名新 PDB 的使用者定義服務嗎 ?

YES: 包含 SERVICE_NAME_CONVERT 子句,該子句指定服務的新名稱及其要替換的服務名稱。必要時指定多個服務名稱和替換服務名稱。

NO: 省略 SERVICE_NAME_CONVERT 子句

子句只能在以下情況下使用

從應用程式種子建立PDB ,而不是 PDB 種子

克隆一個PDB ,重新定位一個 PDB

建立代理PDB( 僅適用於系統和 SYSAUX 表空間中的資料檔案 )

插入未插入的PDB

問題17 :是否要使用 storage-managed snapshot( 而不是由 ALTER PLUGGABLE DATABASE snapshot 生成的快照 ) 克隆 PDB ?

YES: 指定 SNAPSHOT COPY 子句,使用 storage-managed snapshots 克隆 PDB 。僅當基礎檔案系統支援儲存快照時,才支援快照複製。

snapshot copy 幾乎是瞬時的,因為它不需要複製源 PDB 的完整資料檔案。但是,您不能從 CDB 根或應用程式根中拔出快照副本 PDB

另外,如果存在快照副本PDB ,則不能刪除快照副本 PDB 所基於的儲存快照。

物化過程將使用稀疏檔案的快照副本PDB 轉換為完整的 PDB 。通過執行 ALTER PLUGGABLE DATABASE Materialize 命令實現 PDB

NO: 省略 snapshot copy 子句

子句只能在以下情況下使用 :克隆PDB

問題18 :是否要使用 ALTER PLUGGABLE DATABASE SNAPSHOT 啟用 pdb 級快照 ?

YES: ALTER PLUGGABLE DATABASE SNAPSHOT 命令中指定一個快照模式子句,並指定手動或每個 snapshot_interval [MINUTES|HOURS]

NO: 省略 SNAPSHOT MODE 子句或指定 SNAPSHOT MODE NONE.

子句只能在以下情況下使用

PDB 種子或應用程式種子建立 PDB

克隆一個PDB ,重新定位一個 PDB

建立代理PDB( 僅適用於系統和 SYSAUX 表空間中的資料檔案 )

插入未插入的PDB

問題19 :是否所有的原始檔都在一個目錄中,並具有需要多個 SOURCE_FILE_NAME_CONVERT 條目的新檔名 ?

YES: 使用原始檔的完整絕對路徑指定 SOURCE_FILE_DIRECTORY

NO: 省略 SOURCE_FILE_DIRECTORY clause.

子句只能在以下情況下使用

直接使用XML 檔案插入未插入的 PDB

此子句不適用於用. PDB 存檔檔案插入未插入的 PDB

問題20 XML 檔案的內容是否準確地描述了原始檔的位置 ?

YES: 省略 SOURCE_FILE_NAME_CONVERT 子句

NO: 使用 SOURCE_FILE_NAME_CONVERT 子句指定原始檔位置。

子句只能在以下情況下使用

直接使用XML 檔案插入未插入的 PDB

此子句不適用於用. PDB 存檔檔案插入未插入的 PDB

問題21 :您希望將新的 PDB 包含在一個或多個 standby CDBs 中嗎 ?

YES: 指定 ALL ALL EXCEPT 或備用 CDBs 列表。

在建立遠端克隆時,可以將初始化引數STANDBY_PDB_SOURCE_FILE_D BLINK 設定為指向源 PDB 資料檔案的資料庫連結的名稱。該操作僅在源 PDB 為只讀開啟時才複製資料檔案。

NO: 省略 STANDBYS clause 子句或指定 NONE

子句只能在以下情況下使用

PDB 種子或應用程式種子建立 PDB

克隆一個PDB

將一個PDB

插入未插入的PDB

問題22 :您想限制 PDB 可以使用的儲存空間嗎 ?

YES: 使用適當的限制指定 storage 子句。

NO: 忽略儲存子句,或使用儲存子句指定無限儲存。

子句只能在以下情況下使用

PDB 種子或應用程式種子建立 PDB

克隆一個PDB ,重新定位一個 PDB

插入未插入的PDB

問題23 :如果目標位置存在臨時檔案,是否要重用該臨時檔案 ?

YES: 包括 TEMPFILE REUSE clause.

NO: 忽略 TEMPFILE REUSE clause

確保目標位置中沒有與新臨時檔案同名的檔案。

子句只能在以下情況下使用

PDB 種子或應用程式種子建立 PDB

克隆一個PDB ,重新定位一個 PDB

插入未插入的PDB

問題24 :要指定哪些表空間包含在新的 PDB 中,哪些表空間不包含在新的 PDB 中嗎 ?

YES: 包含 USER_TABLESPACES 子句,並指定新 PDB 中包含的表空間。

NO: 省略 USER_TABLESPACES

子句只能在以下情況下使用 :插入未插入的PDB

問題25 :要將未插拔的 PDB 插入 CDB ?

YES: 包括 USING filename 子句。

如果在資料保護場景中將PDB 插入到主 CDB ,那麼將 STANDBY_PDB_SOURCE_FILE_DIRECTORY 初始化引數設定為備用位置,該位置包含用於例項化 PDB 的源資料檔案。如果沒有找到,那麼備用資料庫將嘗試在 OMF 位置定位檔案。如果在 OMF 位置中沒有找到,則將資料檔案複製到 OMF 位置,並重新啟動備用資料庫上的 redo apply

NO: 省略 USING filename clause.

子句只能在以下情況下使用 :插入未插入的PDB

問題26 :要基於 PDB 快照建立新的 PDB ?

YES: 包括 USING SNAPSHOT 子句,並指定 PDB 快照名稱、 SCN 或時間戳。結果是一個完整的、獨立的 PDB

PDB 快照是 PDB 的一個時間點副本。在建立快照時,源 PDB 可以是開啟的只讀的,也可以是讀 / 寫的。要手動建立 pdb 級快照,請指定 create PLUGGABLE DATABASE( ALTER PLUGGABLE DATABASE) SNAPSHOT 子句。

指定each interval 子句配置 PDB 以自動建立快照。

NO: 排除 USING SNAPSHOT clause.

子句只能在以下情況下使用 :克隆PDB 快照

問題27 :你想通過 splitting 映象來克隆位於 Oracle ASM 中的 PDB ?

YES: 包括 USING MIRROR COPY 子句,並指定映象副本的名稱和源 PDB

NO: 省略 USING MIRROR COPY clause.

子句只能在以下情況下使用 :克隆一個使用ASM 儲存的 PDB

5.5   建立PDB 的一般先決條件

在建立PDB 之前,您必須滿足某些先決條件。

在建立PDB 之前,確保滿足以下先決條件。

1 CDB 必須存在。

2 CDB 必須讀 / 寫模式。

3 當前使用者必須是其當前容器 CDB ROOT 或應用程式容器的公共使用者。

4 當前使用者必須具有 CREATE PLUGGABLE DATABASE 系統許可權。

5 您必須為每個容器確定一個惟一的容器名稱。在單個 CDB 中,每個容器名稱必須是惟一的,並且每個容器名稱在通過特定偵聽器訪問其例項的所有 CDB 的範圍內必須是惟一的。

PDB 名稱將 PDB CDB 中的其他 PDB 區別開來。 PDB 名稱遵循與服務名稱相同的規則,其中包括不區分大小寫。

6 如果在 Oracle Data Guard 配置中使用 physical standby database 建立 PDB ,則必須在建立 PDB 之前完成其他任務。

7 如果您正在建立一個包含使用透明資料加密加密的資料的 PDB ,那麼您必須完成其他任務。

8 如果您正在建立啟用 Vault-enabled PDB ,則必須完成其他任務。

9 如果您通過克隆非 CDB 來建立 PDB ,並且希望能夠使用源非 CDB 的備份來恢復新的 PDB ,那麼您必須執行 DBMS_PDB.EXPORTRMANBACKUP 之前克隆。當源資料庫以讀 - 寫模式開啟時,作為克隆之前的最後一步執行該過程。此過程捕獲資料字典中的所有備份後設資料。

當將PDB 重新定位到不同的 CDB 時,執行 DBMS_PDB.EXPORTRMANBACKUP 是不必要的。拔下 PDB 會自動匯出備份後設資料。

歡迎關注我的微信公眾號"IT小Chen",共同學習,共同成長!!!

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29785807/viewspace-2683187/,如需轉載,請註明出處,否則將追究法律責任。

相關文章