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

本文详细解释了SQLNET.ALLOWED_LOGON_VERSION参数的作用原理,并澄清了其与Oracle客户端版本之间的常见误解。此外,还介绍了该参数如何在不同Oracle版本中影响客户端的认证协议。

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

怎么正确的使用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数据库环境中,如果你需要在非GRID用户权限下修改`sqlnet.ora`配置文件,通常这个文件位于`$ORACLE_HOME/network/admin`目录下。首先,你需要登录到有足够权限的系统账号,然后按照以下步骤操作: 1. **检查文件存在与否**: - 使用`ls`命令确认`sqlnet.ora`文件是否存在。如果文件不存在,你可以创建一个新的,命令类似于: ``` vi $ORACLE_HOME/network/admin/sqlnet.ora ``` 或者如果是Linux环境,可以使用`touch`命令创建: ``` touch $ORACLE_HOME/network/admin/sqlnet.ora ``` 2. **打开并编辑文件**: - 使用文本编辑器如vi、nano或gedit打开文件(假设你熟悉vi命令): ``` vi +0 $ORACLE_HOME/network/admin/sqlnet.ora ``` 进入插入模式(`i`)。 3. **找到并注释原有行**: 找到`SQLNET.ALLOWED_LOGON_VERSION=8`这一行,添加前缀`#`将其注释掉,使其变成 `#SQLNET.ALLOWED_LOGON_VERSION=8`。 4. **更新新行**: 如果需要替换该行,删除注释符后输入新的设置,例如允许所有版本登录(如果不需要限制): ``` SQLNET.ALLOWED_LOGON_VERSION=None ``` 或者其他你需要的值。 5. **保存并退出**: 保存更改并退出编辑器,按`:wq`组合键,然后回车确认。 6. **重启服务**: 修改配置后,需要重启Oracle的服务(如listener和数据库实例)以应用新的设置: ``` sudo lsnrctl stop sudo lsnrctl start ``` 或者对应数据库实例的重启命令。 记得在完成这些操作前备份原文件,以防意外。此外,确保你在执行这些操作时拥有足够的管理员权限。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值