免费个人网站自助建设,企业主页制作方法,写作网站投稿赚钱,环保公司网站模板今天还在努力coding#xff0c;小伙伴突然说有个业务前置机需要上传数据#xff0c;给登录用户和密码#xff0c;也无法连接到实例#xff0c;还坚持一定要求有V$INSTANCE查询权限#xff0c;结果每次拿到的SID一会是PROD一会是PROD2#xff08;RAC环境的2个节点#xf…今天还在努力coding小伙伴突然说有个业务前置机需要上传数据给登录用户和密码也无法连接到实例还坚持一定要求有V$INSTANCE查询权限结果每次拿到的SID一会是PROD一会是PROD2RAC环境的2个节点同时还是拿不到实例名但是现场其他的业务和服务也都正常。于是就有了SID,intance_name,service_name,在单机和RAC环境还有ADG业务侧如何稳定链接老业务如何兼容连接。还在用SID么早点改造吧 一、概念演进从单实例到RAC-分布式
1. SID (System Identifier) 定义实例级物理标识如ORCL唯一标识一个运行中的数据库实例内存进程。作用 - 关联OS进程ora_pmon_ORCL- 决定参数文件命名spfileORCL.ora- 通过ORACLE_SID环境变量管理实例。 局限 长度≤8字符修改需重建控制文件- 仅支持静态注册需手动配置listener.ora无法区分RAC多节点或CDB多租户。 2. Instance Name 本质与SID等价是数据库参数文件init.ora中的instance_name参数。关键点 在单实例中默认等于SID- 在RAC中可自定义如ORCL1、ORCL2但需与节点SID一致 3. Service Name 起源Oracle 8i1999引入逻辑服务抽象。设计目标 解耦物理实例与逻辑服务- 支持一个数据库对应多个服务名如reporting_svc、oltp_svc突破SID长度限制支持255字符。 核心机制 动态注册PMON进程自动向监听器注册支持负载均衡RAC和故障转移TAF。 演进关系 SID物理 → Instance Name参数化SID → Service Name逻辑抽象 二、CDB多租户架构的关键变革
1. CDB/PDB模型对连接方式改变 标识类型 CDB根容器 PDB容器 SID 可连接CDB$ROOT 无法连接监听器无法路由 Service Name 可连接 唯一合法访问方式 技术上PDB作为逻辑数据库单元必须通过Service Name路由。SID仅标识CDB实例无法区分PDB操作验证尝试用SID连接PDB将报错 ORA-12505: TNS:listener does not know SID 2. CDB中的Service Name实践
-- 为PDB创建专用服务非默认服务
EXEC DBMS_SERVICE.CREATE_SERVICE(MERPDB_HA, MERPDB_HA);
EXEC DBMS_SERVICE.START_SERVICE(MERPDB_HA); 优势 支持TAF透明故障转移、FAN快速应用通知RAC环境多节点服务可为不同服务分配资源计划Resource Manager。 三、RAC ADG架构下的连接路由
1. RAC环境的连接方式 连接目标 推荐方式 原因 单实例直连 SID旧或Service Name 传统兼容但Service Name更优 RAC集群 Service Name 负载均衡故障转移 ADG备库 Service Name 与主库一致支持快速切换 ADG的连接本质ADG作为物理备库完全复制主库的Service Name配置。客户端连接ADG时使用与主库相同的Service Name切换示例主库故障时只需将客户端连接指向ADG的VIPVirtual IP无需修改Service Name 2. ADG的三种标识符使用 SID 用于备库本地管理如ALTER DATABASE RECOVER通过ORACLE_SID环境变量启动实例。 Instance Name 与备库SID一致存储在参数文件中。 Service Name 客户端连接的唯一标识与主库服务名相同如prod_ha监听器通过Service Name路由到ADG实例。 四、现代架构推荐方案
1. 标识符使用规范 场景 推荐标识符 示例 CDB中的PDB连接 Service Name jdbc:oracle:thin://host:1521/salespdb_ha RAC/ADG高可用连接 Service Name 客户端配置 scan_ip:1521/prod_ha 实例级管理命令 SID export ORACLE_SIDORCL1; sqlplus / as sysdba 参数文件配置 Instance Name instance_name ORCL1
双轨过渡监听器中并行支持SID和Service Name逐步切换应用连接。 五、统一配置建议 场景 SID/Instance Name Service Name 单实例 实例管理startup命令 客户端连接、监听器注册 RAC集群 节点管理srvctl命令 负载均衡、TAF、应用路由 ADG容灾 备库本地操作 主备一致、VIP透明切换 CDB多租户 CDB根容器管理 PDB唯一访问方式
核心原则
Service Name所有客户端连接、高可用场景的唯一选择。
SID仅限实例级运维启停、备份禁止暴露给应用。
ADG/RAC主备服务名严格一致通过VIP/IP切换实现故障转移
六、演进和未来的选择
通过逻辑服务层Service Name屏蔽底层架构复杂性是Oracle高可用设计的精髓也是分布式与云原生时代的必然选择
现代架构 弃用SID连接在RAC/CDB/ADG中SID无法支持路由、负载均衡和PDB访问Service Name核心价值 解耦物理架构客户端无需感知实例位置或角色变更。无缝故障转移TAFVIP实现会话级透明切换RAC/ADG多租户支持CDB中PDB访问的唯一合法途径 迁移步骤 为每个数据库/PDB创建专用服务名非默认客户端TNS和JDBC连接串替换为Service Name格式//host:port/service_name监听器启用动态注册alter system set local_listener Default Service FREE
Listener Parameter File /opt/oracle/product/23ai/dbhomeFree/network/admin/listener.ora
Listener Log File /opt/oracle/diag/tnslsnr/OL97/listener/alert/log.xml
Listening Endpoints Summary...(DESCRIPTION(ADDRESS(PROTOCOLtcp)(HOSTOL97)(PORT1521)))(DESCRIPTION(ADDRESS(PROTOCOLipc)(KEYEXTPROC1521)))
Services Summary...
Service 375897c9631a1373e0636100020a8b39 has 1 instance(s).Instance FREE, status READY, has 1 handler(s) for this service...
Service FREE has 1 instance(s).Instance FREE, status READY, has 1 handler(s) for this service...
Service FREEXDB has 1 instance(s).Instance FREE, status READY, has 1 handler(s) for this service...
Service freepdb1 has 1 instance(s).Instance FREE, status READY, has 1 handler(s) for this service...
The command completed successfully