sec_case_sensitive_logon

1. 背景

一项目现场ogg割接oracle由aix 11.2.0.4到linux 11.2.0.4之后,引发程序连接oracle ORA-01017: invalid username/password; logon denied,但是用户名密码配置割接前后并无改动

经测试,相同的用户名密码,本地sqlplus可以连接,程序无法连接,怀疑是连接工具会自动将密码转为大写/小写,

可以将参数sec_case_sensitive_logon设置为false来避免ORA-01017错

后检查aix原库发现sec_case_sensitive_logon是false,更加证实了猜想


2. sec_case_sensitive_logon介绍

11g之前建立的用户,密码不区分大小写,即使用双引号强制

image.png

11g之后出现了sec_case_sensitive_logon参数,可以设置密码大小写是否忽略(true:大小写敏感,false:大小写不敏感)

默认为true

image.png

改为false测试

alter system set sec_case_sensitive_logon=false scope=both;

image.png

 

sec_case_sensitive_logon=false时数据库中存储的密码是否区分大小写?

在false时重置密码,改为true时发现存储密码按实际的大小写字符存储

image.png

 

3. 10g升级到11g

如果10g dbua或者迁移到11g,如果程序端设置的密码没有明确区分大小写,但是默认11g是区分大小写的,故可以将alter system set sec_case_sensitive_logon=false scope=both;来解决

11g还引入了密码延迟验证的特性

如果一个用户用错误的密码试图连接oracle,会导致验证的时间越来越长

image.png

从第三次密码错误的登录开始,每次延迟时间开始变成2秒、3秒并一次递增。既是这时提供正确的密码登录,会话也会延迟N秒,然后进行验证。不过一旦验证成功,会将失败计数清零,后续的错误登录会重新计数

如果同时存在两个会话,则很快延迟验证时间就会达到10秒、20秒的级别。如果同时大量的连接采用错误的密码,基本上这个用户的登录就会被完全HANG住

可以如下设置关闭密码延迟特性

ALTER SYSTEM SET EVENT = '28401 TRACE NAME CONTEXT FOREVER, LEVEL 1' SCOPE = SPFILE

或者也可以设置用户的密码PASSWORD_LOCK_TIME来锁定用户

 

4. 18c和sec_case_sensitive_logon

18c以后已经弃用了sec_case_sensitive_logon,但是为了向前兼容,还是保留了此参数

并且oracle建议保留sec_case_sensitive_logon的默认值true,不要修改

如果使用dbua升级,oracle建议检查此参数,并确保它是true

 

sharding环境修改sec_case_sensitive_logon为false,导致gsm sync database时报ORA-01017错误

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值