Oracle 12c新手求助:为何需在tnsnames.ora中添加orclpdb服务?
为什么Oracle 12c安装时必须在tnsnames.ora中添加ORCLPDB服务?
嘿,作为刚上手Oracle 12c的新手,这个问题问到点子上了!12c引入的多租户架构是和之前版本最大的区别之一,咱先把这个逻辑理清楚,你就明白为啥要配置ORCLPDB服务了:
1. 多租户架构的核心:CDB vs PDB
Oracle 12c默认会创建一个CDB(容器数据库,默认名为ORCL)和一个PDB(可插拔数据库,默认名为ORCLPDB):
- CDB是“容器”,相当于一个大框架,只负责管理所有PDB,本身并不承载业务数据(除非你硬要这么干,但Oracle绝对不推荐)。
- PDB才是你日常开发、运行业务的地方——它有自己独立的用户、表空间、业务表,就像一个传统的Oracle数据库实例,但可以被灵活插拔到CDB中。
2. 配置ORCLPDB服务的必要性
- 直接连接到业务数据库:如果你只配置了CDB的TNS服务(比如ORCL),客户端连接后进入的是CDB根容器,这里只能做PDB的管理操作(比如创建、删除PDB),根本没法正常做业务开发。配置ORCLPDB服务后,你才能直接连接到这个默认的业务PDB,开展日常工作。
- 简化连接流程:如果不配置这个服务,你要么得每次用完整的连接字符串指定
SERVICE_NAME=orclpdb,要么先连CDB再手动切换到PDB(比如ALTER SESSION SET CONTAINER=ORCLPDB;),步骤繁琐还容易出错。TNS别名就是给这个连接串起了个好记的名字,用起来更方便。 - 适配应用程序需求:绝大多数应用程序都是针对具体的业务数据库设计的,它们需要直接连接到PDB而不是CDB根容器。配置ORCLPDB服务后,你的应用可以无缝对接这个PDB,符合Oracle的最佳实践,也能保证业务数据的隔离性。
配置示例(已格式化)
ORCLPDB = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orclpdb) ) )
内容的提问来源于stack exchange,提问作者Bipul Roy
相关产品推荐
相关产品推荐

