当前位置: 代码迷 >> Oracle管理 >> 生产库上有2个service_name,这是咋回事呢
  详细解决方案

生产库上有2个service_name,这是咋回事呢

热度:160   发布时间:2016-04-24 04:07:44.0
生产库上有2个service_name,这是怎么回事呢?
tnsnames.ora里面有2个配置

STU =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.xx.xx.1)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = stuorcl)
    )
  )



STU2 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.xx.xx.2)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME= teaorcl)
    )
  )


1,两个都可以 sqlplus user/pwd@STU2;  sqlplus user/pwd@STU ; 登录。
2,登录后查询的表结构和数据都一样。
3,rman备份中显示的db_unique_name 是     teaorcl。
4,超级管理员登录后,show parameter name; 中的是teaorcl

这到底是怎么回事呢?
------解决思路----------------------
这要看数据库里service_names的配置
这个参数是给监听用的,会注册到服务器的监听中。可以随意修改名称和个数,连接时,客户端的service_name可以指定前面配置的服务名中的一个即可
------解决思路----------------------
show parameter name查出的是名称里带name的所有参数,可以找到service_names
------解决思路----------------------
一个数据库可以有多个service_name,这是很正常的。
------解决思路----------------------
允许多个,如果有多个,这个参数值里面多个服务名之间以逗号隔开,但目前你的服务端里只有一个服务名,那么客户端只能指定这个才能连接
啃一下概念吧,要不实在很难讲明白
------解决思路----------------------
你的文件里,host名不同。连到的是两个机器。两个配置分别连接到不同的数据库
------解决思路----------------------
oracle数据库可以有多个service_name。再看看你的哪个服务名是注册在监听中的。
------解决思路----------------------
引用:
Quote: 引用:

你的文件里,host名不同。连到的是两个机器。两个配置分别连接到不同的数据库
不好意思,文件里面host其实是一样的,我在做隐藏处理的时候,没有做对,其实都是一个ip地址。


如果是这样的话,那么二者就是一个实例下的内容,不过是对外提供了多个service_name。
通过show parameters db_name 和 show parameters instance_name 查看结果。