listener.ora、sqlnet.ora、tnsnames.ora 配置文件

本文详细介绍了Oracle数据库中三个关键配置文件listener.ora、sqlnet.ora和tnsnames.ora的作用及配置方法,并解释了sql*plus如何通过这些配置文件进行数据库连接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

三个配置文件 listener.orasqlnet.oratnsnames.ora ,都是放在$ORACLE_HOME/network/admin目录下。参考:http://hi.baidu.com/lisongyuan1984/blog/item/94092c4f9a8176cdd1c86ace.html

sqlnet.ora文件:
SQLNET.AUTHENTICATION_SERVICES= (NTS)    #使用操作系统本地验证,一般不用,有安全问题。通常需要改成下面的值:SQLNET.AUTHENTICATION_SERVICES= (NONE) 
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)   #指定客户端请求的解析方式,首先为TNSNAMES,即使用tnsnames.ora文件解析
#NAMES.DEFAULT_DOMAIN = server.com   #指定客户端请求的服务名的域

tnsnames.ora文件:
fgh =  #此处指定的是oracle服务的别名,在第三方客户端工具(PL/SQL Developer)中的数据库项中体现
  (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))  #指定oracle数据库运行的协议、地址和端口   
      (CONNECT_DATA = 
           (SERVER = DEDICATED)
           (SERVICE_NAME = orcl) #实际的oracle服务名称为orcl
       )
  )

listener.ora文件:
LISTENER =  #监听器的名称
  (DESCRIPTION_LIST =
    (DESCRIPTION =
       (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
       (ADDRESS = (PROTOCOL = TCP)(HOST = localhost )(PORT = 1521)) #指定监听的目的主机及端口,注:监听服务启动不了很有可能是这里指定的主机名与实际主机名不相符
    )
  )

sql*plus运行基本机理:
1. sqlnet.ora文件:
      NAMES.DIRECTORY_PATH = (TNSNAMES, .)
      NAMES.DEFAULT_DOMAIN = server.com
2. tnsnames.ora文件:
      test =
          (DESCRIPTION=
               (ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=testserver)(PORT=1521))
               (CONNECT_DATA=(SERVICE_NAME=orcl.testserver.com)
          )
在用户输入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网络服务名,然后取出其中的hostporttcpservice_name,利用这些信息将连接请求发送到正确的数据库服务器上。

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

<!--EndFragment-->
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值