千家信息网

ORACLE中的db_name,service_names,instance_name,oracle_sid,global_dbname

发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,Oracle中有很多与名字相关的参数,有时会让人觉得迷惑,这个参数都有什么作用,它们之间的区别又是什么呢?下面我们先来看一看都有哪些参数与名字相关参数文件中有db_name,instance_name
千家信息网最后更新 2025年01月19日ORACLE中的db_name,service_names,instance_name,oracle_sid,global_dbname

Oracle中有很多与名字相关的参数,有时会让人觉得迷惑,这个参数都有什么作用,它们之间的区别又是什么呢?

下面我们先来看一看都有哪些参数与名字相关

  • 参数文件中有db_name,instance_name,service_names,db_unique_name

  • 环境变量中有oracle_sid

  • 在listener.ora中有sid_name,global_dbname(静态注册的情况下)

  • 在tnsnames.ora中有service_name,sid

它们各有什么含义呢,我们来一一介绍:

db_name:

对一个数据库(Oracle database)的唯一标识,这种表示对于单个数据库时足够的,但是对于分布

式数据库,可能存在各个数据库的名字可能一样,db_domian也就是为了解决这一问题,这样数据库的 标识是由db_name和db_domain两个参数共同决定。类似于互联网上的机器名管理,用db_name.db_domain来表示一个数据库,并将该数据库的名称称为global_name。db_name只能由字母/数字,'_','#','$'组成,而且最多8个字符。

DB_UNIQUE_NAME:

和db_name不一样的作用,用于指定数据库的全局唯一名,比如DG中的物理备库与主库有相同的db_name和db_domain。需要用db_unique_name来进行区别。可以设置30个字符,大小写不敏感,由字母/数字,'_','#','$'组成。DB_UNQUIE_NAME的会影响到Service_names,也会影响到动态监听的时候的service_name。

instance_name:

实例唯一标识符,如RAC环境,存在多实例情况下,用instance_name区别每个实例。用来设置在动态监听中注册的instance_name,对应的如果在tnsnames.ora中使用SID连接时,需要与之做对应。

未修改instance参数前,如下图所示

修改instance_name参数后:

两张图对比可以知道,instance_name在注册监听时起到指定名字的作用。

此外一些包含instance_name或inst_name列的动态性能视图是从环境变量ORACLE_SID(而不是这个参数)来推断的。

service_names:

用于设置在监听中注册的服务名。对应的做tnsnames.ora中如果使用SERVICE_NAME连接时需要与之对应。

修改service_names之前,service_names与监听中的service一致:

修改service_names后,监听中多出了设置的service名:

使用新设置的服务名也可以连接到数据库:

oracle_sid:

实例标识符,以环境变量形式存在,同时用于对应共享内存段.Oracle实例是由SGA和一组后台进程组成的,实例的创建和启动需要一个参数文件,而参数文件的名称就是由ORACLE_SID决定的。对于init文件,缺省的文件名称是init.ora,对于spfile文件,缺省的文件名称是spfile.ora。设置不同的ORACLE_SID值,就可以默认使用不同的参数文件启动不同的数据库实例。

也就是说ORACLE_SID决定本地启动的数据库实例的实例名,只要有对应的init.ora或spfile.ora就可以启动,也可以在startup中指定pfile启动都是可以的,只要参数文件中设置的其他参数可以启动一个数据库就行。

正常情况下ORACLE_SID=test,启动数据库如下图,生成的进程以test标识。

关闭数据库,修改ORACLE_SID=mydb,同样可以启动数据库,不过需要手动指定参数文件,生成的进程以mydb标识。

即使进程都是与mydb相关,但数据库名字和监听的配置仍然为test

对应动态性能视图里的instance_name和inst_name也发生了变化:

tnsnames.ora中的service_name和sid:

tnsnames.ora中的service_name和sid分别要连接的远程数据库在监听中注册的service和instance相对应。

test =  (DESCRIPTION =    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.2)(PORT = 1522))    (CONNECT_DATA =      (SERVER = DEDICATED)      (SID = test)    )  )  test =  (DESCRIPTION =    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.2)(PORT = 1522))    (CONNECT_DATA =      (SERVER = DEDICATED)      (SERVICE_NAME = test)    )  )

listener.ora中的sid_name和global_dbname:

这两个参数用于使用静态注册监听时识别为哪个实例静态注册。

SID_LIST_LISTENER=  (SID_LIST=    (SID_DESC=      (GLOBAL_DBNAME=orcl)      (ORACLE_HOME=/u02/app/oracle/product/11.2.4/db1)      (SID_NAME=orcl)))

以上内容为我自己的整理与总结,有不对的地方还请大神指点。


参考:http://blog.sina.com.cn/s/blog_616b428f0100iwro.html


数据 数据库 参数 实例 文件 监听 标识 名字 动态 名称 环境 进程 不同 作用 变量 情况 是由 静态 两个 也就是 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 中兴软件开发好跳槽吗 奥鹏数据库技术与管理考试平台 如何用数据库设置固定资产账户 以太森林系统软件开发 国泰安数据库怎么查找 定位视觉软件开发公司 数据库图形代表什么 mac 数据库工具 数据库中如何删除相同数据 服务器过期了就清空数据了吗 软件开发与运行中的概念 夏易网络安全 在VB中添加数据库 电脑网络安全证书过期怎么办 无锡博世创新软件开发中心 算法服务器属于硬件还是软件 数据库测试面试题 项目网络安全需要什么条件 靠谱的网络安全运维哪家好 前端项目怎么连接数据库 流媒体平台管理服务器价格 步态分析软件开发 有你家互联网科技有限公司 湖南顺辉网络技术有限公司 多种方式培养网络安全人才 国家信息网络安全中心改革 db2怎么设置主从数据库 网络安全相关职业资格 软件开发安全监理通知 mcice服务器被炸现场
0