news 2026/7/31 2:40:26

Oracle中一些混淆名称的现实映射

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Oracle中一些混淆名称的现实映射

点击标题下「蓝色微信名」可快速关注

Oracle数据库中可能有很多容易混淆的名称,会让初学者觉得可能困惑,例如DB_NAME、DBID、DB_UNIQUE_NAME、INSTANCE_NAME、SID、SERVICE_NAME、GLOBAL_DATABASE_NAME。

但这正是Oracle数据库设计精妙的一个佐证,不同的名称,有着不同作用,没有一个名称是乱起的,这些名称从不同层面描述了数据库、实例及连接方式。

我们可以用一个"公司"的比喻来理解它们,想象一下,你经营一家公司(数据库),公司有一个注册名字(DB_NAME),一个营业执照编号(DBID),还有几个办公场所(实例),每个办公场所都有自己的门牌号(SID/INSTANCE_NAME),同时公司对外提供客服电话(SERVICE_NAME),而在集团(分布式数据库)中,公司还有个全称(GLOBAL_DATABASE_NAME)。如果开了分公司(Data Guard),还会有一个区分总公司和分公司的唯一名称(DB_UNIQUE_NAME)。

从以上的例子,我们还可以得到一个道理,就是很多技术和现实中的对象是可以映射的,而且通过这种映射可以加深我们的理解,有助于我们更好地设计系统。

下面我们逐一解释这些数据库名称:


1. DB_NAME(数据库名)

  • 是什么:数据库的内部名字,就像公司的注册名。创建数据库时指定,一般不超过8个字符,保存在控制文件中。

  • 作用:Oracle自己用这个名字来识别数据库。例如在参数文件(比如init.ora)里会写db_name='orcl',表示这个数据库叫orcl

  • 注意:这个名字不用于客户端连接,它是"内部用"的。

2. DBID(数据库标识符)

  • 是什么:数据库的唯一身份证号。创建数据库时自动生成的一串数字,写在控制文件和数据文件头部。

  • 作用:用于绝对区分不同的数据库,尤其在备份恢复(RMAN)时,Oracle靠DBID来确认你备份的是哪个数据库,防止恢复错乱。即使两个数据库名字一样,DBID也一定不同。

3. DB_UNIQUE_NAME(数据库唯一名)

  • 是什么:在Oracle Data Guard环境中使用的名字,用于区分主数据库和备数据库。如果不配置Data Guard,它默认和DB_NAME一样。

  • 作用:当你有一个主库和一个备库,它们可能DB_NAME相同(因为本是同一个数据库的副本),但为了区分,给它们起不同的"唯一名",例如主库叫orcl_primary,备库叫orcl_standby

4. INSTANCE_NAME 与 SID(实例名与系统标识符)

这两个可以一起理解,因为它们经常指向同一个东西——实例。

  • 实例(Instance):可以理解为Oracle的"运行现场",由内存(SGA)和后台进程组成。有了实例才能访问数据库。一个数据库可以被一个或多个实例挂载(比如RAC集群)。

  • SID(系统标识符):操作系统级别识别实例的代号。你在服务器上设置环境变量ORACLE_SID=orcl,操作系统就知道你要操作哪个实例。

  • INSTANCE_NAME:Oracle实例自己的名字,通常就等于SID,由初始化参数instance_name定义。例如你在SQL*Plus里执行show parameter instance_name就能看到。

  • 简单关系:SID是操作系统层面叫的,INSTANCE_NAME是数据库内部叫的,它们一般一样。在单实例环境中,SID也经常和DB_NAME相同,但这不是必须的。

5. SERVICE_NAME(服务名)

  • 是什么:客户端(例如你的应用程序)连接数据库时使用的逻辑名称。它是Oracle Net(网络层)的概念。

  • 作用:以前老版本用SID连接,但SID只能指向一个具体的实例,而服务名可以指向一个或多个实例(比如RAC中所有实例对外提供一个服务名),还可以动态注册到监听器。你会在连接字符串中看到类似SERVICE_NAME=orcl.example.com

  • 设置:由初始化参数service_names定义,可以设置多个服务名。

6. GLOBAL_DATABASE_NAME(全局数据库名)

  • 是什么:数据库在分布式环境中的全名,格式为DB_NAME.DB_DOMAIN,例如orcl.example.com

  • 作用:用于在分布式数据库中唯一标识一个数据库,特别是在使用数据库链接(dblink)时。创建数据库时可以指定GLOBAL_DATABASE_NAME,它会存储在数据字典中,并且可以通过global_names参数强制要求dblink名称必须与此一致。


因此,

  • DB_NAME是数据库的根本名字,很多其他名字默认由此衍生。

  • DBID是数据库的不可变身份证号,备份恢复时依赖。

  • DB_UNIQUE_NAME是Data Guard中为了区分不同副本而起的别名。

  • SID/INSTANCE_NAME是实例的名字,对应"运行中的程序"。

  • SERVICE_NAME是客户端连接时使用的服务名,可以灵活对应一个或多个实例。

  • GLOBAL_DATABASE_NAME是数据库在分布式世界里的完整域名。

举个例子:

  • 你创建了一个数据库,DB_NAME='orcl',生成DBID=1234567890

  • 服务器上设置ORACLE_SID=orcl,所以INSTANCE_NAME也是orcl

  • 你配置了监听,对外提供SERVICE_NAME=orcl.example.com,客户端通过这个服务名连接。

  • 如果你搭建了Data Guard备库,备库的DB_UNIQUE_NAME='orcl_stdby',但它的DB_NAME仍然可以是orcl,因为它是同一个数据库的副本。

  • 在分布式环境中,这个数据库的GLOBAL_DATABASE_NAME='orcl.example.com',其他数据库可以通过dblink用这个名字访问它。

如果您认为这篇文章有些帮助,还请不吝点下文章末尾的"点赞"和"在看",或者直接转发朋友圈,

可以到各大平台找我,

  • 微信公众号:@bisal的个人杂货铺

  • 腾讯云开发者社区:@bisal的个人杂货铺

  • 头条号:@bisal的个人杂货铺

  • CSDN:@bisal

  • ITPub:@bisal

  • 墨天轮:@bisal

  • 51CTO:@bisal

  • 小红书:@bisal

  • 抖音:@bisal

近期更新的文章:

《老朋友,好久不见了,愿你在天堂安好》

《达梦set schema版本场景》

《英超第二十九轮》

《OpenClaw:你养的是虾还是被时代落下的恐惧?》

《成为一名优秀DBA需要具备什么?》

近期Vlog:

《千岛湖》

《Skyline Luge》

《新疆之行(红山体育馆 - 国际大巴扎 - 红山公园 - 天山天池)》

《新疆之行(天马浴河 - 哈因塞 - 那拉提 - 依提根塞)》

《新疆之行(六星街 - 伊昭公路 - 夏塔)》

热文鉴赏:

《揭开"仿宋"和"仿宋_GB2312"的神秘面纱》

《Linux的"aarch"是多了个"a"?》

《中国队“自己的”世界杯》

《你不知道的C罗-Siu庆祝动作》

《大阪环球影城避坑指南和功略》

《推荐一篇Oracle RAC Cache Fusion的经典论文》

《"红警"游戏开源代码带给我们的震撼》

文章分类和索引:

《公众号2000篇文章分类和索引》

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/14 14:53:31

开源项目opensource.builders使用教程

开源项目opensource.builders使用教程 【免费下载链接】opensource.builders Find open-source alternatives 项目地址: https://gitcode.com/gh_mirrors/op/opensource.builders 1、项目介绍 opensource.builders 是一个用于查找和请求开源软件替代品的网站。它帮助用…

作者头像 李华
网站建设 2026/7/14 14:53:33

FLUX.2-klein-base-9b-nvfp4一键部署教程:Ubuntu 20.04环境配置详解

FLUX.2-klein-base-9b-nvfp4一键部署教程:Ubuntu 20.04环境配置详解 想试试那个很火的图像生成模型FLUX.2-klein-base-9b-nvfp4,但被复杂的部署步骤劝退了?别担心,今天咱们就来个保姆级教程,手把手教你在Ubuntu 20.04…

作者头像 李华
网站建设 2026/7/14 14:53:33

Verilog运算符优先级全解析:从新手到高手的避坑指南

Verilog运算符优先级全解析:从新手到高手的避坑指南 在数字电路设计中,Verilog作为硬件描述语言的标杆,其运算符的优先级规则直接影响着电路的综合结果。许多初学者在编写条件判断或复杂表达式时,常常因为忽略优先级规则而陷入难以…

作者头像 李华
网站建设 2026/7/14 14:53:45

【LaTeX】从零到一构建清晰文档结构:章节(Chapter)与层级管理全解析

1. LaTeX文档结构设计基础 第一次用LaTeX写毕业论文时,我被导师退回的文档上写着"结构混乱"三个大字。那时才明白,学术写作不仅是内容的堆砌,更需要像建筑师规划大楼那样设计文档骨架。LaTeX的章节系统就是我们的结构工具箱&#x…

作者头像 李华