什么是非 CDB @ Oracle?

6 oracle

我正在阅读有关 Oracles PDB 和 CDB 及其测试性能的信息

http://www.oracle.com/technetwork/database/multitenant/learn-more/oraclemultitenant5-8-final-2185108.pdf

他们将 PDB 与非 CDB 进行比较。但我不明白什么是非 CDB。这是文档中的定义

“同一操作系统上的多个堆叠单实例数据库(非 CDB)”

非 CDB 是具有多个数据库的单个数据库进程还是非 CDB 是多个数据库进程?

Ale*_*ole 6

非 CDB 是指任何不是 CDB 的东西;也就是说,任何 12c 之前的数据库,或创建的 12c 数据库没有使用enable pluggable database 子句。如果您创建一个非 CDB,它就不是 Multitentant,而是像 pre-12c 数据库一样的单实例独立。

非 CDB 是具有多个数据库的单个数据库进程还是非 CDB 是多个数据库进程?

两者都不是,它是具有单个数据库的单个实例(一组进程)。

您引用的定义是指非 Mulitenant 架构的一个方面:

堆叠单实例数据库

因此,您有一个或多个 Oracle 主目录(软件安装),每个目录都有一个或多个从该主目录运行的独立数据库。这是在 12c 的容器/可插拔模型之前在同一台服务器上运行多个数据库的唯一方法。

这样做的问题是数据库实例是完全独立的,彼此不可见,因此它们都在操作系统级别争夺资源(CPU、内存、网络),您必须有足够的资源供它们全部使用以峰值运行以避免性能下降,即使这种情况不太可能经常发生。或者没有足够的资源,一个或多个最终在某个时候饿死。您不希望这种情况发生在生产环境中,因此在生产环境中执行此操作通常被认为是一个坏主意。

这也在12c 文档中有所涉及:

对管理问题的典型响应是在每台服务器上放置多个数据库。问题在于多个数据库实例不共享后台进程、系统和进程内存或 Oracle 元数据。

12c 的多租户模型为您提供了一个单一的容器数据库,可以在操作系统级别管理资源并根据需要与可插拔数据库共享它们,这可能会显着减少 O/S 服务器所需的总资源,并隐藏/简化对已插拔数据库的管理。在数据库中。

这有点类似于在物理服务器上运行虚拟机——物理服务器需要的实际 CPU 和内存少于分配给所有 VM 的总和,VM 管理层根据实际需要控制资源的平衡和争用以及所有虚拟机的负载。虚拟机本身并没有真正意识到这种情况的发生,它们只是使用它们需要的东西;类似的可插拔数据库并没有真正意识到容器正在管理它们的资源而不是操作系统。