问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

ORACLE_SID、INSTANCE_NAME和服务名的区别

发布网友 发布时间:2022-05-01 23:08

我来回答

5个回答

懂视网 时间:2022-05-02 03:29

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<ORACLE_SID>.ora,对于spfile文件,缺省的文件名称是spfile<ORACLE_SID>.ora。设置不同的ORACLE_SID值,就可以默认使用不同的参数文件启动不同的数据库实例。

    也就是说ORACLE_SID决定本地启动的数据库实例的实例名,只要有对应的init<ORACLE_SID>.ora或spfile<ORACLE_SID>.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


    本文出自 “DBA Fighting!” 博客,请务必保留此出处http://hbxztc.blog.51cto.com/1587495/1923899

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

    标签:oracle oracle_sid dbname instance_name

    热心网友 时间:2022-05-02 00:37

    数据库名(DB_NAME)、实例名(Instance_name)、以及操作系统环境变量(ORACLE_SID)

    区别:在ORACLE7、8数据库中只有数据库名(db_name)和数据库实例名(instance_name)。在ORACLE8i、9i中出现了新的参数,即数据库域名(db_domain)、服务名(service_name)、以及操作系统环境变量(ORACLE_SID)。这些都存在于同一个数据库中的标识,用于区分不同数据库的参数。
    一、什么是数据库名(db_name)?

      数据库名是用于区分数据的内部标识,是以二进制方式存储于数据库控制文件中的参数,在数据安装或创建之后将不得修改。数据库安装完成后,该参数被写入数据库参数文件pfile中,格式如下:

      .........

      db_name="orcl" #(不允许修改)

      db_domain=dbcenter.toys.com

      instance_name=orcl

      service_names=orcl.dbcenter.toys.com

      control_file=(...............

      .........

      在每一个运行的ORACLE8i数据库中都有一个数据库名(db_name),如果一个服务器程序中创建了两个数据库,则有两个数据库名。其控制参数据分属在不同的pfile中控制着相关的数据库。

      二、什么是数据库实例名(instance_name)

      数据库实例名则用于和操作系统之间的联系,用于对外部连接时使用。在操作系统中要取得与数据库之间的交互,必须使用数据库实例名。例如,要和某一个数据库server连接,就必须知道其数据库实例名,只知道数据库名是没有用的,与数据库名不同,在数据安装或创建数据库之后,实例名可以被修改。数据库安装完成后,该实例名被写入数据库参数文件pfile中,格式如下:

      db_name="orcl" #(不允许修改)

      db_domain=dbcenter.toys.com

      instance_name=orcl #(可以修改,可以与db_name相同也可不同)

      service_names=orcl.dbcenter.toys.com

      control_file=(...............

      .........

      数据库名与实例名之间的关系。

      数据库名与实例名之间的关系一般是一一对应关系,有一个数据库名就有一个实例名,如果在一个服务器中创建两个数据库,则有两个数据库名,两个数据库实例名,用两个标识确定一个数据库,用户和实例相连接。

      但在8i、9i的并行服务器结构中,数据库与实例之间不存在一一对应关系,而是一对多关系,(一个数据库对应多个实例,同一时间内用户只一个实例相联系,当某一实例出现故障,其它实例自动服务,以保证数据库安全运行。)

      三、操作系统环境变量(ORACLE_SID)

      在实际中,对于数据库实例名的描述有时使用实例名(instance_name)参数,有时使用ORACLE_SID参数。这两个都是数据库实例名,它们有什么区别呢?(经常弄混)

      (ORACLE_SID)

      OS<----------------> ORACLE 数据库 <--------(Instance_name(实例名))

      上图表示实例名instance_name、ORACLE_SID与数据库及操作系统之间的关系,虽然这里列出的两个参数都是数据库实例名,但instance_name参数是ORACLE数据库的参数,此参数可以在参数文件中查询到,而ORACLE_SID参数则是操作系统环境变量。

      操作系统环境变量ORACLE_SID用于和操作系统交互。也就是说,在操作系统中要想得到实例名,就必须使用ORACLE_SID。此参数与ORACLE_BASE、ORACLE_HOME等用法相同。在数据库安装之后,ORACLE_SID被用于定义数据库参数文件的名称。如:$ORACLE_BASE/admin/DB_NAME/pfile/init$ORACLE_SID.ora。

      定义方法:

      export ORACLE_SID=orcl

      如果在同一服务器中创建了多个数据库,则必然同时存在多个数据库实例,这时可以重复上述定义过程,以选择不同实例。

      还可以用

      [oracle@Datacent]$ . oraenv

      来切换不同的ORACLE_SID来通过操作系统来启动不同的实例(instance)

    热心网友 时间:2022-05-02 01:55

    以下为粘贴内容

    数据库名(DB_NAME)、实例名(Instance_name)、以及操作系统环境变量(ORACLE_SID)
    在ORACLE7、8数据库中只有数据库名(db_name)和数据库实例名(instance_name)。在ORACLE8i、9i中出现了新的参数,即数据库域名(db_domain)、服务名(service_name)、以及操作系统环境变量(ORACLE_SID)。这些都存在于同一个数据库中的标识,用于区分不同数据库的参数。
    一、什么是数据库名(db_name)?
    数据库名是用于区分数据的内部标识,是以二进制方式存储于数据库控制文件中的参数,在数据安装或创建之后将不得修改。数据库安装完成后,该参数被写入数据库参数文件pfile中,格式如下:
    [code:1:1aaf156970]
    .........
    db_name="orcl" #(不允许修改)
    db_domain=dbcenter.toys.com
    instance_name=orcl
    service_names=orcl.dbcenter.toys.com
    control_file=(...............
    .........
    [/code:1:1aaf156970]
    在每一个运行的ORACLE8i数据库中都有一个数据库名(db_name),如果一个服务器程序中创建了两个数据库,则有两个数据库名。其控制参数据分属在不同的pfile中控制着相关的数据库。
    二、什么是数据库实例名(instance_name)
    数据库实例名则用于和操作系统之间的联系,用于对外部连接时使用。在操作系统中要取得与数据库之间的交互,必须使用数据库实例名。例如,要和某一个数据库server连接,就必须知道其数据库实例名,只知道数据库名是没有用的,与数据库名不同,在数据安装或创建数据库之后,实例名可以被修改。数据库安装完成后,该实例名被写入数据库参数文件pfile中,格式如下:
    [code:1:1aaf156970]
    db_name="orcl" #(不允许修改)
    db_domain=dbcenter.toys.com
    instance_name=orcl #(可以修改,可以与db_name相同也可不同)
    service_names=orcl.dbcenter.toys.com
    control_file=(...............
    .........
    [/code:1:1aaf156970]
    数据库名与实例名之间的关系。
    数据库名与实例名之间的关系一般是一一对应关系,有一个数据库名就有一个实例名,如果在一个服务器中创建两个数据库,则有两个数据库名,两个数据库实例名,用两个标识确定一个数据库,用户和实例相连接。
    但在8i、9i的并行服务器结构中,数据库与实例之间不存在一一对应关系,而是一对多关系,(一个数据库对应多个实例,同一时间内用户只一个实例相联系,当某一实例出现故障,其它实例自动服务,以保证数据库安全运行。)
    三、操作系统环境变量(ORACLE_SID)
    在实际中,对于数据库实例名的描述有时使用实例名(instance_name)参数,有时使用ORACLE_SID参数。这两个都是数据库实例名,它们有什么区别呢?(经常弄混)
    [code:1:1aaf156970]
    (ORACLE_SID)
    OS<----------------> ORACLE 数据库 <--------(Instance_name(实例名))
    [/code:1:1aaf156970]
    上图表示实例名instance_name、ORACLE_SID与数据库及操作系统之间的关系,虽然这里列出的两个参数都是数据库实例名,但instance_name参数是ORACLE数据库的参数,此参数可以在参数文件中查询到,而ORACLE_SID参数则是操作系统环境变量。
    操作系统环境变量ORACLE_SID用于和操作系统交互。也就是说,在操作系统中要想得到实例名,就必须使用ORACLE_SID。此参数与ORACLE_BASE、ORACLE_HOME等用法相同。在数据库安装之后,ORACLE_SID被用于定义数据库参数文件的名称。如:
    $ORACLE_BASE/admin/DB_NAME/pfile/init$ORACLE_SID.ora。
    定义方法:
    [code:1:1aaf156970]
    export ORACLE_SID=orcl
    [/code:1:1aaf156970]
    如果在同一服务器中创建了多个数据库,则必然同时存在多个数据库实例,这时可以重复上述定义过程,以选择不同实例。
    还可以用
    [code:1:1aaf156970]
    [oracle@Datacent]$ . oraenv
    [/code:1:1aaf156970]
    来切换不同的ORACLE_SID来通过操作系统来启动不同的实例(instance)

    热心网友 时间:2022-05-02 03:30

    1、ORACLE_SID是操作系统中的一个变量,一般对应的是实例名(instance_name);
    2、INSTANCE_NAME是实例名,一般和数据库名(db_name)相同(但可以不同);
    3、service_name(服务名),一般和instance_name、db_name相同(但可以不同),是对外提供服务的名称。
    4、RAC环境下,instance_name是多个,如果是两个节点,那么就应该对应两个实例名,而服务名可以是多个。

    热心网友 时间:2022-05-02 05:21

    ORACLE_SID指的是服务器上的数据库实例
    RAC环境是不同SID,相同服务名.最好你装一下,才能体验到效果.ORACLE重的是实践.
    声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
    人类如何才能悬浮在空中? - 知乎 人体悬浮术是真的存在吗 人体怎样才能真正的在空中悬浮 小孩c蛋白反应高是什么原因 (2014?南海区二模)如图所示,物重G为2000N,小红用800N的拉力花2s的时间... 苹果13系列升级iOS15.5好吗? 出生2o12年11月20日2点姓石光字辈取名 求龙凤胎名字:2012年6月21日(农历5月初3)凌晨0点40分出生,大的为龙,小... by和take有什么区别 takeby后面跟交通工具的区别 《哈利波特》的原著与电影有什么区别么? 《哈利波特》3里出现的那只鹿到底是谁? 下半身有好多像豆腐渣,这是什么情况? 为什么钉钉上有的是查看详情而有的却是查看回放,查看回放就没有显示直播结束的画面? 补充养老保险怎么计算缴纳个人所得税 怎么交税和社保,怎么计算的 个人所得税是怎么算的,工资是三千,养老保险是129.2,住房公积金是160,所得税应该缴纳多少 安九高铁湖北段什么时候动工? 社保税率怎么算 个人交养老保险怎么算的 养老保险怎么算的啊 在南京买房了,但是不是好学校的学区房,请问上拉萨路小学,力学小学等有什么条件? BMW的IDRIVE的插U盘直接放音乐操作方法 农村信用社电话查询余额怎么查 怎么把u盘里面的音乐导入到宝马x3里面? 普通杀虫剂对杀螨虫有效吗? 杀虫水乳剂对螨虫 杀虫剂喷床垫可以杀死螨虫吗? 用杀虫剂可以除床上的螨虫吗 杀虫剂可以杀死螨虫吗? 上海哪里有动漫绘画班? 东方童画怎么样? 上戏未来(上海)教育培训有限公司介绍? 上海哪里有针对初中生的美术培训学校? 上海有哪些表演艺术培训机构??? 国内的艺术培训机构推荐一些效果好的 上海浦东有这种舞蹈培训中心吗? 艺术培训机构的产品和服务是什么 上海艺术类培训机构是在文化局申报吗? 上海美术兴趣班,专业点的. 市场利率怎样计算 中华会计网的练习册怎么样 荣耀play3钉钉为什么找不到我的设置? 新手炒股怎样开户? DNF怎么查询自己的账号在哪个区有角色? 怎样查询DNF每个区的自己的游戏角色? 复制链接如何放在电脑里 高中数学空间几何题? 请教两道高中数学几何题 一道高中数学几何题,有图像