我正在学习一点关于 Oracle 数据库的知识。我认为:
在以前的 Oracle DB 版本(版本 <= 11ng)中,每个 DB 都应该安装在单独的服务器中。
- 这个说法是真的吗?我们不能在每个 Oracle 安装实例中创建多个数据库吗?或者我在这里遗漏了一些东西。
为了解决这个问题,oracle 更新了其架构并引入了可插拔数据库。
- 为什么不直接使用与其他 DBMS 系统(如 MySQL)相同的体系结构,您可以在单个 DBMS 安装中拥有N个数据库?
我猜我没有完全理解第一句话,因为我从来没有使用过 Oracle 数据库。
这里发生了两件事:
首先,Oracle 对“数据库”的定义与 MySQL 等其他“数据库”不同。当 Oracle 谈到数据库时,它们指的是在服务器上运行的软件、数据文件和进程的物理实例。每个数据库实例可能包含成百上千个单独的用户/模式,每个用户/模式都有自己的表和其他对象。可以在单个服务器上运行多个数据库实例——甚至同时使用不同版本的软件。实际上,在单个服务器上操作多个实例/数据库(通常但不总是具有相同版本)是很常见的。
大多数其他数据库引擎将“数据库”等同于单个对象模式,并且通常仅支持在单个服务器上安装软件,尽管它们可能容纳数百或数千个用户/模式。
其次,Oracle 的可插拔数据库(在 Oracle 12c 中引入)是数据库实例(正在运行的进程、数据文件等)的虚拟化,允许它们共享一些通用的系统级资源。容器数据库 (CDB) 管理这些系统级资源,并且可以托管许多可插拔数据库 (PDB)。单个服务器可以托管多个不同软件版本的容器数据库,每个容器数据库都有自己的可插拔数据库。每个可插拔数据库可能包含成百上千的用户/模式。可插拔的数据库架构允许整合计算和存储资源:一种更高密度的架构,可以更有效地利用本地和云硬件。