一、概述 1、Oracle 12c 可插拔数据库体系结构 Oracle 12c 中引入了一个新功能就是Oracle Multitenant,这个功能可以在多租户容器数据库中,创建并维护许多个可插拔数据库...Oracle Multitenant是Oracle企业版中需要额外付费的组件。然而,在所有Oracle版本中都可以在一个可插拔数据库中免费使用它。...多租户容器数据库(CDB)是指能够容纳一个或者多个可插拔数据库的数据库。容器是指CDB中的数据文件和元数据的集合。可插拔数据库是指可以通过克隆另一个数据库轻松创建的数据容器。...,在CDB中创建的数据库被称为PDB,每个PDB在CDB中是独立的,在单独使用PDB时与普通数据库无差别。...(2)PDB$SEED:PDB$SEED为PDB的种子,其中提供了数据文件,在PDB环境中被标识为PDB$SEED,是创建PDB的模板,可以连接PDB$SEED但是不能执行任何事务,因为PDB$SEED
还会创建种子可插拔数据库,及该数据库自己的数据文件(用于SYSAUX和SYSTEM表空间)。...您可以使用新子句SEED FILE_NAME_CONVERT重命名种子可插拔数据库的数据文件,同时从根容器执行复制操作。该子句会创建种子可插拔数据库及该数据库自己的数据文件。...种子数据文件可用作创建未来PDB的模板。如果省略此子句,Oracle Managed Files会决定种子文件的名称和位置。...该子句指定数据库为CDB而不是非CDB。此时会创建根容器和种子可插拔数据库。您可以使用另一个子句SEED FILE_NAME_CONVERT指定种子文件的位置。...在本例中,/oracle/dbs和/oracle/seed目录必须存在。
Non-CDB,那么 PDB(Pluggable Database )在 CDB 下被称作可插拔数据库。...元数据的一个例子是 oracle 提供的 PL/SQL 包的源代码。公共用户是每个容器中都知道的数据库用户。...application seed 应用程序种子是一个可选的应用程序 PDB,充当用户创建的 PDB 模板,使您能够快速创建新的应用程序 PDB。...5)一个种子 PDB 种子 PDB 是系统提供的模板,CDB 可以使用它创建新的 PDB。种子 PDB 被命名为 PDB$SEED。...不能在 PDB$SEED 中添加或修改对象,PDB$SEED 默认情况下是只读模式的 PDB。 下面我们类比 11g 经典的体系结构图看一下多租户容器数据库体系结构: ? ?
Oracle的多租户和MySQL,MSSQL的类似,把之前的一个实例对一个数据库的情形(RAC是多个实例对一个数据库)整合成了一个实例下可以挂多个数据库,并且定义为可插拔的,听起来很炫。...一、多租户概念 Oracle多租户环境包含一个容器数据库(CDB)和零个或多个可插拔数据库(PDB),一个PDB是一个模式,模式对象,以及非模式对象,如到一个Oracle网络客户端作为非CDB。...元数据的一个例子是Oracle提供的PL/SQL包的源代码。公共用户是每个容器中已知的数据库用户。根容器被命名CDB$ROOT。 系统容器 该系统包括根CDB和在CDB所有的PDBS。...而系统容器包含CDB根目录和CDB 内的所有 PDB,应用程序容器仅包含插入应用程序根目录的PDB。应用根属于CDB根,没有其他容器。...一个公共用户存在于具有单个身份的CDB上。在这个例子中,公共用户SYS可以管理根和每个PDB。在物理层面上,该CDB具有数据库实例和数据库文件,就像非CDB一样。
3)可插拔数据库 从Oracle 12c版本开始,Oracle引入了可插拔数据库的概念,可插拔是为云计算而生。...一个CDB中最多可以插入250个PDB,在PDB中,seedPDB为模板PDB,它为新创建的PDB提供模板,其他的PDB可以根据需要创建、删除。...但在Oracle 12c版本中,通过引入CDB和PDB,一个实例可以对应多个可插拔数据库。...--在PDB中关闭可插拔数据库--> Pluggable Database closed. SQL> SQL> startup; Pluggable Database opened. SQL> SQL> alter session set container=cdb$root; <!
总是耳闻PDB在12c是一种全新的架构模式,在各种技术聊 天也大概知道是一种可插拨的新型架构模式,但是似乎SQLServer中也有类似的架构,不管怎么样Oracle圈内还是很火,而且听说12c r2可以支持...最后竟然还有改到隐含参数,我觉得对于初入门的学习来说,还是很不可取 的,所以尽管勉强出了点东西,但是我的感觉是这种学习方法不系统不全面,很容易被各种攻略来影响,还是不推荐的。...Root是存储了容器的基本模板,而seed则是提供了一套模板机制。可以基于seed模板来创建 对应的PDB,我要演示的也是这个方法。 ?...$SEED READ ONLY NO 我们再用sysdba登录,如果存在多个pdb,show pdbs显示的结果会更多。...默认创建PDB的时候,如果不指定文件的映射关系,会有下面的问题,我们可以省事先用OMF来做。
Oracle 12c之前的数据库都是非CDB,从Oracle 12.1.0.2开始,不推荐使用非CDB体系结构,而是使用多租户架构。...在多租户架构中,使用单个可插拔数据库(PDB)(也称为单租户或lone-PDB),可以不必支付多租户选项相关费用。...$SEED 3 PDB1 SQL> 企业版中没有任何内容阻止您创建额外用户定义的可插拔数据库,即使您没有多租户选项。...requires the Multitenant option.' ); END IF; END; / 在触发器就位后,我们尝试创建另一个可插拔数据库。...在这一点上,我不知道是否有其他机制来跟踪在实例中创建的PDB的最大数量,所以我不知道在实例中是否有遗留的错误记录。 有知道更多的内容可以留言给我。
但是 18c 、19c 可以使用 ORACLE_PDB_SID 来连接到 PDB,直接登录到数据库。...如上图,当我使用 sqlplus 连接到 PDB 时,每行 SQL 前均会显示所连接到的容器租户以及用户名称,如 SYS@JIEKEPDB1> .这个命令提示符是可以配置的。...在 $ORACLE_HOME/sqlplus/admin 目录下有一个 glogin.sql 文件,在最后添加 sqlprompt 相关的提示便可以了。...最最后,亲测,export ORACLE_PDB_SID 在12c 中不可用,不过 TWO_TASK=JIEKEXUPDB1 到时可以使用。...总结:有时候,通过根容器然后在切换到某个 PDB,是比较麻烦的,那么如果想直接连接到 PDB ,便可以配置环境变量 ORACLE_PDB_SID 它无疑是最方便的了,不过官方没有直接说明可以这么用,但从各种技术论坛文章中看到还是没有任何问题的
可插入数据库的概念 Oracle Multitenant Container Database(CDB),即多租户容器数据库,是Oracle 12C引入的特性,指的是可以容纳一个或者多个可插拔数据库的数据库...CDB seed CDB seed为PDB的种子,其中提供了数据文件,在CDB环境中被标识为PDB$SEED,是创建新的 PDB的模板,你可以连接PDB$SEED,但是不能执行任何事物,因为PDB$SEED...PDBs PDB数据库,在CDB环境中每个PDB都是独立存在的,与传统的Oracle数据库基本无差别,每个PDB拥有自己的数据文件和objects,唯一的区别在于PDB可以插入到CDB中,以及在CDB中拔出...,那么该权限不会被传递到所有的可插拔数据库中,必须为公用用户赋予能够传递到PDB中的权限,可以创建公用角色然后赋予公用用户,或者在为公共用户付权时指定子句container=ALL; 例如: 或者...3238406520 NORMAL 20:54:43 sys. woqu> CDB的创建 如果要使用可插拔数据库的功能,需要在创建数据库时专门指定启用可插拔数据库,创建CDB通常有如下两种方式: 使用
可插入数据库的概念 Oracle Multitenant Container Database(CDB),即多租户容器数据库,是Oracle 12C引入的特性,指的是可以容纳一个或者多个可插拔数据库的数据库...,这个特性允许在CDB容器数据库中创建并且维护多个数据库,在CDB中创建的数据库被称为PDB,每个PDB在CDB中是相互独立存在的,在单独使用PDB时,与普通数据库无任何区别。...·CDB seed CDB seed为PDB的种子,其中提供了数据文件,在CDB环境中被标识为PDB$SEED,是创建新的 PDB的模板,你可以连接PDB$SEED,但是不能执行任何事物,因为PDB$SEED...,那么该权限不会被传递到所有的可插拔数据库中,必须为公用用户赋予能够传递到PDB中的权限,可以创建公用角色然后赋予公用用户,或者在为公共用户付权时指定子句container=ALL; 例如: create...20:54:43 sys. woqu> CDB的创建 如果要使用可插拔数据库的功能,需要在创建数据库时专门指定启用可插拔数据库,创建CDB通常有如下两种方式: ·使用DBCA图形工具创建CDB
CDB中的C是Container,因此又被称为容器数据库,PDB的P是Plugged,所以被称为可插拔数据库。 简单来说,多租户就是在一个数据库塞多个数据库。...Oracle监听实际上是通过解析实例名来连接到某个数据库。...而Oracle中则是多个链表(一般为4、5个)由1个锁保护。 ? (独占模式) ?...在以前的版本中CBC Latch只有持有和不持有模式,也就是说没有共享的情况,直到最新版本中才有了共享、独占模式。...相关推荐 推荐文章 你是否知道怎样借助ES在不同场景下构建数据仓库 基于PG数据库插件的SQL规范审核工具 Oracle 数据库一体机的崛起
在Oracle 12c中,当连接到数据库服务器时,默认数据库是名为CDB$ROOT的ROOT容器数据库。 ...要断开用户与Oracle数据库服务器的连接,请使用EXIT命令: SQL> EXIT 要将OT用户连接到位于PDBORCL可插拔数据库中的示例数据库,请输入以下命令: sqlplus OT@PDBORCL...使用SQL Developer连接到Oracle数据库服务器 SQL Developer是一个用于在Oracle数据库中使用SQL的免费GUI工具。...要启动SQL Developer程序,请单击开始菜单中Oracle程序文件夹中的SQL Developer图标,如下图所示: 以下显示了SQL Developer程序: 要创建一个新的数据库连接: (...通过这样做,可以明确指定要连接的可插拔数据库PDBORCL。 第四步,单击测试 按钮来测试数据库连接。 如果看到状态:成功消息,则准备好连接到Oracle数据库服务器。
-A21EBEC10358 这次主要说一下补丁下载方法与更新补丁的步骤 0、补丁集下载 官方文档安装手册在第十二节中对于补丁下载更新有介绍,如下截图: ?...3、创建可插拔数据库 PDB 下面为了模拟多租户下补丁更新的方便,先在机器在添加一个名为 JiekeXupdb1 的 PDB 实例。...3.7 使用用户密码@服务名连接到新 PDB 实例 [oracle@JiekeXu admin]$ sqlplus sys/Oracle12c@JIEKEXUPDB1 as sysdba SQL*Plus...5、执行脚本 5.1 将修改后的 SQL 文件加载到数据库中 这一步执行起来还是比较慢的,等了大概有半小时,不过万幸无任何报错。...注意:12C 的补丁注册改成了用datapatch工具,而不是以前版本@$ORACLE_HOME/rdbms/admin/catbundle.sql psu apply ? ?
引入的特性,指的是可以容纳一个或者多个可插拔数据库的数据库,这个特性允许在CDB容器数据库中创建并且维护多个数据库,在CDB中创建的数据库被称为PDB,每个PDB在CDB中是相互独立存在的,在单独使用PDB...2.1.2CDB seed CDB seed为PDB的种子,其中提供了数据文件,在CDB环境中被标识为PDB SEED,**是创建新的 PDB的模板**,你可以连接PDB SEED,但是不能执行任何事物...如果连接可插拔数据库时出现: ORACLE 正在初始化或关闭。...4容器数据库的创建 PDB数据库的创建可以从现存的数据库中复制数据文件,包括种子容器、可插拔数据库、non-CDB数据库,创建时可以使用CREATE PLUGGABLE、RMAN、DBCA以及EM等...) RMAN备份 拔下的PDB 示例:(这里只演示使用create pluggable database命令方式创建PDB) 4.2使用CDB seed创建PDB 在SQL*Plus中输入CREATE
$SEED READ ONLY NO SYS@orcl> 1 连接 CDB 和 PDB 1.1 设置 ORACLE_SID 配置 ORACLE_SID,使用...]$ sqlplus / as sysdba dbca 建库后, tnsnames.ora 中已经增加了 ORCL [oracle@orcl19c:/home/oracle]$ cat $ORACLE_HOME...--------------------- CDB$ROOT SYS@ORCL> show con_id CON_ID ------------------------------ 1 1.5 查看可插拔数据库...$SEED READ ONLY NO 1.6 连接到可插拔数据库 pdb 方法一:alter session set container SYS@cdb1>...,增加 pdb1 的配置 [oracle@orcl19c ~]$ cd $ORACLE_HOME/network/admin [oracle@orcl19c admin]$ vi tnsnames.ora
在12c之前的版本中,Oracle数据库中的多用户管理通过Schema – 模式管理方式来实现,而在12c中,插接式数据库在更高级别实现了进一步的隔离。 1....而 PDB 彼此隔离,就像一个独立的数据库般在 CDB 中存在。...和 v$instance 视图中都可以找到相应信息,CDB 为 YES 显示该数据库为 CDB 模式: PDB 是一组 Schema 的集合,在 CDB 中作为一个独立的组件容器而存在。...在创建数据库时,如果选择定制数据库方式创建,则模板文件会自行创建出来,不需要使用模板中的文件。...以下示意图显示,CDB 中包含了 CDB$ROOT,PDB$SEED 和两个用户 PDB,两个 PDB 分别用于 SALES 和 HR 业务应用。
在Oracle中基于PDB种子复制数据库的方式,这个与SQLServert中直接创建数据库比较类似。...在SQLServer中有一个model数据库,这个库的功能就和PDB种子数据库一样,就是一个模板数据库。...从某种程度上来说,Oracle的多租户数据库几乎借鉴了80%的SQLserver的一些设计架构和理念。也即是通过从pdb数据库复制数据文件来达到快速建库的目的。下文是基于PDB种子建库的步骤及演示。...--使用公共用户sys连接到刚刚创建的pdb数据库 SQL> conn sys/pass@192.168.1.244:1521/cdb1pdb2 as sysdba Connected....--使用pdb本地管理员账户连接到pdb数据库 SQL> conn pdb2admin/pass@192.168.1.244:1521/cdb1pdb2 Connected.
sql plus.jpg ? oracle-error.jpg 如果你也出现这样的问题,那就来对地方了。嘻嘻,我可是花了一上午的时间解决的。 网上看了10多篇教程,在自己的随机应变下终于搞定了。...原因大概说一下: oracle 12c推出了可插拔库,管理用户也分为两种:本地用户和公用用户。本地用户是指在插拔数据库(PDB)中的用户,和12c之前的版本没有什么区别。...公用用户只存在于可插拔环境中,在传统的数据库环境中不存在这种应用。怎么理解公用用户呢?可以简单的把它当做容器(CDB)用户,可以在各个通用与所有可插拔数据库(PDB)中使用。...name='MY_USER1'; 我好像失败了: 在sqlplus中操作如下: SQL> update user$ set name='master' where name='c##master';...##################我就是这样成功了,如果还不行,在试一试,oracle12c界面其它的选择,我感觉它们很有用。 ?
在Oracle 12c CDB数据库中采取分离存放的方式,及各个PDB数据字典独立存放。 从用户和应用程序的角度来看,CDB中每个容器中的数据字典是分开的,因为它将在非CDB中。...2、非CDB混用数据字典情形示意图 在新创建的不包含用户数据的非CDB中,数据字典仅包含系统元数据。 例如,TAB$表包含仅描述Oracle提供的表的行,例如TRIGGER$和SERVICE$。...如下图显示PDB中的数据字典包含指向根中数据字典的指针。在内部,Oracle提供的对象(如数据字典表定义和PL / SQL包)仅在根中表示。 ?...该数据对应于元数据链路驻留在其PDB,而不是在根。例如,如果您在hrpdb上的表mytable中添加行,然后将行存储在PDB数据文件。PDB和根中的数据字典视图包含不同的行。...在某些情况下,Oracle数据库将一个对象的数据(不仅仅是元数据)存储在应用程序根目录中。应用程序PDB使用称为数据链接的内部机制来引用应用程序根目录中的对象。
在DBCA时会有local undo选项,且默认勾选 ? >关闭local undo ? ? ? 关闭后在PDB中查询undo为CDB中共享的undo表空间。...重启数据库并对修改做查询 ? 连接到PDB1 ? 打开loacl undo后,自动为当前的PDB创建undo表空间,同时新创建pdb,自动创建自己的undo表空间 ?...可以通过配置pdb$seed的undo,从而使根据seed模板创建的pdb后undo表空间的名字、大小等: ? 修改undo表空间 ? 连接到CDB root ?...创建PDB数据库pdb3,再次查询相关配置 ? 或者是直接在pdb$seed中删除undotbs1,之后创建的pdb都只有SEEDUNDOTS1表空间: ? 创建PDB数据库pdb4 ?...详细参考官方文档: http://docs.oracle.com/database/122/ADMIN/administering-a-cdb-with-sql-plus.htm#ADMIN-GUID
领取专属 10元无门槛券
手把手带您无忧上云