listener.ora 与 tnsnames.ora 及 sqlnet.ora

本文详细解析了Oracle数据库中listener.ora与tnsnames.ora的作用及配置方法,包括监听服务启动过程、客户端连接字符串使用技巧及SQLNET.AUTHENTICATION_SERVICES参数的影响。

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

 listener.ora对应的是服务器上的监听。
tnsnames.ora对应的是客户端上的连接配置
 
可以说在本地的数据库不用开监听listener.ora就可以访问数据库(访问数据库时不带 @dbname ),但是访问远程数据库的话,远程数据库一定要开监听
tsnnames.ora 里  DESCRIPTION 前面那个oratest 不一定要跟里面的service_name一样,它只是给这个连接串起的一个别名,可以任意取名字。比如

ORATESTa =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST =
192.168.2.195)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = oratest)
    )
  )

注意:改oratest 为 oratesta 以后,即修改tnsnames.ora后,要重新进入SQL*Plus进行连接

 

平时的连接 c:/>sqlplus aa/aa123@oratest 可以改为直接用连接字符串,例如:
c:/>sqlplus aa/aa123@(DESCRIPTION = (ADDRESS_LIST =(ADDRESS =(PROTOCOL = TCP)(HOST =192.168.2.195)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME =oratest))
 
监听listener.ora
监听的启动lsnrctl start 并不会去找 sid_name 是否存在,甚至数据库是否启动都不理会。可是试验将数据库shutdown掉,lsnrctl start 都是成功的不会提示错误,或者数据库运行状态下将listener.ora的内容改一下比如改sid_name为不存在sid,然后lsnrctl start也不会出错,这就说明只有在连接的时候才会去找sid_name,才会有错误提示
 
另外,listener.ora内容修改以后,要重新启动修改的内容才生效
 
sqlnet.ora
SQLNET.AUTHENTICATION_SERVICES= (NTS,NONE)
当为 nts 的时候是操作系统验证,为 none 的时候是采用密码文件认证方式
试验如下:
环境:windows
修改了SQLNET.AUTHENTICATION_SERVICES= (NONE) 但是
SQL> CONN AA/AA123
已连接。
照样连接成功
SQL>CONN SYS/SYS123 AS SYSDBA
已连接。
也是连接成功

SQL> conn /as sysdba
ERROR:
ORA-01031: insufficient privileges

警告: 您不再连接到 ORACLE。

这就说明当值为 NONE  的时候,是必须要输入用户名和密码的,这就是密码认证方式

注意:1、修改sqlnet.ora是不需要重新启动数据库的

      2、在其他Linux/Nuix平台下跟别的参数有关,跟Windows环境下不同

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值