`
晴天雨天
  • 浏览: 14783 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

Oracle 中 db_name / service_name / sid 三者的关系和作用

阅读更多

db_name是一个实在的物理名称。service_name时带有域名的,因为如果两个数据库不再同一个域可以有相同的名称。而sid是数据库的实例名称,它是有SGA和后台进程组成。一个数据库只有一个db_name但是可以有两个实例。每个实例各有自己的SGA和后台进程。





Db_name:对一个数据库(Oracle database)的唯一标识。这种表示对于单个数据库是足够的,但是随着由多个数据库构成的分布式数据库的普及,这种命令数据库的方法给数据库的管理造成一定的负担,因为各个数据库的名字可能一样,造成管理上的混乱。为了解决这种情况,引入了Db_domain参数,这样在数据库的标识是由Db_name和Db_domain两个参数共同决定的,避免了因为数据库重名而造成管理上的混乱。这类似于互连网上的机器名的管理。我们将Db_name和Db_domain两个参数用’.’连接起来,表示一个数据库,并将该数据库的名称称为Global_name,即它扩展了Db_name。Db_name参数只能由字母、数字、’_’、’#’、’$’组成,而且最多8个字符。

Db_domain:定义一个数据库所在的域,该域的命名同互联网的’域’没有任何关系,只是数据库管理员为了更好的管理分布式数据库而根据实际情况决定的。当然为了管理方便,可以将其等于互联网的域。

Global_name:对一个数据库(Oracle database)的唯一标识,oracle建议用此种方法命令数据库。该值是在创建数据库是决定的,缺省值为Db_name. Db_domain。在以后对参数文件中Db_name与Db_domain参数的任何修改不影响Global_name的值,如果要修改Global_name,只能用ALTER DATABASE RENAME GLOBAL_NAME TO <db_name.db_domain>命令进行修改,然后修改相应参数。

Service_name:该参数是oracle8i新引进的。在8i以前,我们用SID来表示标识数据库的一个实例,但是在Oracle的并行环境中,一个数据库对应多个实例,这样就需要多个网络服务名,设置繁琐。为了方便并行环境中的设置,引进了Service_name参数,该参数对应一个数据库,而不是一个实例,而且该参数有许多其它的好处。该参数的缺省值为Db_name. Db_domain,即等于Global_name。一个数据库可以对应多个Service_name,以便实现更灵活的配置。该参数与SID没有直接关系,即不必Service name 必须与SID一样。

Instance_name:数据库实例名。用于和操作系统之间的联系,用于对外部连接时使用。在操作系统中要取得与数据库之间的交互,必须使用数据库实例名。例如,要和某一个数据库server连接,就必须知道其数据库实例名,只知道数据库名是没有用的,与数据库名不同,在数据安装或创建数据库之后,实例名可以被修改。数据库名与实例名之间的关系一般是一一对应关系,有一个数据库名就有一个实例名,如果在一个服务器中创建两个数据库,则有两个数据库名,两个数据库实例名,用两个标识确定一个数据库,用户和实例相连接。 但在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被用于定义数据库参数文件的名称。如:

=======================================




在init.ora中有db_name,instance_name,service_name

db_name是数据库的名称,在db安装时就已经设置了,这里不可修改,它觉得了数据库安装文件的位置。

instance_name是实例名,是数据库运行中名称,其实在OO中db_name相当于类而instance_name向当于对象,它也是代表数据库运行中的内存及其进程,同时影响到了这些进程的名称,譬如:一个数据库db_name=cus,而其实例instance_name=aking,那么数据库起来后,其进程名可能为:Pmon_aking_1。这里的实例名称要和PWDsid.ora和initSid.ora等文件匹配上,否则,db起动报错。从这里可以看出db_name是类名,定义后是不可修改的,而对于instance_name实例名向当于对象,所以我们可以设定自己喜欢的对象名称。不过话虽这样讲,但改了instance_name后,牵扯到很多其他的设置,还是最好不要动他,默认和db_name是一样的,这样多好。

service_name我觉得应该是指数据库网络连接时的名称,在listener配置中会有所考虑的。这个值也是可以随意改动的,并且还可以有多个值。alter system set service_name=serv1,serv2 scope=both;



在listener.ora中有SID_NAME,GLOBAL_DBNAME

这里SID_NAME指数据库的运行的实例名,应该是和instance_name一致

而对于GLOBAL_DBNAME是listener配置的对外网络连接名称,我们在配置tnsname.ora时会考虑这个参数。这个参数可以任意的设置。

另外有一点需要注意,一般我们会在listener.ora手工配置数据库实例的监听配置。但oracle可以通过pmon进程支持自动注册,这时自动注册的对外网络连接名称就会用到init.ora文件中service_name,有多个值的话就会注册多个,对于上面的例子,在这里就会注册serv1和serv2两个监听服务。如果你还手工配置了一个GLOBAL_DBNAME=serv3的监听服务的话,那么对于实例instance_name=aking就会有三个监听服务。



在tnsname.ora中有SERVICE_NAME,SID

下面配置客户端的tnsname.ora

对于这里的配置主要要给出要连接的数据库的IP及其连接的实例或服务

在监听配置中我们提到了对外网络连接名称,在这里如果我们用SERVICE_NAME的话,就需要SERVICE_NAME=(GLOBAL_DBNAME或者service_name这里要求oracle已经自动注册到了监听器中),对于SID=(instance_name)即可,譬如:

SERVICE_NAME=serv1,serv2,serv3都可以,或者

SID=aking



最后一个是ORACLE_SID参数,这个参数是操作系统中用到的,它是描述我们要默认连接的数据库实例,对于一个机器上有多个实例的情况下,要修改后才能通过 conn / as sysdba连接,因为这里用到了默认的实例名。

=============================================









一直对ORACLE中各种名字不是很清晰,这两天做了比较细致的研究,也算是小有成就吧,哈哈!

Service_name:数据库逻辑上表现为一个服务,服务名可以任意取,并且一个数据库可以有 多个服务名,名字由参数Service_names决定,如果该参数为空,默认的服务名为全局数据库名,即db_name.db_domain。



Instance_name:实例与数据库的对应关系是多对一,由参数instance_name指定,当系统的实例与数据库为一对一关系时,通常实例名即为数据库名。




db_name:db_name与db_domain组成全局数据库名,唯一地标识一个Oracle数据库,db_name在数据库创建后就不能再更改。



ORACLE_SID:全称是Oracle System Identifier,是以环境变量的形式出现,用于区分不同的实例。所以ORACLE_SID其实就是当前想连接的实例名,因为实例与数据库是多对一的关系,所以确定了实例,就等于确定了要连接的数据库。



连接标识符:下面是一个tnsnames.ora文件的基本内容:

ORACLE =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.111)(PORT = 1521))

)

(CONNECT_DATA =

(SERVICE_NAME = ora10g)

)

)

其中ORACLE即是连接标识符,当使用本地命名的方式,在应用程序(如SQL*PLUS)连接Oracle时,使用的就是连接标识符,如

“sqlplus scott/tiger@oracle”

连接标识符等号右边的内容全部为连接描述符,是使用本地命名连接Oracle时所需的信息。

SERVICE_NAME就是参数Service_names中的值,必须与该参数的值对应,如果参数为空,那这里的SERVICE_NAME只能是db_name.db_domain,否则无法连接Oracle。

==============================



PROTOCOL   =   TCP)(HOST   =   192.168.0.6)(PORT   =   1521))  
          )  
          (CONNECT_DATA   =  
              (SERVICE_NAME   =   epolice  
   
  PROTOCOL       --协义  
  host               --数据库服务器ip  
  port               --数据库服务器端口  
  service_name   --   数据库sid
分享到:
评论

相关推荐

    修改oracle_sid和db_name名字

    在 Oracle 数据库中,sid 和 db_name 是两个非常重要的参数,分别表示数据库实例名和数据库名字。修改这两个参数需要谨慎,因为它们对数据库的运行和性能有着直接的影响。在本文中,我们将详细介绍如何修改 Oracle_...

    oracle_DB_NAME,INSATNCE_NAME,ORACLE_SID区别

    Oracle 中有三个重要的概念:DB_NAME、INSTANCE_NAME 和 ORACLE_SID,它们都是 Oracle 数据库的重要组成部分,了解它们的区别和作用非常重要。 DB_NAME DB_NAME 是数据库的名称,也就是数据库的名字标识。在 ...

    Oracle9个_name介绍

    ### Oracle中的九个_Name参数详解 #### 一、db_name:数据库名称 ...特别是`db_name`、`instance_name`、`service_name`和`listener`等参数,在日常管理和维护中使用频率较高,是必须掌握的核心概念。

    oracle 使用命令创建oracle数据库

    1 、确定数据库的sid 和db_name  \u3000sid='hsj'  db_name='hsj'  2、设置环境变量env ORACLE_BASE=/u01/app ORACLE_HOME=$ORACLE_BASE/oracle ORACLE_SID=hsj PATH=$ORACLE_HOEM/bin:$PATH; LD_...

    linux下的Oracle数据库安装,卸载和静默安装

    db_name=orcl sga_target=500M sga_max_size=500M job_queue_processes=10 undo_management=auto undo_tablespace=undotbs audit_file_dest=$ORACLE_BASE/admin/orcl/adump background_dump_dest=$ORACLE_BASE/admin...

    [整理]修改oracle实例名&#40;sid&#41;和数据库名&#40;db_name&#41;.doc

    在Oracle数据库环境中,有时因为各种原因,我们可能需要更改数据库的实例名(SID)和数据库名(db_name)。这通常是由于系统迁移、合并或者规范命名等原因导致的。Oracle提供了多种方法来实现这一变更,其中既包括...

    Oracle RAC配置ST_Geometry技术文档

    Oracle RAC 中配置 ST_Geometry 技术文档 Oracle RAC(Real Application Clusters)是一种高可用、高性能的-cluster解决方案,能够满足大规模数据存储和处理的需求。在 Oracle RAC 环境下,配置 ST_Geometry 技术...

    最简单的oracle10g手工建库步骤

    $ mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/dpdump $ mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/udump $ mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/pfile ``` #### 步骤五:创建SPFILE并启动实例 SPFILE是一种...

    ORACLE数据库与实例的关系.pdf

    - **方法三**: 直接查看参数文件`$ORACLE_HOME/admin/db_name/pfile/init.ora`或`$ORACLE_BASE/admin/db_name/pfile/init.ora`中的`db_name`设置。 #### 二、数据库实例名(instance_name) **2.1 数据库实例名的...

    ORACLE数据库与实例的关系[参考].pdf

    - **查询方法三**:直接查看参数文件`$ORACLE_HOME/admin/db_name/pfile/init.ora`或等效位置的文件。 #### 二、数据库实例名(instance_name) **2.1 数据库实例名的概念** 数据库实例名(instance_name)是指用于...

    数据库名实例名sid的区别

    DB_NAME是数据库的内部标识,INSTANCE_NAME是连接数据库的外部标识,而ORACLE_SID是操作系统层面的标识,三者共同构成了Oracle数据库在不同层面上的识别体系,使得我们能够在复杂的IT环境中有效地管理和访问数据库...

    Linux下备份oracle数据库到本地

    在Linux环境下,对Oracle数据库进行备份是数据库管理中的重要任务,确保数据安全和灾难恢复的能力。本文主要讨论如何在Linux系统下使用Oracle的exp工具来备份数据库到本地,并结合使用shell脚本和crontab实现自动化...

    Docker中安装oracle 11.2.0.4.docx

    "Docker 中安装 Oracle 11.2.0.4" 本文档将指导读者在 Docker 容器中安装 Oracle 11.2.0.4。为达到此目的,需要准备一个 Centos 系统的宿主机,并安装 Docker 软件。然后,使用 Docker 镜像运行容器,并在容器中...

    ORACLE_SID_实例名_数据库名_讲解

    在一般情况下,数据库名和实例名是一对一的关系,但如果在 oracle 并行服务器架构中,数据库名和实例名是一对多的关系。 ORACLE_SID 是操作系统的环境变量,用于与操作系统交互,也就是说,从操作系统的角度访问...

    64位Linux下Oracle11G XE安装与配置

    Oracle 11G XE 是一种 Relation Database Management System(关系数据库管理系统),可以在 Linux 操作系统下安装和配置。以下是安装和配置 Oracle 11G XE 的详细步骤: 1. 查看交换空间是否充足 在安装 Oracle ...

    Linux 下手动创建oracle数据库

    - **作用**: `ORACLE_SID` 是Oracle服务标识符(service identifier),用于指定Oracle实例的名称。 - **步骤**: - 首先检查是否已在`.bash_profile`文件中设置了`ORACLE_SID`变量。 - 如果未设置,可以临时设置或...

    Oracleoem与存储docx

    - 创建新的 Pfile 文件:在指定路径下(例如 `/oracle/app/oracle/product/10.2.0/db_1/dbs/`),使用文本编辑器创建一个名为 `init&lt;ORACLE_SID&gt;.ora` 的文件,并将从日志文件中提取的参数粘贴进去。 - 设置正确的...

    linux下oracle手动建实例

    control_files=(" /home/db/oracle/oradata/bgroup/control01.ctl", "/home/db/oracle/oradata/bgroup/control02.ctl", "/home/db/oracle/oradata/bgroup/control03.ctl") open_cursors=300 undo_management=AUTO...

Global site tag (gtag.js) - Google Analytics