【翻译自mos文章】怎么正确的使用SQLNET.ALLOWED_LOGON_VERSION参数

本文详细解释了SQLNET.ALLOWED_LOGON_VERSION参数的作用原理,并澄清了其与Oracle客户端版本之间的常见误解。此外,还介绍了该参数如何在不同Oracle版本中影响客户端的认证协议。
怎么正确的使用SQLNET.ALLOWED_LOGON_VERSION参数
来源于:
How To Use the Parameter SQLNET.ALLOWED_LOGON_VERSION Correctly (文档 ID 1304142.1)

适用于:
Oracle Net Services - Version 9.2.0.8 to 11.2.0.4 [Release 9.2 to 11.2]
Information in this document applies to any platform.
This documented is limited in scope to versions below 12.1.

目标:
正确理解sqlnet.ora参数SQLNET.ALLOWED_LOGON_VERSION是怎么工作的。

解决方案:

关于sqlnet.ora参数SQLNET.ALLOWED_LOGON_VERSION以及该参数怎么影响oracle client连接oracle database,存在通常上的误解。

该参数实际上指定了一个client被允许使用的AUTHENTICATION PROTOCOL (for example SHA-1),而不是该client的实际版本(version)
举例:
SQLNET.ALLOWED_LOGON_VERSION=10
即使该参数值暗示oracle database version 10,但是内部检查实际上是针对authentication protocol 'SHA-1'.
Even though the parameter value implies Oracle version 10 the internal check is really against the authentication protocol 'SHA-1'.

在更早的Oracle version中,这是一对一的关系(one-on-one relation),比如:一个特定的Oracle client版本使用特定的authentication protocol。
从Oracle 10g开始,不再是一对一的关系:Oracle 10g和11g 都使用SHA-1 protocol。 Oracle 12g(译者注:原文就是12g)将会使用SHA-2 protocol。

这意味着:通过使用该参数,没有方法防止10g的client连接 并仅仅允许11g的client连接,因为10g和11g使用相同的SHA-1 protocol。这也意味着这两个客户版本是一样安全的---通过单独尝试防止10g client的连接,不会在安全上获益。

该参数在文档上是含混不清的(is unclear),so Doc bug 11845659 - sqlnet.allowed_logon_version needs clearer documentation has been created to fix the description of this parameter.

重要说明:
参数SQLNET.ALLOWED_LOGON_VERSION在Oracle Database 12c上已经被废弃。
该参数被如下两个Oracle Net Service parameter参数取代:
 SQLNET.ALLOWED_LOGON_VERSION_SERVER 
 SQLNET.ALLOWED_LOGON_VERSION_CLIENT
请参考Oracle Database Net Services Reference


### Oracle SQLNET 参数的作用与配置方法 以下是关于用户提到的 Oracle SQLNET 参数的详细解释和配置方法: #### 1. `ALLOWED_LOGON_VERSION_SERVER` - **作用**:此参数用于指定允许客户端使用的最低身份验证协议版本。如果客户端使用的协议版本低于指定值,连接将被拒绝。 - **默认值**:`10`(表示允许使用 10g 或更高版本的身份验证协议)[^1]。 - **配置示例**: ```sqlnet.ora ALLOWED_LOGON_VERSION_SERVER=12 ``` - **注意事项**:确保所有客户端支持所设置的最低版本,否则可能导致连接失败。 #### 2. `ALLOWED_LOGON_VERSION_CLIENT` - **作用**:此参数用于指定客户端允许连接到服务器的最低身份验证协议版本。如果服务器使用的协议版本低于指定值,连接将被拒绝。 - **默认值**:`10`(表示允许连接到 10g 或更高版本的身份验证协议的服务器)。 - **配置示例**: ```sqlnet.ora ALLOWED_LOGON_VERSION_CLIENT=12 ``` - **注意事项**:此参数通常与 `ALLOWED_LOGON_VERSION_SERVER` 配合使用,以确保客户端和服务器之间的兼容性。 #### 3. `EXPIRE_TIME` - **作用**:此参数用于定义客户端在未活动状态下保持连接的时间(以分钟为单位)。如果超过指定时间,客户端将收到一个重新认证请求。 - **默认值**:`0`(表示禁用超时机制)[^1]。 - **配置示例**: ```sqlnet.ora EXPIRE_TIME=15 ``` - **注意事项**:此参数有助于提高安全性,防止长时间未活动的会话被恶意利用。 #### 4. `INBOUND_CONNECT_TIMEOUT` - **作用**:此参数用于定义监听器接受连接请求后等待完成握手的最大时间(以秒为单位)。如果握手未在此时间内完成,连接将被终止。 - **默认值**:`60`(表示 60 秒)[^1]。 - **配置示例**: ```sqlnet.ora INBOUND_CONNECT_TIMEOUT=30 ``` - **注意事项**:此参数可以有效防止拒绝服务攻击(DoS),但可能会影响某些慢速网络环境下的正常连接。 #### 5. `USE_NS_PROBES_FOR_DCD` - **作用**:此参数用于控制是否使用命名服务探测(NS Probes)来检测客户端断开连接的情况。启用此功能可以更快地检测到客户端断开连接并释放资源。 - **默认值**:`OFF`(表示禁用 NS Probes)。 - **配置示例**: ```sqlnet.ora USE_NS_PROBES_FOR_DCD=ON ``` - **注意事项**:启用此功能可能会增加网络流量和 CPU 使用率,因此需要根据实际环境进行权衡。 #### 配置文件路径 上述参数通常配置在 `$ORACLE_HOME/network/admin/sqlnet.ora` 文件中。如果该文件不存在,可以根据需要手动创建。 #### 验证配置 在修改 `sqlnet.ora` 文件后,可以通过以下命令验证监听器是否已加载新的配置: ```bash lsnrctl reload ``` #### 排查连接问题 如果遇到连接问题,可以使用以下方法进行排查: 1. 检查 `sqlnet.ora` 文件中的参数配置是否正确。 2. 使用 `tnsping` 命令测试网络连接性。 3. 查看监听器日志文件(通常位于 `$ORACLE_HOME/network/log/listener.log`)以获取详细错误信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值