如何将 PDB 插入 Oracle12c 容器数据库

Resumen: 我们的目标是提供各种解决方案,通过提供数据库解决方案、自定义开发、动态数据中心、灵活计算,从而简化IT

Este artículo se aplica a Este artículo no se aplica a Este artículo no está vinculado a ningún producto específico. No se identifican todas las versiones del producto en este artículo.

Síntomas

适用对象: 
数据库:Oracle 12cR1

作者:
Mahesh Reddy

问题: 
如何将 PDB 插入 Oracle12c 容器数据库?

解决方案: 
您可以通过以下方式创建可插拔数据库:
  • 使用 seed 创建新的 PDB。
  • 通过克隆现有 PDB 创建新的 PDB
  • 将拔下的 PDB 插入 CDB
  • 从 12c 非 CDB 创建新的 PDB
1.使用 seed 创建新的 PDB:

使用 SEED 数据库创建 PDB。此方法将与 seed 关联的文件复制到新位置并关联到新的 PDB。您可以使用 create pluggable database 语句从 SEED 轻松创建新的 PDB。

您可以指定以下子句,以不同的方式从 SEED 创建新的 PDB:
  • Storage:您可以指定存储限制
  • Default Tablespace:这将创建一个小型文件表空间,并将其分配给非系统用户。
  • path_prefix:它指定绝对路径
  • file_name_convert:它指定源文件中 PDB 文件的新位置。
  • Tempfile reuse:它指定从目标位置重用 tempfile。
  • Roles:要授予 PDB_DBA 角色的预定义 Oracle 角色。
SLN310932_zh_CN__1icon :ROLES 子句仅可在从 seed 创建 PDB 时使用。

示例:1

Sql> Create pluggable database PDBNAME admin user PDBUSR identified by PASSWORD;

上面的语句使用本地用户 PDBUSR 创建 PDB。  此语句将 PDB_DBA 角色授予给 PDB 管理员“pdbusr”,并将指定的预定义 Oracle 角色本地授予给 PDB 中的 PDB_DBA 角色。

示例:2                              

Sql> Create pluggable database PDBNAME admin user pdbusr identified by PASSWORD storage (MAXSIZE 5G) default tablespace USERS datafile ‘+DATA_NEW’ size 100M autoextend on path_prefix = ‘+DATA_NEW’ file_name_convert = (‘+DATA’,’DATA_NEW’);

上面的语句创建具有有限大小的 pdb,它指定属于 PDB 的所有表空间不得超过 5gb,并在新位置“+DATA_NEW”中为非管理员用户创建默认表空间用户。 

2.  通过克隆现有 PDB 创建新的 PDB:

克隆生产数据库是一种通用技术,用于开发和测试对应用程序和关联环境所做的更改。在生产环境中安装新的操作系统版本、存储软件或应用程序版本之前,需要使用生产数据进行全面测试。通常通过将生产数据库复制到测试环境来实现此目的。

在 Oracle12c 中,您可以使用 CREATE PLUGGABLE DATABASE 语句克隆 PDB。此语句克隆源 PDB 并将克隆插入相同的 CDB 或远程 CDB。

CREATE PLUGGABLE DATABASE 语句将与源 PDB 关联的文件复制到新位置并将文件与目标 PDB 关联。

不同类型的子句:

1.       使用 No 子句克隆本地 PDB

No 子句表示无结构更改。

示例:sql> create pluggable database clone_pdb from pdb;

此处,clone pdb 在默认磁盘组中使用相同的大小和相同的角色及不同的 GUID 创建。

2.       使用 PATH_PREFIX 和 FILE_NAME_CONVERT 子句克隆本地 PDB

需要 FILE_NAME_CONVERT 子句来指定所复制文件的目标位置。在此示例中,将文件从一个位置复制到另一个位置。

示例:  sql> create pluggable database clone_pdb from pdb PATH_PREFIX= '+BRLOAD’ FILE_NAME_CONVERT = ('+DATA','+BRLOAD');

在此,源 pdb 数据文件存储在“+ DATA”磁盘组中,clone pdb datafiles 置于不同的磁盘组“+BRLOAD”中,您可以使用 FILE_NAME_CONVERT 子句将数据文件位置从“+DATA”转换为“+BRLOAD”。

3.       使用 FILE_NAME_CONVERT 和 STORAGE 子句克隆本地 PDB。

必须为 PDB 强制实施存储限制。因此,STORAGE 子句是必需的。具体而言,属于 PDB 的所有表空间不得超过 2gb,并且共享临时表空间中的 PDB 会话所使用的存储不得超过 100 兆字节。

示例:sql> create pluggable database clone_pdb from pdb FILE_NAME_CONVERT= ('+DATA','+BRLOAD') STORAGE (MAXSIZE 2G MAX_SHARED_TEMP_SIZE 100M);

 克隆本地 PDB 的步骤:

本部分介绍克隆本地 PDB。克隆本地 PDB 后,源和目标 PDB 位于同一 CDB 中。

您可以使用以下步骤克隆 PDB:

第 1 步:检查源 pdb 状态

  Sql>show pdbs;

      CON_ID   CON_NAME    OPEN MODE      RESTRICTED

          2    PDB$SEED       READ ONLY   NO

          3    PDB1           READ WRITE  NO

 要克隆的 PDB 必须处于 READ ONLY 状态,如果它以 READ WRITE 模式存在,请使用以下命令更改状态

Sql> alter pluggable database pdbname close instances=all;

在此,instances=all 表示在所有节点中关闭 PDB。

Sql> alter pluggable database pdb open read only instances=all;

Sql>show pdbs;

      CON_ID   CON_NAME    OPEN MODE      RESTRICTED

          2    PDB$SEED       READ ONLY   NO

          3    PDB1           READ ONLY   NO

第 2 步:从第 2 节中提到的不同克隆子句选择所需的选项。

Sql> create pluggable database clone_pdb1 from pdb1; (no clauses)

其中,pdb1 为源,clone_pdb1 为目标

第 3 步:克隆的 PDB 将处于已装载模式,并且其状态为 NEW。您可以通过查询 CDB_PDBS 或 DBA_PDBS 视图的 STATUS 列来查看 PDB 的状态。

之后,使用 alter pluggable database 更改 pdb 的状态,然后您需要在所有节点的 tnsnames.ora 中添加 PDB 服务。

3.将 PDB 拔下并插入到 CDB:

拔下 PDB:

拔下 PDB 将取消 PDB 与 CDB 的关联。拔下操作将在 PDB 的数据文件中进行一些更改,例如记录已成功拔出 PDB。由于这仍是 CDB 的一部分,因此,已拔下的 PDB 包含在整个 CDB 的 RMAN 备份中。此类备份提供了一种简便的方法来归档已拔出的 PDB,以备将来需要时使用。必须先关闭 PDB,然后才能将其拔出。从 CDB 上拔下 PDB 时,已拔下的 PDB 处于已装载模式

拔出 PDB 的步骤:

检查源 pdb 状态

 Sql>show pdbs;

      CON_ID   CON_NAME    OPEN MODE      RESTRICTED

          2    PDB$SEED       READ ONLY   NO

          3    PDB1           READ WRITE  NO

如果源 PDB 处于读写模式,则应将 PDB 状态更改为已装载状态。

Sql> alter pluggable database PDBNAME close instances=all;

连接到根容器,然后执行以下命令

Sql> alter pluggable database pdb1 unplug into /u01/app/oracle/pdb1.xml’;

在此,将在 /u01/app/oracle 目录中创建 pdb1.xml 元数据文件。

通过使用 XML 元数据文件,您可以将 PDB 插入

3.1. 相同的 CDB

3.2. 远程 CDB

您可以使用 create pluggable database 将 PDB 插入 CDB,并使用不同子句指定 XML 文件。

不同类型的子句:

Using source_file_name_convert, no copy clause:
SOURCE_FILE_NAME_CONVERT:XML 文件不显示当前文件位置。此时我们可以使用此子句。XML 表示文件位于 +DATA 中,但是实际文件位于 +DATA1 中。

Source_file_name_convert = (‘+DATA’,’+DATA1’)

+DATA= string1   +DATA1=string2

在此,string2 文件名格式替换 string1 文件名格式。

2.       使用 path_prefix, copy, file_name_convert 子句:

PATH_PREFIX:此子句用于指定数据文件位置的绝对路径。

FILE_NAME_CONVERT:当文件不在目标位置且您希望在创建 PDB 期间复制或移动它们时,可以使用此子句。

3.       使用 FILE_NAME_CONVERT,MOVE,SOURCE_FILE_NAME_CONVERT 子句:

Xml 文件不描述当前文件位置,因此需要转换源文件名称。示例:xml 文件指明文件位于“+DATA”中,但是文件位于“/u01/app”中。

需要转换文件名,以将文件从‘/u01/app’移至‘+DATA1’。

3.1. 将拔下的 pdb 插入相同的 CDB:

必须先将 PDB 从 CDB 中拔下,才能将其重新插入相同的 CDB。

 通过不同方法,使用 XML 文件创建可插拔数据库。

a)       NOCOPY 方法

Sql>Create pluggable database pdb1 using ‘/u01/app/oracle/pdb1.xml’ nocopy;

b)      COPY 方法

Sql> Create pluggable database pdb1 using ‘/u01/app/oracle/pdb1.xml’ copy file_name_convert=(‘+DATA/pdb1/’,’+DATA1’/pdb1/’);

c)       AS CLONE MOVE 方法

Sql> Create pluggable database pdb1 as clone using ‘/u01/app/oracle/pdb1.xml’ move file_name_convert=(‘+DATA/pdb1/’,’+DATA1’/pdb1/’);

3.2.将拔下的 pdb 插入远程 CDB:

前提条件:

A)      它们必须具有相同的 endian 格式。

B)      它们必须已安装相同的数据库选项集。

源:

1.   在拔下 PDB 后,将 XML 传输到目标位置,还可以使用 ASMCMD cp 或 DATA_FILE_NAME_CONVERT 命令将数据库文件从磁盘组 (+DATA) 传输到 OS 位置 (/home/)。

2.   将数据库文件从源复制到目标操作系统位置。 

目标:

从源获取 XML 和数据库文件后,您可以使用 DBMS_PDB.CHECK_PLUG_COMPATIBILITY 函数,以确定拔下的 pdb 是否与 TARGET CDB 兼容。

如果您获得输出“YES”,则 PDB 兼容。

如果获得输出“NO”,则 PDB 不兼容,并检查视图 PDB_PLUG_IN_VIOLATIONS 是否存在错误。

在创建远程 PDB 时,从第 3 节中选择所需子句,

示例:Sql> Create pluggable database pdbname using ‘/home/oracle/pdbname.xml’

      Source_file_name_convert = (‘+SOURCE_DATA’,’/home/oracle/datafiles’)

      移动

      File_name_convert = (‘/home/oracle/datafiles’,’+TARGET_DATA’);

说明:xml 文件针对 ASM 磁盘指定 PDB 数据文件位置,但实际文件位于 "/home/oracle" 位置。Source_file_name_convert 子句可帮助替换文件名格式,并指向实际的源位置。file_name_convert 子句可帮助将数据从操作系统位置移动到 ASM 磁盘。

4.将 12c-noncdb 迁移到 PDB:

请参阅此白皮书。
Propiedades del artículo
Número del artículo: 000146520
Tipo de artículo: Solution
Última modificación: 21 feb 2021
Versión:  3
Encuentre respuestas a sus preguntas de otros usuarios de Dell
Servicios de soporte
Compruebe si el dispositivo está cubierto por los servicios de soporte.