Oracle:容器数据库简介
2021/9/5 2:06:07
本文主要是介绍Oracle:容器数据库简介,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Oracle 12C 引入了 CDB 与 PDB 的新特性,在 ORACLE 12C 数据库引入的多租用户环境(Multitenant Environment)中,允许一个数据库容器(CDB)承载多个可插拔数据库(PDB)。CDB 全称为 Container Database,中文翻译为数据库容器,PDB 全称为 Pluggable Database,即可插拔数据库。在 ORACLE 12C 之前,实例与数据库是一对一或多对一关系(RAC):即一个实例只能与一个数据库相关联,数据库可以被多个实例所加载。而实例与数据库不可能是一对多的关系。当进入 ORACLE 12C 后,实例与数据库可以是一对多的关系。下面是官方文档关于CDB与PDB的关系图。
CDB 组件(Components of a CDB)
一个 CDB 数据库容器包含了下面一些组件:
-
ROOT 组件
ROOT 又叫 CDB$ROOT,存储着 ORACLE 提供的元数据和 Common User,元数据的一个例子是 ORACLE 提供的 PL/SQL 包的源代码,Common User 是指在每个容器中都存在的用户。 -
SEED 组件
SEED 又叫 PDB$SEED,这个是你创建 PDBS 数据库的模板,你不能在 SEED 中添加或修改一个对象。一个 CDB 中有且只能有一个 SEED。 -
PDBS
CDB 中可以有一个或多个 PDBS,PDBS 向后兼容,可以像以前在数据库中那样操作 PDBS,这里指大多数常规操作。
这些组件中的每一个都可以被称为一个容器。因此,ROOT(根)是一个容器,Seed(种子)是一个容器,每个 PDB 是一个容器。每个容器在 CDB 中都有一个独一无二的的 ID和名称。
注意:
-
一个 CDB 可以包含 253 个 PDB(去掉一个是 seed 还能创建 252 个 PDB)。
-
文件
-
数据文件:ROOT,SEED 以及每一个 PDB 的数据文件是独立的。
-
REDO:一个单实例的 CDB 有一个 redo log;RAC 环境中每个实例有一个 redo log。
-
control file: 一个 CDB 也仅有一个控制文件(可以多路复用)。
-
参数文件:一个 CDB 使用一个 SPFILE 或者一个 PFILE,其中为 ROOT 设置的参数的值可以被 PDB 继承。另外,也可以使用 ALTER SYSTEM 语句来设置 PDB 的参数。对参数文件执行操作时,必须使用 common user 并且使用 AS SYSDBA、ASSYSOPER、AS SYSBACKUP来连接数据库。要创建 CDB,必须要将初始化参数 ENABLE_PLUGGABLE_DATABASE 的值设置为 TRUE。
-
进程:只有一组后台进程,它们被 ROOT 和所有 PDB 共享。
-
数据库设置
-
字符集:所有 PDB 的字符集都使用 CDB 的字符集。
-
时区:可以设置所有 PDB 的时区与 CDB 相同,也可以单独为 PDB 设置时区。
-
db_size:块大小被应用于整个 CDB。
-
db_name:ROOT 的全局数据库名就是 CDB 的全局数据库名;PDB 的全局数据库名是由 PDB name 和 DB_DOMAIN 参数共同定义的。
-
表空间:
-
ROOT 与每一个 PDB 都有自己的 SYSAUX 表空间和 SYSTEM 表空间。可以为 ROOT 和每一个 PDB 设置默认表空间。而默认的临时表空间对于整个 CDB 只有一个,但是可以为每个 PDB 创建临时表空间。
-
UNDO 表空间对于 CDB 是唯一的。在 CDB 中,初始化参数UNDO_MANAGEMENT 必须被设置为 AUTO。当前容器为 PDB 时,无法通过数据字典视图查看 UNDO 表空间,只能通过动态性能视图。
PDB 简介
PDB新特点的优势
-
可以把多个 PDB 集成进一个平台。
-
可以快速提供一个新的 PDB 或一个已有 PDB 的克隆。
-
通过拔插技术,可以快速把存在的数据库重新部署到一个新平台上。
-
多个 PDB 数据库补丁或升级一次完成。
-
通过把单个 PDB 拔插到较高版本的不同 CDB,可以补丁或升级一个PDB。
-
从同一个 CDB 中众多 PDB 中分离出某个 PDB 的内容。
-
分离这些 PDB 应用管理员的责任。
PDB新特点的功能
-
在一个 CDB 中,你可以拥有很多 PDB。
-
PDB 和 12.1 之前版本的普通数据库是向后兼容的。
-
PDB 对应用是透明的——你不需要改变客户端代码或数据库对象。
-
RAC 中每个实例作为一个整体打开 CDB(因此 CDB 和其中的 PDB 数据库版本都是相同的)。
-
会话仅仅看到它自己连接的那个 PDB。
-
你可以从一个 CDB 拔出一个 PDB,然后插入另一个 CDB。
-
你可以在同一个 CDB 或不同 CDB 间克隆 PDB。
-
资源管理器随着 PDB 的功能得以扩展。
-
通过 SQL 语句实现了实体 PDB 的操作(创建,拔出,插入,克隆,清除,设置打开模式)。
-
当连接到所谓的“根”(ROOT)时,CDB 管理员来执行这些操作。
-
所有的 PDB 能被一次备份,但可以分别单独恢复。
PDB的详解
-
每个 PDB 有自己的私有数据字典用于用户创建的数据库对象;另一方面,CDB 作为一个整体也包含 Oracle 提供系统的数据字典,其中,每个数据字典定义自己的命名空间。换句话说,有全局数据字典(CDB级)和本地数据字典(PDB级)。
-
有新的分开的数据字典架构,该架构允许一个 PDB 被快速从一个 CDB 拔出并插入一个不同的 CDB。
-
每个 PDB 只能看到 Oracle 提供系统的只读定义。
-
有全局数据库参数,也有本地数据库参数。PDB 参数仅仅属于特定的 PDB,并且拔出后,PDB 参数也将保持不变。
-
数据库用户可以是全局的(CDB)或本地的(PDB)。SYS 和 SYSTEM 用户一开始就在两级 DB 中存在。如果你在 CDB 中创建了一个新用户,那么你在 PDB 中也能看到这个用户。在 PDB 中创建的用户只能在该 PDB 中使用。
-
临时表空间可以是全局或本地的。
-
Redo 日志和 Undo 表空间都是全局的(CDB级)。
-
Data Guard 在 CDB 级作为一个整体发挥作用;RMAN 调度的备份也作为一个整体在 CDB 级完成;任何时候,你可以只备份一个 PDB。
-
应用连接 PDB 时,不需做代码修改;系统管理员可以连接 CDB;连接串中的服务名确定目标 PDB。
-
PDB 允许更加清晰的声明定义一个应用;一个 PDB 对同一个 CDB 里的其他 PDB一无所知;每个 PDB 是个密闭的容器。这保证了新层面 DB 的独立和安全。
这篇关于Oracle:容器数据库简介的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-22怎么通过控制台去看我的页面渲染的内容在哪个文件中呢-icode9专业技术文章分享
- 2024-12-22el-tabs 组件只被引用了一次,但有时会渲染两次是什么原因?-icode9专业技术文章分享
- 2024-12-22wordpress有哪些好的安全插件?-icode9专业技术文章分享
- 2024-12-22wordpress如何查看系统有哪些cron任务?-icode9专业技术文章分享
- 2024-12-21Svg Sprite Icon教程:轻松入门与应用指南
- 2024-12-20Excel数据导出实战:新手必学的简单教程
- 2024-12-20RBAC的权限实战:新手入门教程
- 2024-12-20Svg Sprite Icon实战:从入门到上手的全面指南
- 2024-12-20LCD1602显示模块详解
- 2024-12-20利用Gemini构建处理各种PDF文档的Document AI管道