甲骨文云 Multitenant DB 1 : 云服务器多租户架构入门 (GPT4 制作)
mhr18 2024-09-29 13:59 40 浏览 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之旅吧…
相关推荐
- Ubuntu系统密码(root密码)的修改方法
-
本文介绍在Linux系统的Ubuntu电脑中,修改账户用户密码(同时也修改了root用户密码)的方法。首先,如果此时处于登录页面(也就是意识到自己忘记密码的那个页面),就先点击右上角的关闭按钮...
- TablePlus:一个跨平台的数据库管理工具
-
TablePlus是一款现代化的跨平台(Window、Linux、macOS、iOS)数据库管理工具,提供直观的界面和强大的功能,可以帮助用户轻松管理和操作数据库。TablePlus免费版可以永久...
- 云满足用户对通过单一视图了解整体运营和数据的需求
-
ZD至顶网软件频道消息:云在简化IT和业务的同时也带来了新问题,这很有趣,不是吗?毫无疑问,云大幅降低了企业运行基础设施和应用的复杂性和成本;但您仍然面临一个老生常谈的问题——孤岛,只不过这次是在云...
- SQL_TOP(显示数据条数)(sqlserver显示查询的行数)
-
(8)SELECT(9)DISTINCT(11)<topNum><selectlist>(1)FROM[left_table](3)<join_type>...
- php搭建小型部门网站(php构建网站)
-
熟悉前端html,js,css,后端熟悉php,python,java只能称得上一般,还有很多坑待踩。鉴于所学很杂,决定利用对业务的熟悉来搞一个部门网站来简化大家的工作流程。初步设计方案后端用p...
- 会SQL语句,就能快速开放你的数据接口API
-
会SQL,就能开放你的数据API接口如果你是非技术开发工程,不熟悉Java、PHP、Python、Golang这些后端的编程语言,但熟悉MySQL、Oracle、SQLServer、PostgreS...
- 推荐8款好用的Web版SQL工具,建议收藏
-
你使用过WebSQL版的SQL工具吗?开发人员在更换设备或重新安装系统时,通常需要花费大量时间来重新配置环境,既繁琐又浪费时间。使用Web版SQL开发工具可以完美解决这个问题!它支持远程访问,无需安...
- 黑客不会告诉你的10个Linux渗透测试工具
-
凌晨两点,我盯着目标企业的边界防火墙日志——所有端口都被封禁,IDS(入侵检测系统)警报安静得诡异。正当我以为这是一场“不可能完成”的渗透测试时,搭档发来一条消息:“试试LinPEAS,你可能会发现惊...
- 拉里·埃里森:数据库之父的传奇人生与创新之路
-
在现代科技的浪潮中,有一位企业家以其卓越的技术洞察力和创新精神,彻底改变了数据存储和管理的格局——他就是拉里·埃里森(LarryEllison)。作为甲骨文公司(Oracle)的创始人之一,埃里森不...
- 经典技术干货分享:JVM内存模型和垃圾回收机制
-
来源:全栈工程师小辉JVM内存模型根据Java虚拟机规范,Java数据区域分为五大数据区域。其中方法区和堆是所有线程共享的,虚拟机栈、本地方法栈和程序计数器则为线程私有的。有的博客称方法区是永久代...
- 让我来告诉你:最重要的 JVM 参数总结
-
1.概述在本篇文章中,你将掌握最常用的JVM参数配置。如果对于下面提到了一些概念比如堆、#2.堆内存相关Java虚拟机所管理的内存中最大的一块,Java堆是所有线程共享的一块内存区域,在虚拟机...
- 说一下 JVM 的内存布局和运行原理?
-
JVM(JavaVirtualMachine,Java虚拟机)顾名思义就是用来执行Java程序的“虚拟主机”,实际的工作是将编译的class代码(字节码)翻译成底层操作系统可以运行的机器...
- 这些不可不知的JVM知识,我都用思维导图整理好了
-
VM是面试中必问的部分,本文通过思维导图以面向面试的角度整理JVM中不可不知的知识。先上图:JVM必备知识1、JVM基本概念1.1、JVM是什么JVM的全称是「JavaVirtualMachi...
- 认识Kotlin_了解Kotlin和JVM虚拟机关系_重要性_更强大的跨平台
-
1.谷歌支持Kotlin作为android第一开发语言,因为java是已经被oracle收购了,可能会对Google收费.2.可以看到java语言写的android程序,实际上回编译成字节码,在jvm...
- 美团一面:为什么线程崩溃崩溃不会导致 JVM 崩溃
-
网上看到一个很有意思的美团面试题:为什么线程崩溃崩溃不会导致JVM崩溃,这个问题我看了不少回答,但发现都没答到根上,所以决定答一答,相信大家看完肯定会有收获,本文分以下几节来探讨线程崩溃,进程一定...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- oracle位图索引 (74)
- oracle批量插入数据 (65)
- oracle事务隔离级别 (59)
- oracle 空为0 (51)
- oracle主从同步 (55)
- oracle 乐观锁 (51)
- redis 命令 (78)
- php redis (88)
- redis 存储 (66)
- redis 锁 (69)
- 启动 redis (66)
- redis 时间 (56)
- redis 删除 (67)
- redis内存 (57)
- redis并发 (52)
- redis 主从 (69)
- redis 订阅 (51)
- redis 登录 (54)
- redis 面试 (58)
- 阿里 redis (59)
- redis 搭建 (53)
- redis的缓存 (55)
- lua redis (58)
- redis 连接池 (61)
- redis 限流 (51)