SQL Developer 连接类型 (Connection Type) :SID 和 Service Name的区别

SQL Developer连接Oracle数据库时,Basic连接类型最常用,需区分SID和服务名。


SID是数据库实例的唯一标识(1对1),适合单机数据库;


服务名是逻辑入口(1对多),适合RAC集群和云数据库。


建议优先尝试服务名,若失败再改用SID。


其他连接类型如TNS用于复杂生产环境,CloudWallet用于云数据库,Advanced用于定制化场景。


掌握Basic连接及SID/服务名区别可解决90%的连接问题。


连接方式有哪些?SID 和 Service Name的区别是什么


在 SQL Developer 中新建连接时,连接类型 (Connection Type) 的下拉菜单决定了你用哪种方式"找到"数据库。


对于最常用的几种场景,我的建议是:

  • 访问开发/测试环境的单机数据库 :选 Basic。

  • 连接复杂的RAC集群或云数据库 :选 TNS 或 Cloud Wallet。

  • 有特定的JDBC连接串要求 :选 Advanced。


下面这张表帮你理清它们的区别:

连接类型 一句话解释 (给前端的你) 使用场景 需要填什么
Basic 直连 就像用IP地址访问一个具体的"工位" 连接本地、开发或测试环境的单机数据库,最常用也最直观 主机名 、端口 (1521)、服务名 或SID
TNS 通过通讯录连接 从本地 tnsnames.ora 文件里找"花名" 连接复杂的生产环境,尤其是RAC集群或配置了负载均衡的数据库 选择本地 TNS 网络别名
Cloud Wallet 用钥匙和地址证明连接 通过官方授权的钱包文件进行高安全连接 连接 Oracle Autonomous Database (云端自治数据库) 下载好的 钱包文件 (ZIP) 和服务名
Advanced 使用JDBC精确串连接 直接用精确格式的地址连接 连接串格式特殊或Basic/TNS方式无法满足的定制化场景 完整的 JDBC URL
LDAP 通过公司黄页连接 去中心化的目录服务里找数据库地址 大型企业统一管理数据库地址的场景 目录服务器地址等

🔍 核心问题:SID vs Service Name 到底该怎么填?

当你使用最常用的 Basic 连接类型时,会发现需要选择用 SID 还是 服务名 (Service Name)。


这是Oracle新手最容易困惑的地方。

用一个比喻就能理解:

  • SID :相当于数据库实例的"身份证号"。它是唯一的,一个萝卜一个坑,指向某一个具体的数据库实例。

  • 服务名 (Service Name) :相当于数据库的"前台总机"。你打给这个总机,后台可能会安排一个或多个实例来接听你的请求。

特性 SID 服务名 (Service Name)
核心关系 1 对 1 : 一个SID只对应一个特定的数据库实例 1 对 N : 一个服务名可以对应多个数据库实例(常用于RAC集群)
主要用途 连接单机、非集群的传统Oracle数据库 连接RAC集群、备用数据库或需要负载均衡的环境
连接串格式 host:port:SID (冒号后直接跟SID) host:port/service_name (斜杠后跟服务名)
谁在用它 数据库管理员(DBA)内部管理 应用程序、终端用户的日常连接
获取方法 SELECT INSTANCE_NAME FROM V$INSTANCE; SELECT NAME FROM V$ACTIVE_SERVICES;

💡 实际填表时怎么选?

  1. 如果你不确定,首选填"服务名" :现在大部分新装的Oracle数据库(尤其是12c以后的版本)默认都推荐使用服务名。许多云数据库和现代应用也主要基于服务名来连接。

  2. 如果服务名连不上,再试试SID:一些老系统或特殊配置的单机数据库,DBA可能只给你配置了SID。

小技巧 :当你连接一个你完全不了解的新数据库时,可以两个都试一下。哪个能通就用哪个。或者直接问给你分配数据库账号的DBA:"请问是用SID连接还是服务名?具体的值是多少?"

💎 给前端转大数据的你

在SQL Developer里,填写正确的连接信息就是你进入数据库世界的"钥匙"。它的底层逻辑其实和你用VSCode的Remote-SSH插件连接一台远程服务器(需要IP、端口、密码)是完全一样的,只不过现在把"连接服务器"换成了"连接数据库"。

搞懂 Basic 连接(最常用)和 SID vs 服务名 的区别,足以应对日常工作90%的场景。当需要连接复杂的集群时,再深入了解 TNS 方式即可。

相关推荐
瑞克-桑切斯17 分钟前
2、 MySQL 主从复制与读写分离
数据库·mysql
收纳过往36 分钟前
数据库加索引的时机:慢查询日志说话
android·开发语言·数据库·python·低代码·rxjava
咖啡八杯43 分钟前
Redis 工具封装:RedisCache 对 Operations 体系的二次封装
java·数据库·redis·缓存·框架·springboot·若依
PaperData1 小时前
2000-2025年地级市科技支行设立数据
数据库·科技
实泽有之,无泽虚之1 小时前
ORA-12514:TNS:监听程序当前无法识别连接描述符中请求的服务问题原因及解决办法
数据库·oracle
牧瀬クリスだ1 小时前
Redis Hash实战:高效存储对象与购物车
java·数据库·redis·算法·哈希算法
A小码哥1 小时前
【外】水星3号实测 1068 token 每秒靠谱吗
数据库
qq_452396231 小时前
第六篇:《SQL 优化的艺术:从慢查询到毫秒级响应》
数据库·sql
ShineWinsu2 小时前
对于Qt:QWidget通用属性的解析—上
数据库·qt·microsoft·面试·gui·属性·qwidget
程序员塔塔喵2 小时前
【MySQL篇|第十篇】深分页问题
数据库·oracle·深分页问题