oracle 中(+)是什么意思?

原文内容:
oracle中的(+)是一种特殊的用法,(+)表示外连接,并且总是放在非主表的一方。

例如:

左外连接:select A.a,B.a from A LEFT JOIN B ON A.b=B.b;

等价于select A.a,B.a from A,B where A.b = B.b(+);

再举个例子,这次是右外连接:select A.a,B.a from A RIGHT JOIN B ON A.b=B.b;

等价于select A.a,B.a from A,B where A.b (+) = B.b;

个人补充:

数据表的连接有:
1、内连接(自然连接): 只有两个表相匹配的行才能在结果集中出现
2、外连接: 包括
(1)左外连接(左边的表不加限制)
(2)右外连接(右边的表不加限制)
(3)全外连接(左右两表都不加限制)
3、自连接(连接发生在一张基表内)

有 (+) 的一方代表有可以为空,即副表

<think>好的,用户之前问过在DataGrip中创建用户遇到ORA-65096错误的问题,现在他们接着问Oracle的PDB是什么意思。我需要先回顾之前的对话,确保回答连贯。 用户现在想了解PDB的概念。他们可能在使用Oracle数据库时遇到了多租户架构相关的问题,比如之前的创建用户错误。因此,他们可能希望更深入理解PDB的作用,以便更好地管理数据库。 首先,我需要确定用户对Oracle的基础知识了解多少。他们可能已经知道CDB/PDB架构,但需要更清晰的解释。或者他们可能完全不了解,需要从头开始解释。根据之前的对话,用户遇到了命名规则的问题,所以他们对多租户架构有一定接触,但可能还不熟悉。 接下来,我需要用简单易懂的语言解释PDB。应该包括PDB的全称、它在多租户架构中的角色,以及它与CDB的关系。同时,要说明PDB带来的好处,比如资源隔离、便捷管理等,这样用户能理解为什么Oracle会引入这个概念。 可能用户还关心实际应用场景,比如如何创建PDB、如何切换连接等。但根据当前问题,他们只需要基本定义和概念,所以需要保持回答简洁,但可以适当扩展,帮助用户建立全面的理解。 还要注意与之前的错误关联,指出之前的问题是因为在CDB中创建用户不符合命名规则,而切换到PDB可以避免这个问题。这样用户能将前后知识联系起来,加深理解。 需要确保术语准确,比如容器数据库(CDB)、可插拔数据库(PDB)、多租户架构等。同时,避免使用过多技术术语,用例子或类比帮助理解,比如把CDB比作服务器,PDB是虚拟机。 最后,检查是否有常见的误解需要澄清,例如PDB和传统数据库的区别,或者PDB的独立性如何。确保回答覆盖这些点,让用户对PDB有全面的认识。</think>在 Oracle 数据库中,**PDB** 是 **可插拔数据库(Pluggable Database)** 的缩写。它是 Oracle 12c 及更高版本引入的 **多租户架构(Multitenant Architecture)** 的核心组成部分,用于更高效地管理和运行多个逻辑独立的数据库。 --- ### **核心概念** 1. **多租户架构** - **CDB(Container Database,容器数据库)**:一个物理数据库实例,包含多个 PDB 和一个根容器(`CDB$ROOT`)。 - **PDB(Pluggable Database,可插拔数据库)**:CDB 内的一个逻辑独立数据库,可以像“插件”一样插入或拔出 CDB。每个 PDB 包含自己的数据文件和应用架构(如表、用户、权限等)。 ![CDB与PDB关系示意图](https://www.oracle.com/a/ocom/img/cdb-pdb-arch.png)*(CDB 是容器,PDB 是其中的可插拔单元)* --- ### **PDB 的核心特性** 1. **资源共享** - 多个 PDB 共享 CDB 的硬件资源(如 CPU、内存)和后台进程(如日志写入、内存管理),但每个 PDB 的数据和元数据是逻辑隔离的。 2. **独立性与灵活性** - **数据隔离**:每个 PDB 的用户、表空间、Schema 完全独立,互不影响。 - **可插拔**:PDB 可以随时通过 `CREATE PLUGGABLE DATABASE` 创建,或通过 `UNPLUG/PLUG` 命令迁移到其他 CDB 中。 3. **简化管理** - **统一维护**:备份、升级、打补丁等操作可在 CDB 级别统一执行,无需逐个处理 PDB。 - **快速克隆**:可以通过现有 PDB 快速克隆新 PDB(例如开发、测试环境)。 --- ### **PDB 的典型使用场景** 1. **多租户应用** - 为不同客户或部门分配独立的 PDB,实现数据隔离和资源分配。 - 例如:SaaS 服务商可为每个客户分配一个 PDB。 2. **开发与测试** - 克隆生产环境的 PDB 作为测试库,避免影响生产数据。 3. **资源整合** - 将多个小型数据库合并到一个 CDB 中,降低运维成本。 --- ### **PDB 的操作示例** 1. **查看当前 CDB 中的 PDB** ```sql SELECT name, open_mode FROM v$pdbs; ``` 2. **创建 PDB** ```sql CREATE PLUGGABLE DATABASE pdb1 ADMIN USER pdbadmin IDENTIFIED BY password FILE_NAME_CONVERT=('/opt/oracle/oradata/CDB/pdbseed/', '/opt/oracle/oradata/CDB/pdb1/'); ``` 3. **打开/关闭 PDB** ```sql ALTER PLUGGABLE DATABASE pdb1 OPEN; ALTER PLUGGABLE DATABASE pdb1 CLOSE IMMEDIATE; ``` 4. **连接到 PDB** - 在 SQL*Plus 或 DataGrip 中指定 PDB 的服务名: ```sql CONNECT username/password@host:port/service_name(例如 ORCLPDB1) ``` --- ### **PDB 与“传统数据库”的区别** | **特性** | **传统数据库** | **PDB** | |----------------|-----------------------|-----------------------------| | 资源占用 | 独立实例,资源独占 | 共享 CDB 资源 | | 管理复杂度 | 每个库需单独维护 | 集中维护 CDB,简化操作 | | 数据迁移 | 导出/导入耗时 | 直接插拔,秒级迁移 | | 适用场景 | 单一大型业务 | 多租户、多环境、资源整合 | --- ### **常见问题** 1. **为什么需要 PDB?** - 解决传统数据库资源浪费、运维复杂的问题,提升硬件利用率和管理效率。 2. **PDB 之间能直接访问数据吗?** - **默认不能**,但可通过数据库链接(DB Link)跨 PDB 访问。 3. **PDB 的数量限制?** - Oracle 标准版最多支持 3 个 PDB,企业版无限制(受硬件资源约束)。 --- ### **总结** - **PDB 是 Oracle 多租户架构的核心**,实现了“一个物理数据库承载多个逻辑数据库”。 - 优势在于 **资源整合、简化运维、快速部署**,尤其适合云计算和大型企业环境。 - 若你在 DataGrip 中操作 Oracle,需注意连接到正确的 PDB(而非默认的 CDB),以避免类似 `ORA-65096` 的命名规则冲突。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值