创建Oracle Multitenant容器数据库和PDB

日期: 2019-05-27 作者:Brian Peasland翻译:邹铮 来源:TechTarget中国 英文

你有充分的理由将公司的数据库迁移到Oracle Multitenant架构。例如,这样做可以减少数据库管理工作量,并允许在同一服务器上部署更多数据库。考虑到这一点,在本系列文章中,让我们来看看如何管理Oracle Multitenant环境。

在这里,我们将探讨如何创建一个多租户Oracle容器数据库(CDB)以及可插拔数据库(PDB),PDB在其中运行作为可选架构的一部分,该可选架构在2013年随Oracle Database 12c一起发布,现在还支持18c和19c版本的数据库管理系统,并且,这个容器数据库可以托管多个PDB,因此也被称为Oracle Multitenant。

我使用18.3版本的Oracle Database 18c来完成本系列中介绍的所有管理工作,这个Oracle Database 18c位于VirtualBox虚拟机管理程序运行的Oracle Linux 7.4虚拟机中。我已经设置好数据库服务器并安装了Oracle软件,所以我已经准备好开始了。

第一步是容器数据库。如果你是Oracle数据库管理员(DBA),则应熟悉Database Configuration Assistant;对于那些还了解的人来说,DBCA是Oracle基于Java的实用程序,用于创建和配置数据库。在启动后,我选择了Create a database选项,然后在第二个屏幕上选择Typical配置。

由于这只是测试平台安装,我使用了DBCA提供的默认值。此外,默认情况下,我选择了Create as Container数据库选项。如果我想要一个未部署Multitenant架构的传统数据库,我会取消选中此框。此外,我输入了第一个可插拔数据库的名称,如图1所示。

图1. Oracle DBCA屏幕,其中已选中创建容器数据库的选项。

图1. Oracle DBCA屏幕,其中已选中创建容器数据库的选项。

设置Oracle CDB的简单过程

事情就是如此。在单击Next按钮再单击Finish后,DBCA开始创建我的容器数据库。在完成后,我需要验证它是多租户数据库,并且是创建的第一个可插拔数据库。为此,我在Oracle的SQL * Plus命令行界面中发出了以下查询-结果显示该数据库确实是包含多个容器的CDB:

SQL> select con_id,name,pdb_count,member_cdb from v$containers;
 
 CON_ID NAME                     PDB_COUNT MEM
------- ---------------------------------- -------------
      1 CDB$ROOT                         1 NO
      2 PDB$SEED                         0 NO
      3 FIRSTPDB                         0 NO

这个根容器的容器ID始终为1;它在“普通用户”存储系统元数据和信息,他们可以访问和管理CDB中的所有容器。第二个容器是种子PDB,它包含可插拔数据库模板。并且,初始PDB的容器ID为3。根容器的PDB计数为1;种子PDB不是计数的一部分。相比之下,如果这不是多租户数据库,则查询将返回具有匹配容器和数据库名称。

按原样,我的企业可以在Oracle的标准单租户数据库许可下使用容器数据库。如果我在其中创建另一个PDB,我们需要为本地版本的Oracle数据库企业版d的Oracle Multitenant选项支付额外许可费用。而通过这个方法,我可以在常规数据库服务器中配置多达252个PDB,在一个在Oracle工程系统上运行的PDB中配置4,096个PDB。

添加可插拔数据库到CDB

在Oracle Multitenant架构中,CDB只是一个shell,它不包含任何实际数据、表或其他数据库对象供应用程序使用。在我们存储数据之前,我们需要创建PDB,它看起来像应用程序的单独数据库。

对于这种架构,简单的理解方法是假设它是公寓楼。该公寓楼是容器,每个公寓都有不同的房客。你用随身物品填满你的公寓,并且不希望其他租户在未经许可的情况下使用它们,所以你会锁上门。同样,Oracle Multitenant不允许一个可插拔数据库的用户访问不同的PDB,除非DBA已设置数据库链接以连接它们,就像在传统的Oracle数据库中一样。

在容器数据库中,创建新的可插拔数据库的最简单方法是再次使用DBCA。在初始屏幕上,我选择了管理可插拔数据库的选项,如图2所示。

图2.初始DBCA屏幕,已选中管理可插拔数据库的选项

图2.初始DBCA屏幕,已选中管理可插拔数据库的选项

接下来的屏幕包括创建、删除、拔出或配置PDB的选项。在选择Create选项后,我可以选择是否从另一个PDB创建可插拔数据库,或插入一个已从其他CDB中拔出的数据库。我选择了第一个选项,如图3所示,使用种子PDB作为我的新数据库的基础。

图3. DBCA屏幕,其中包含创建可插拔数据库的多个选项

图3. DBCA屏幕,其中包含创建可插拔数据库的多个选项

在下面屏幕上-如图4所示-我提供了PDB的名称和管理员用户名和密码。对于DBCA向导的其余部分,我接受了默认值并单击了Next按钮。当我到达摘要屏幕时,我按下Finish按钮,DBCA开始创建HR_PROD可插拔数据库。

图4.DBCA屏幕用于输入PDB名称和管理员登陆凭证

图4.DBCA屏幕用于输入PDB名称和管理员登陆凭证

创建PDF的命令行方法

对于那些喜欢使用命令行的数据库管理员,你可以使用CREATE PLUGGABLE DATABASE命令在SQL * Plus中轻松创建PDB。下面的示例可创建与上面相同的PDB,然后可打开它来使用:

SQL> create pluggable database hr_prod
  2  admin user hradmin identified by Password1;
 
Pluggable database created.
SQL> alter pluggable database hr_prod open;
 
Pluggable database altered.

接下来,我使用以下面的命令来验证新PDB是否存在,并在其中更改我的用户会话,而不是容器数据库中的根容器。当我的会话在PDB中,我就可以创建表并用数据填充它。

SQL> show pdbs
 
 CON_ID CON_NAME                  OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
      2 PDB$SEED                  READ ONLY  NO
      3 FIRSTPDB                  READ WRITE NO
      4 HR_PROD                   READ WRITE NO
 
SQL> show con_name               
 
CON_NAME
------------------------------
CDB$ROOT
SQL> alter session set container=hr_prod;
 
Session altered.
 
SQL> show con_name 
 
CON_NAME
------------------------------
HR_PROD

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

作者

Brian Peasland
Brian Peasland

Techtarget旗下Searchoracle网站的资深专家,有16年IT行业经验、计算机科学硕士、专攻数据库方向,曾担任系统管理员等职。此外,他还获Oracle 7.3、8和8i的OCP数据库管理员证书,目前为SGT Inc.公司首席DBA。

翻译

邹铮
邹铮

相关推荐

  • Java、JDBC和Postgres

    现在越来越多的企业开始部署PostgreSQL,为什么呢?当你看到这个许可开源数据库所提供的功能,你就不会对此 […]

  • 5个元数据管理最佳实践

    在数据驱动的环境中,元数据不仅仅是数据的副产品;还是综合数据治理战略的关键组成部分。企业需要适当的元数据管理, […]

  • Cockroach Labs增加矢量搜索,更新定价选项

    Cockroach Labs 近日推出矢量搜索功能,旨在使客户能够访问和操作非结构化数据,以训练生成式人工智能 […]

  • 如何使用数据治理成熟度模型

    如果没有强大的数据治理,数据就无法产生有价值的见解以及改善决策。数据治理成熟度模型可帮助企业评估当前的成就水平 […]