甲骨文云 Multitenant DB 1 : 云服务器多租户架构入门 (GPT4 制作)
sinye56 2024-10-19 13:32 8 浏览 0 评论
多租户架构使Oracle数据库能够作为多租户容器数据库(CDB)运行。这一特性在Oracle数据库12c及以后的版本中可用,因此您必须安装或升级到Oracle数据库12c或更高版本。数据库兼容性级别必须设置为12.0.0或更高版本,以使用多租户特性。以下是多租户架构中CDB/PDB如何相互交互的图像:
在上图中,我们有:
- 一个CDB
- 一个CDB$ROOT
- 一个PDB$SEED
- 三个直接链接到CDB的PDB
- 两个应用根 - 一个有两个应用PDB和一个应用种子,另一个有三个应用PDB链接到它。
以下是这些组件的一些详细信息:
什么是非NON-CDB数据库?
您熟悉的普通数据库,以及早期使用的数据库。只有一个简单的数据库,没有可插拔/容器数据库等。
所有Oracle数据库12c之前的数据库都是非CDB。
什么是CDB?
- CDB是容器数据库。
- 一个CDB包括零个、一个或多个客户创建的可插拔数据库(PDB)。
- 在CDB中,大多数用户数据驻留在PDB中。根部分不包含用户数据或仅包含最少的用户数据。
- CDB的磁盘存储空间需求是Oracle数据库安装所需的空间加上所有将成为CDB一部分的PDB的空间总和。
什么是PDB?
- 一个PDB是一组模式、模式对象和非模式对象的可移植集合,对于一个Oracle Net客户端来说,它看起来像一个非CDB。
什么是系统容器?
- 系统容器包括根CDB和CDB中的所有PDB。因此,系统容器是CDB本身的逻辑容器。
- 容器是多租户架构内数据或元数据的“逻辑”集合。
CDB/PDB中的数据库实例概念是什么?
- 数据库实例是一组管理数据库文件的内存结构。
- 在物理层面上,CDB是由CREATE DATABASE语句创建的磁盘上的一组文件。
- CDB包含一个或多个用户创建的PDB。一个PDB包含其自己的数据文件集,这些文件属于CDB的整体数据文件集。数据库实例管理与CDB及其PDB相关的数据,并为它们的用户提供服务。
- 每个运行中的CDB至少与一个Oracle数据库实例关联。因为实例存在于内存中,而数据库(狭义上的术语)是磁盘上的一组文件,所以实例可以在没有数据库的情况下存在,而数据库也可以在没有实例的情况下存在。
CDB的内容可以是什么?
每个CDB都可以有以下五种容器:
1.精确地一个CDB根容器(也简称为根)
- CDB根是一组模式、模式对象和非模式对象的集合,所有PDB都属于这个集合
- 根存储Oracle提供的元数据和公共用户。
- 元数据的一个例子是Oracle提供的PL/SQL包的源代码。
- 根容器名为CDB$ROOT。
- CDB根不存储用户数据。
- Oracle建议您不要向根添加公共对象或修改根中的Oracle提供的模式。但是,您可以创建公共用户和角色用于数据库管理。具有必要权限的公共用户可以在容器之间切换。
- Oracle建议根字符集使用AL32UTF8。不同字符集的PDB可以驻留在同一个CDB中,无需进行字符集转换。
2.精确地一个系统容器
- 系统容器包括根CDB和CDB中的所有PDB。因此,系统容器是CDB本身的逻辑容器,如前所述。
3.零个或多个应用容器
- 应用容器由一个应用根和插入此根的PDB组成。
- 虽然系统容器包含CDB根和CDB内的所有PDB,但应用容器只包含插入应用根的PDB。
- 应用根属于CDB根,不属于其他任何容器。
- 通常,您不会看到许多客户端使用应用容器设置。大多数客户端将在CDB内使用PDB。
4.零个或多个用户创建的PDB
- PDB包含特定功能集所需的数据和代码。例如,一个PDB可以支持特定应用程序,如人力资源或销售应用程序。
- 创建CDB时不存在PDB。您根据业务需求添加PDB。
- 一个PDB精确地属于零个或一个应用容器。如果一个PDB属于一个应用容器,那么它就是一个应用PDB。
- PDB是一组用户创建的模式、对象和相关结构,对客户端应用程序来说,它在逻辑上看起来像一个独立的数据库。
- 每个PDB都由SYS拥有,无论是哪个用户创建的PDB。SYS是CDB中的一个公共用户。
- 所有PDB都是用CREATE PLUGGABLE DATABASE语句创建的,除了Oracle提供的PDB$SEED。
5.精确地一个种子PDB
- 种子PDB是CDB用来创建新PDB的系统提供的模板。
- 种子PDB名为PDB$SEED。
- 您不能在PDB$SEED中添加或修改对象。
PDBS类型分类
在轻松云服务器的多租户架构中,您可以创建以下类型的PDB(可插拔数据库):
1.标准PDB Standard PDB
- 通过运行CREATE PLUGGABLE DATABASE而不指定PDB为种子、代理PDB或应用根来创建。
- a) 插入CDB根的PDB:属于CDB根容器而非应用容器,不能使用应用公共对象。这是最常用的标准PDB类型。
- b) 作为应用PDB插入:属于一个应用容器,与插入CDB根的PDB不同,应用PDB可以共享应用容器内的主应用定义。例如,应用根中的usa_zipcodes表可能是一个数据链接的公共对象,这意味着它包含所有插入此根的应用PDB都可以访问的数据。
2.应用根Application Root
- 可以被视为特定应用的根容器,类似于嵌套在主容器内的容器。
- 它充当应用后端的主定义存储库,包括公共数据和元数据。
- 创建应用根时,连接到CDB根并在CREATE PLUGGABLE DATABASE语句中指定AS APPLICATION CONTAINER子句。
3.种子Seed PDBs
- 与标准PDB不同,种子PDB不是为支持应用程序而设计的。
- 种子是创建支持应用程序的PDB的模板。
- 可以是插入CDB根的种子PDB(PDB$SEED)或应用种子PDB。
4.代理Proxy PDBs
- 代理PDB是使用数据库链接引用远程CDB中的PDB。
- 在代理PDB中执行语句时,该语句在被引用的PDB中执行。
- 必须在连接到CDB根或应用根时创建代理PDB。
- 代理PDB不经常使用。
多租户环境中使用的工具:
- SQL*Plus — 创建、管理和监控CDB和PDB。
- Oracle Enterprise Manager Cloud Control — 管理和监控CDB及其PDB。
- Oracle Enterprise Manager Database Express — 可为CDB、单独的托管PDB或两者配置。
- Oracle Database Configuration Assistant — 创建、迁移、克隆、插入和拔出PDB。
- Oracle SQL Developer — 客户端工具,提供图形用户界面,用于配置CDB、创建PDB、插入和拔出PDB、修改PDB状态、将PDB克隆到Oracle Cloud、热克隆/刷新PDB、在应用根之间迁移PDB等。
- Server Control (SRVCTL) 实用工具 — 创建和管理PDB的服务。
CDB-PDB中的命名规范:
- 在CDB中的容器共享相同的命名空间,这意味着它们必须在此命名空间中具有唯一名称。
- 对于以下容器,名称在同一CDB中不能冲突:
- CDB根
- 插入CDB根的PDB
- 应用根
- 应用PDB
- PDB和应用根容器的名称必须遵循与网络服务名称相同的规则。由于PDB或应用根有其自己的服务名称,容器名称必须在所有通过特定监听器暴露服务的CDB中是唯一的。
CDB中的公共和本地对象:
- 公共对象:在CDB根或应用根中定义,并可以使用元数据链接或对象链接引用。数据库提供的公共对象在CDB$ROOT中定义,无法更改。Oracle数据库不支持在CDB$ROOT中创建公共对象。
- 本地对象:所有不是公共对象的对象。
与Agilewing携手开启Oracle之旅
作为 Oracle 的高级合作伙伴,Agilewing推出的AgileCDN融合CDN服务,完美结合OCI云基础服务,为业务国际化、跨境电商和游戏出海量身打造,提供性价比极高的全球内容加速解决方案。作为一个创新的融合CDN平台,AgileCDN 在全球部署了超过2800个POP节点,并拥有200TB的强大网络容和7000多个直连点,确保网络连接的极致效率和稳定性。 借助先进的智能调度技术,AgileCDN优化了数据传输路径,大幅提升服务的速度和可靠性,结合简洁而高效的部署流程和OCI云服务的强大支持,迅速实现业务部署和构建,为企业的云迁移和国际业务拓展提供了一个经济高效的理想解决方案。
Agilewing作为Oracle云服务的合作伙伴,已帮助众多组织成功运用Oracle自主数据库。我们将与您的商业和技术团队紧密合作,利用我们的Oracle云专业知识,帮助您实现企业敏捷性、竞争力和性能的提升,同时从Oracle自主数据库中获得最大价值。今天就开始您的Oracle之旅吧…
相关推荐
- 程序员:JDK的安装与配置(完整版)_jdk的安装方法
-
对于Java程序员来说,jdk是必不陌生的一个词。但怎么安装配置jdk,对新手来说确实头疼的一件事情。我这里以jdk10为例,详细的说明讲解了jdk的安装和配置,如果有不明白的小伙伴可以评论区留言哦下...
- Linux中安装jdk并配置环境变量_linux jdk安装教程及环境变量配置
-
一、通过连接工具登录到Linux(我这里使用的Centos7.6版本)服务器连接工具有很多我就不一一介绍了今天使用比较常用的XShell工具登录成功如下:二、上传jdk安装包到Linux服务器jdk...
- 麒麟系统安装JAVA JDK教程_麒麟系统配置jdk
-
检查检查系统是否自带java在麒麟系统桌面空白处,右键“在终端打开”,打开shell对话框输入:java–version查看是否自带java及版本如图所示,系统自带OpenJDK,要先卸载自带JDK...
- 学习笔记-Linux JDK - 安装&配置
-
前提条件#检查是否存在JDKrpm-qa|grepjava#删除现存JDKyum-yremovejava*安装OracleJDK不分系统#进入安装文件目...
- Linux新手入门系列:Linux下jdk安装配置
-
本系列文章是把作者刚接触和学习Linux时候的实操记录分享出来,内容主要包括Linux入门的一些理论概念知识、Web程序、mysql数据库的简单安装部署,希望能够帮到一些初学者,少走一些弯路。注意:L...
- 测试员必备:Linux下安装JDK 1.8你必须知道的那些事
-
1.简介在Oracle收购Sun后,Java的一系列产品就被整合到Oracle官网中,打开官网乍眼一看也不知道去哪里下载,还得一个一个的摸索尝试,而且网上大多数都是一些Oracle收购Sun前,或者就...
- Linux 下安装JDK17_linux 安装jdk1.8 yum
-
一、安装环境操作系统:JDK版本:17二、安装步骤第一步:下载安装包下载Linux环境下的jdk1.8,请去官网(https://www.oracle.com/java/technologies/do...
- 在Ubuntu系统中安装JDK 17并配置环境变量教程
-
在Ubuntu系统上安装JDK17并配置环境变量是Java开发环境搭建的重要步骤。JDK17是Oracle提供的长期支持版本,广泛用于开发Java应用程序。以下是详细的步骤,帮助你在Ubuntu系...
- 如何在 Linux 上安装 Java_linux安装java的步骤
-
在桌面上拥抱Java应用程序,然后在所有桌面上运行它们。--SethKenlon(作者)无论你运行的是哪种操作系统,通常都有几种安装应用程序的方法。有时你可能会在应用程序商店中找到一个应用程序...
- Windows和Linux环境下的JDK安装教程
-
JavaDevelopmentKit(简称JDK),是Java开发的核心工具包,提供了Java应用程序的编译、运行和开发所需的各类工具和类库。它包括了JRE(JavaRuntimeEnviro...
- linux安装jdk_linux安装jdk软连接
-
JDK是啥就不用多介绍了哈,外行的人也不会进来看我的博文。依然记得读大学那会,第一次实验课就是在机房安装jdk,编写HelloWorld程序。时光飞逝啊,一下过了十多年了,挣了不少钱,买了跑车,娶了富...
- linux安装jdk,全局配置,不同用户不同jdk
-
jdk1.8安装包链接:https://pan.baidu.com/s/14qBrh6ZpLK04QS8ogCepwg提取码:09zs上传文件解压tar-zxvfjdk-8u152-linux-...
- 运维大神教你在linux下安装jdk8_linux安装jdk1.7
-
1.到官网下载适合自己机器的版本。楼主下载的是jdk-8u66-linux-i586.tar.gzhttp://www.oracle.com/technetwork/java/javase/downl...
- window和linux安装JDK1.8_linux 安装jdk1.8.tar
-
Windows安装JDK1.8的步骤:步骤1:下载JDK打开浏览器,找到JDK下载页面https://d.injdk.cn/download/oraclejdk/8在页面中找到并点击“下载...
- 最全的linux下安装JavaJDK的教程(图文详解)不会安装你来打我?
-
默认已经有了linux服务器,且有root账号首先检查一下是否已经安装过java的jdk任意位置输入命令:whichjava像我这个已经安装过了,就会提示在哪个位置,你的肯定是找不到。一般我们在...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- oracle忘记用户名密码 (59)
- oracle11gr2安装教程 (55)
- mybatis调用oracle存储过程 (67)
- oracle spool的用法 (57)
- oracle asm 磁盘管理 (67)
- 前端 设计模式 (64)
- 前端面试vue (56)
- linux格式化 (55)
- linux图形界面 (62)
- linux文件压缩 (75)
- Linux设置权限 (53)
- linux服务器配置 (62)
- mysql安装linux (71)
- linux启动命令 (59)
- 查看linux磁盘 (72)
- linux用户组 (74)
- linux多线程 (70)
- linux设备驱动 (53)
- linux自启动 (59)
- linux网络命令 (55)
- linux传文件 (60)
- linux打包文件 (58)
- linux查看数据库 (61)
- linux获取ip (64)
- linux进程通信 (63)