Oracle 实例名服务名 请问SID和Service

Oracle 实例名服务名 请问SID和Service,第1张

可以简单的这样理解:一个公司比喻成一台服务器,数据库是这个公司中的一个部门。

1SID:一个数据库可以有多个实例(如RAC),SID是用来标识这个数据库内部每个实例的名字,

就好像一个部门里,每个人都有一个自己的名字。

2SERVICE_NAME:是这个数据库对外宣称的名字,外面的人要想连接我这个数据库,

你就在客户端的连接串里写上service_name。它就像一个部门的名字,这个部门的名称在看门大爷(listener)那里有登记,

看门大爷一看你是要找SERVICE_NAME这个部门,就告诉你我们公司确实有这个部门,于是你就找到了,连接就建立了。

一句话来说就是:SID是对内的,是实例级别的一个名字,用来内部之间称呼用。SERVICE_name是对外的,

是数据库级别的一个名字,用来告诉外面的人,我数据库叫"SERVICE_NAME"。

你可以通过service_name参数指定这个名字是什么,可以有多个名字,名字随便起,叫狗蛋,翠花都没关系。

如果你不指定,默认的是Db_name Db_domain,也就是global_name。

数据库里,还有ORACLE_SID,是告诉OS系统,我这个实例叫做什么。这些易混淆的名字,你要记住,

他们不是指数据库,就是指实例,就这两个东西,别无其它。他们具体用哪个名字,是要看对谁而言,

是什么场合。是对数据库,还是对操作系统,还是对外部链接。就像你对父母而言,你有小名叫幺儿;

对同学而言,你有外号叫灯泡;对办事机构,你有正规的名字叫王小明。但归根到底,是一回事。分清楚这点,就不容易混了。

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

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

数据库名Db_name:对一个数据库(Oracle database)的唯一标识。这种表示对于单个数据库是足够的,但是随着由多个数据库构成的分布式数据库的普及,这种命令数据库的方法给数据库的管理造成一定的负担,因为各个数据库的名字可能一样,造成管理上的混乱,为了解决这种情况,引入了Db_domain参数,这样在数据库的标识是由Db_name和Db_domain两个参数共同决定的,避免了因为数据库重名而造成管理上的混乱

全局数据库名Global_name:对一个数据库(Oracle database)的唯一标识,oracle建议用此种方法命令数据库。该值是在创建数据库是决定的,缺省值为Db_name Db_domain

连接数据库时输入哪个。。。。这个需要看tnsnamesora文件中配置的是哪个,一般是service_name,或者是sid

 一 数据库名

 数据库名是数据库的 身份证号码 用于标示一个数据库 在参数文件中用DB_NAME表示

 数据库名是在安装数据库 创建新的数据库 创建数据库控制文件 修改数据库结构 备份与恢复数据库时都需要使用到的

 如何查看数据库名呢?方式有三

  使用SQL语句 select name from v$database

  使用show命令 show parameter db_name

  查看参数文件 查看init ora文件

 二 数据库实例名

 数据库实例名是用于和操作系统进行联系的标识 也就是说数据库和操作系统之间的交互使用的是数据库实例名

 实例名也被写入参数文件中 该参数为instance_name 在winnt平台中 实例名同时也被写入注册表

 数据库名和实例名可以相同也可以不同 在一般情况下 数据库名和实例名是一对一的关系 但如果在oracle并行服务器架构(即oracle实时应用集群)中 数据库名和实例名是一对多的关系

 如何查看当前数据库实例名呢?方式有三

  使用SQL语句 select instance_name from v$instance

  使用show命令 show parameter instance

  查看参数文件 查看init ora文件

 数据库实例名与ORACLE_SID两者都表示oracle实例 但是有区别的 instance_name是oracle数据库参数 而ORACLE_SID是操作系统的环境变量 ORACLD_SID用于与操作系统交互 也就是说 从操作系统的角度访问实例名 必须通过ORACLE_SID

 ORACLE_SID必须与instance_name的值一致 否则 你将会收到一个错误 在unix平台 是 ORACLE not available 在winnt平台 是 TNS 协议适配器错误

 三 数据库域名与全局数据库名

 随着由多个数据库构成的分布式数据库的普及 这种命令数据库的方法给数据库的管理造成一定的负担 因为各个数据库的名字可能一样 造成管理上的混乱

 为了解决这种情况 引入了Db_domain参数 这样在数据库的标识是由Db_name(数据库名)和 Db_domain(数据库域名)两个参数共同决定的 避免了因为数据库重名而造成管理上的混乱 这类似于互连网上的机器名的管理

 我们将Db_name和 Db_domain两个参数用 连接起来 表示一个数据库 并将该数据库的名称称为Global_name(全局数据库名) 即它扩展了Db_name Db_name参数只能由字母 数字 _ # $ 组成 而且最多 个字符

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

 如何查询数据库域名呢?方法有三

  使用SQL命令 select value from v$parameter where name = db_domain

  使用show命令 show parameter domain

  查看参数文件 在参数文件中查询

 四 数据库服务名

 该参数是oracle i新引进的 在 i以前 我们用SID来表示标识数据库的一个实例 但是在Oracle的并行环境中 一个数据库对应多个实例 这样就需要多个网络服务名 设置繁琐 为了方便并行环境中的设置 引进了Service_name参数 该参数对应一个数据库 而不是一个实例

 该参数的缺省值为Db_name Db_domain 即等于Global_name 如果数据库有域名 则数据库服务名就是全局数据库名 否则 数据库服务名与数据库名相同

 如何查询数据库服务名呢?方法有三

  使用SQL语句 select value from v$parameter where name = service_name

  使用show命令 show parameter service_name

  查看参数文件 在参数文件中查询

 从Oracle i开如的oracle网络组件 数据库与客户端的连接主机串使用数据库服务名 之前用的是ORACLE_SID 即数据库实例名

 五 网络服务名

 网络服务名 又可以称为数据库别名(database alias) 是客户端程序访问数据库时所需要 屏蔽了客户端如何连接到服务器端的细节 实现了数据库的位置透明的特性 网络服务名被记录在tnsnames ora文件中

 网络服务名是从客户端的角度出发 当客户端连接远程数据库或其他服务时 可以指定Net服务名 因此需要使用一个或多个命名方法将此Net服务名解析为连接数据库或其他服务的连接描述符

 通常选择的是[本地] 将存储在本地客户机的tnsnames ora文件中的网络服务名解析为连接描述符

 [Oracle Names] 由Oracle名字服务器提供为网络上的每个Oracle Net服务提供解析方法

 [主机名] 通过TCP/IP环境中的主机别名连接到Oracle数据库服务

 [Sun NIS]/[DCE CDS] 专用系统用的 在Windows 系统环境下不适用

 六 总结

 Oracle中各种命名的比较名称查询方式

 

 名称→ 查询方式 DB_NAME→select name from v$database INSTANCE_NAME →select instance_name from v$instance ORACLE_SID→值和INSTANCE_NAME相同 DB_DOMAIN→select value from v$parameter where name= db_domain GLOBAL_NAME →DB_NAME DB_DOMAIN SERVICE_NAME→ select value from v$parameter where name= service_name NET_SERVICE_NAME→检查tnsnames ora文件

lishixinzhi/Article/program/Oracle/201311/16568

oracle的“本地网络服务名”配置方法如下:

用Oracle自带的Net Configuration Assistant工具来配置,它是一个图形化界面,鼠标点点就能搞定。

在Windows环境中,该工具的位置在Start > Programs > Oracle - HOME_NAME > Configuration and Migration Tools > Net Configuration Assistant

如果找不到,你就在dos提示符下输入netca即可,如:C:\>netca

在linux环境中,该工具的位置在$ORACLE_HOME/bin目录下,同样在命令行窗口输入netca即可

熟悉了之后也可以手动设置,只需编辑ORACLE_HOME/network/admin/tnsnamesora文件,它其实就是个文本文件,用记事本就可以编辑。内容就短短几行,参考如下:

VM =

(DESCRIPTION =

(ADDRESS_LIST =

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

)

(CONNECT_DATA =

(SERVICE_NAME = simenyu)

)

)

这个话题太长,我给你复制一段吧。

一、数据库名

什么是数据库名?

数据库名就是一个数据库的标识,就像人的身份证号一样。他用参数DB_NAME表示,如果一台机器上装了多个数据库,那么每一个数据库都有一个数据库名。在数据库安装或创建完成之后,参数DB_NAME被写入参数文件之中。格式如下:

DB_NAME=myorcl

在创建数据库时就应考虑好数据库名,并且在创建完数据库之后,数据库名不宜修改,即使要修改也会很麻烦。因为,数据库名还被写入控制文件中,控制文件是以二进制型式存储的,用户无法修改控制文件的内容。假设用户修改了参数文件中的数据库名,即修改DB_NAME的值。但是在Oracle启动时,由于参数文件中的DB_NAME与控制文件中的数据库名不一致,导致数据库启动失败,将返回ORA-01103错误。

数据库名的作用

数据库名是在安装数据库、创建新的数据库、创建数据库控制文件、修改数据结构、备份与恢复数据库时都需要使用到的。

有很多Oracle安装文件目录是与数据库名相关的,如:

winnt: d:\oracle\product\1010\oradata\DB_NAME\

Unix: /home/app/oracle/product/1010/oradata/DB_NAME/

pfile:

winnt: d:\oracle\product\1010\admin\DB_NAME\pfile\iniora

Unix: /home/app/oracle/product/1010/admin/DB_NAME/pfile/init$ORACLE_SIDora

跟踪文件目录:

winnt: /home/app/oracle/product/1010/admin/DB_NAME/bdump/

另外,在创建数据时,careate database命令中的数据库名也要与参数文件中DB_NAME参数的值一致,否则将产生错误。

同样,修改数据库结构的语句alter database, 当然也要指出要修改的数据库的名称。

如果控制文件损坏或丢失,数据库将不能加载,这时要重新创建控制文件,方法是以nomount方式启动实例,然后以create controlfile命令创建控制文件,当然这个命令中也是指指DB_NAME。

还有在备份或恢复数据库时,都需要用到数据库名。

总之,数据库名很重要,要准确理解它的作用。

查询当前数据名

方法一:select name from v$database;

方法二:show parameter db

方法三:查看参数文件。

修改数据库名

前面建议:应在创建数据库时就确定好数据库名,数据库名不应作修改,因为修改数据库名是一件比较复杂的事情。那么现在就来说明一下,如何在已创建数据之后,修改数据库名。步骤如下:

1关闭数据库。

2修改数据库参数文件中的DB_NAME参数的值为新的数据库名。

3以NOMOUNT方式启动实例,修建控制文件(有关创建控制文件的命令语法,请参考oracle文档)

二、数据库实例名

什么是数据库实例名?

数据库实例名是用于和操作系统进行联系的标识,就是说数据库和操作系统之间的交互用的是数据库实例名。实例名也被写入参数文件中,该参数为instance_name,在winnt平台中,实例名同时也被写入注册表。

数据库名和实例名可以相同也可以不同。

在一般情况下,数据库名和实例名是一对一的关系,但如果在oracle并行服务器架构(即oracle实时应用集群)中,数据库名和实例名是一对多的关系。这一点在第一篇中已有图例说明。

查询当前数据库实例名

方法一:select instance_name from v$instance;

方法二:show parameter instance

方法三:在参数文件中查询。

数据库实例名与ORACLE_SID

虽然两者都表是oracle实例,但两者是有区别的。instance_name是oracle数据库参数。而ORACLE_SID是操作系统的环境变量。 ORACLD_SID用于与操作系统交互,也就是说,从操作系统的角度访问实例名,必须通过ORACLE_SID。在winnt不台, ORACLE_SID还需存在于注册表中。

且ORACLE_SID必须与instance_name的值一致,否则,你将会收到一个错误,在unix平台,是“ORACLE not available”,在winnt平台,是“TNS:协议适配器错误”。

数据库实例名与网络连接

数据库实例名除了与操作系统交互外,还用于网络连接的oracle服务器标识。当你配置oracle主机连接串的时候,就需要指定实例名。当然8i以后版本的网络组件要求使用的是服务名SERVICE_NAME。这个概念接下来说明 。

三、数据库域名

什么是数据库域名?

在分布工数据库系统中,不同版本的数据库服务器之间,不论运行的操作系统是unix或是windows,各服务器之间都可以通过数据库链路进行远程复制,数据库域名主要用于oracle分布式环境中的复制。举例说明如:

全国交通运政系统的分布式数据库,其中:

福建节点: fjjtyz

福建厦门节点: xmfjjtyz

江西: jxjtyz

江西上饶:srjxjtyz

这就是数据库域名。

数据库域名在存在于参数文件中,他的参数是db_domain

查询数据库域名

方法一:select value from v$parameter where name = 'db_domain';

方法二:show parameter domain

方法三:在参数文件中查询。

全局数据库名

全局数据库名=数据库名+数据库域名,如前述福建节点的全局数据库名是:oradbfjjtyz

四、数据库服务名

什么是数据库服务名?

从oracle9i版本开始,引入了一个新的参数,即数据库服务名。参数名是SERVICE_NAME。

如果数据库有域名,则数据库服务名就是全局数据库名;否则,数据库服务名与数据库名相同。

查询数据库服务名

方法一:select value from v$parameter where name = 'service_name';

方法二:show parameter service_name

方法三:在参数文件中查询。

数据库服务名与网络连接

从oracle8i开如的oracle网络组件,数据库与客户端的连接主机串使用数据库服务名。之前用的是ORACLE_SID,即数据库实例名

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » Oracle 实例名服务名 请问SID和Service

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情