设为首页 收藏本站
查看: 1369|回复: 0

[经验分享] ORACLE中的db_name,service_names,instance_name,oracle_sid,global_dbname

[复制链接]

尚未签到

发表于 2018-9-6 13:32:51 | 显示全部楼层 |阅读模式
  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个字符。
DSC0000.png

  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参数前,如下图所示
DSC0001.png 修改instance_name参数后:

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

  此外一些包含instance_name或inst_name列的动态性能视图是从环境变量ORACLE_SID(而不是这个参数)来推断的。
  service_names:
  用于设置在监听中注册的服务名。对应的做tnsnames.ora中如果使用SERVICE_NAME连接时需要与之对应。
  修改service_names之前,service_names与监听中的service一致:
DSC0003.png 修改service_names后,监听中多出了设置的service名:

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

DSC0005.png

  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标识。
DSC0006.png 关闭数据库,修改ORACLE_SID=mydb,同样可以启动数据库,不过需要手动指定参数文件,生成的进程以mydb标识。

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

DSC0008.png

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

  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



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-564127-1-1.html 上篇帖子: dataguard oracle 归档管理脚本 下篇帖子: jdbc oracle clob blob long类型数据
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表