Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2223763
  • 博文数量: 668
  • 博客积分: 10016
  • 博客等级: 上将
  • 技术积分: 8588
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-29 19:22
文章分类

全部博文(668)

文章存档

2011年(1)

2010年(2)

2009年(273)

2008年(392)

分类:

2008-06-25 09:21:02

tnsnames.ora里面的 SERVICE_NAME 不是要对应listener.ora里面的 SID_NAME 而是要对应GLOBAL_DBNAME

MYSID8.SH.BCD.COM =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.9.2)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = OEMREPSRV)
    )
  )

 

 

listener.ora:

(SID_DESC =
      (GLOBAL_DBNAME = OEMREPSRV)
      (ORACLE_HOME = D:\oracle\ora92)
      (SID_NAME = OEMREP)
    )

 

 

 

9i里面在lsnrctl status里面就看的很清楚:

知道所谓AAA,BBB,YBSRV只是不同的GLOBAL_DBNAME 对应的同一个SID_NAME

 

Services Summary...
Service "AAA" has 1 instance(s).
  Instance "YB", status UNKNOWN, has 1 handler(s) for this service...
Service "BBB" has 1 instance(s).
  Instance "YB", status UNKNOWN, has 1 handler(s) for this service...
Service "OEMREPSRV" has 1 instance(s).
  Instance "OEMREP", status UNKNOWN, has 1 handler(s) for this service...
Service "YBSRV" has 1 instance(s).
  Instance "YB", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
LSNRCTL>

 

 

8i里面就只有看listener.ora文件喽,lsnrctl status看不见GLOBAL_DBNAME

服务摘要..
  PLSExtProc            具有1个服务处理程序
  oraback               具有1个服务处理程序
  oraback               具有2个服务处理程序
  sid8          具有2个服务处理程序
  sid8          具有1个服务处理程序
命令执行成功

 

 

oracle中的service_name,instance_name,db_name,oracle_sid,sid_name的用法及区别

 

最近查过一些资料,准备把oracle里纷乱的参数整理一下,这里主要讨论以下参数,及其用法的总结,如有不对的地方,望高人指点!
在init.ora中有db_name,instance_name,service_name
在操作系统中需要配置oracle_sid
在listener.ora中有SID_NAME,GLOBAL_DBNAME,
在tnsname.ora中有SERVICE_NAME,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连接,因为这里用到了默认的实例名。
阅读(1271) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~