5、关于tnsname.ora文件的配置

客户端连接oracle数据库,需要配置的文件包括,sqlnet.ora和tnsname.ora.tnsname.ora就是起一个“数据库网络服务名”解析的功能[@more@]

先来一个tnsnames.ora文件的样板:

test=

(DEscriptON=

(ADDRESS_LIST=

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

)

(CONNECT_DATA=(SERVICE_NAME=orcl.testserver.com)

)

)

现解释如下:

test:为网络服务名(net service name),也叫数据库别名。

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

sql*plus 运行基本机理:

在用户输入 sqlplus system/manager@test 后,sqlplus 程序会自动到 sqlnet.ora 文件中找 NAMES.DEFAULT_DOMAIN 参数,假如该参数存在,则将该参数中的值取出,加到网络服务名的后面,即此例中你的输入由 sqlplus system/manager@test 自动变为 sqlplus system/manager@test.server.com ,然后再到 tnsnames.ora 文件中找 test.server.com 网络服务名,这当然找不到了,因为该文件中只有 test 网络服务名,所以报错。解决的办法就是将 sqlnet.ora 文件中的 NAMES.DEFAULT_DOMAIN 参数注释掉即可,如 #NAMES.DEFAULT_DOMAIN = server.com。假如 NAMES.DEFAULT_DOMAIN 参数不存在,则 sqlplus 程序会直接到 tnsnames.ora 文件中找 test 网络服务名,然后取出其中的 host,port,tcp,service_name,利用这些信息将连接请求发送到正确的数据库服务器上。

另外原则上 tnsnames.ora 中的配置不区分大小写,但是我的确遇到区分大小写的情况,所以最好将使用的网络服务与 tnsnames.ora 中配置的完全一样。
ORA-12514: TNS:listener could not resolve SERVICE_NAME given in connect Descrīptor.该错误表示能在 tnsnames.ora 中找到网络服务名,但是在 tnsnames.ora 中指定的 SERVICE_NAME 与服务器端的 SERVICE_NAME 不一致。解决的办法是修改 tnsnames.ora 中的 SERVICE_NAME。

可以看到,能否连接数据库,和sqlnet.ora中的names.default_参数有很大关系。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/248644/viewspace-929673/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/248644/viewspace-929673/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值