Oracle 19c的参数sec_case_sensitive_logon与ORA-01017错误

这篇具有很好参考价值的文章主要介绍了Oracle 19c的参数sec_case_sensitive_logon与ORA-01017错误。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Oracle的参数sec_case_sensitive_logon是Oracle 11g开始被引入。这个参数主要是为了控制密码的大小写敏感问题。
sec_case_sensitive_logon=true表示密码区分大小写。
sec_case_sensitive_logon=false表示密码不区分大小写。
从Oracle 12c开始,参数sec_case_sensitive_logon被弃用了。但是为了向下兼容,即使在Oracle 19c中,这个参数依然保留了。这个参数在Oracle 12c(确切的说是12.2以及后续版本)和19c中不能设置为false,因为它和SQLNET.ALLOWED_LOGON_VERSION_SERVER=12或者SQLNET.ALLOWED_LOGON_VERSION_SERVER=12a不兼容。这是因为用于此模式的更安全的密码版本仅支持区分大小写的密码检查。简单点来说,就是这种环境下,这种设置会冲突。官方文档[1]的阐述如下所示:

Note the following implications of setting the value to 12 or 12a:
• A value of FALSE for the SEC_CASE_SENSITIVE_LOGON Oracle instance initialization parameter must not be used because password case insensitivity requires the use of the 10G password version. If the SEC_CASE_SENSITIVE_LOGON Oracle instance initialization parameter is set to FALSE, then user accounts and secure roles become unusable because Exclusive Mode excludes the use of the 10G password version. The SEC_CASE_SENSITIVE_LOGON Oracle instance initialization parameter enables or disables password case sensitivity. However, since Exclusive mode is enabled by default in this release, disabling the password case sensitivity is not supported.
Note:
• The use of the Oracle instance initialization parameter SEC_CASE_SENSITIVE_LOGON is deprecated in favor of setting the SQLNET.ALLOWED_LOGON_VERSION_SERVER parameter to 12 to ensure that passwords are treated in a case-sensitive fashion.
• Disabling password case sensitivity is not supported in Exclusive mode (when SQLNET.ALLOWED_LOGON_VERSION_SERVER is set to 12 or 12a.)
• Releases of OCI clients earlier than Oracle Database 10g cannot authenticate to the Oracle database using password-based authentication.
• If the client uses Oracle Database 10g, then the client will receive an ORA-03134: Connections to this server version are no longer supported error message. To allow the connection, set the SQLNET.ALLOWED_LOGON_VERSION_SERVER value to 8. Ensure the DBA_USERS.PASSWORD_VERSIONS value for the account contains the value 10G. It may be necessary to reset the password for that account.

下面我们来构造一个例子,看看这个参数sec_case_sensitive_logon的影响


SQL> select banner_full from v$version;

BANNER_FULL
----------------------------------------------------------------------------------------------------
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0


1 row selected.

SQLshow parameter sec_case_sensitive_logon;

NAME                                 TYPE        VALUE
-------------------------- ----------- ------------------------------
sec_case_sensitive_logon        boolean     TRUE
SQL> alter user system identified by "system#1245";

User altered.
SQL> SET LINESIZE 1080;
SQL> SET PAGESIZE 36;
SQL> COL USERNAME FOR A24;
SQL> COL ACCOUNT_STATUS FOR A16; 
SQL> COL DEFAULT_TABLESPACE FOR A16;
SQL> COL TEMPORARY_TABLESPACE FOR A10;
SQL> COL PROFILE FOR A10;
SQL> COL LOCK_DATE FOR A20;
SQL> COL EXPIRY_DATE FOR A20;
SQL> COL PASSWORD_VERSIONS FOR A12;
SQL> SELECT USERNAME 
  2       , ACCOUNT_STATUS
  3       , DEFAULT_TABLESPACE
  4       , TEMPORARY_TABLESPACE
  5       , PROFILE
  6       , TO_CHAR(LOCK_DATE,'YYYY-MM-DD HH24:MI:SS')    AS LOCK_DATE
  7       , TO_CHAR(EXPIRY_DATE,'YYYY-MM-DD HH24:MI:SS')  AS EXPIRY_DATE 
  8      , PASSWORD_VERSIONS
  9  FROM DBA_USERS 
 10  WHERE USERNAME=UPPER('&USERNAME')
 11  ORDER BY EXPIRY_DATE;
Enter value for username: system
old  10: WHERE USERNAME=UPPER('&USERNAME')
new  10: WHERE USERNAME=UPPER('system')

USERNAME      ACCOUNT_STATUS   DEFAULT_TABLESPA TEMPORARY_ PROFILE    LOCK_DATE           EXPIRY_DATE          PASSWORD_VER
---------- ---------------- ---------------- ---------- ---------- --------------- -------------------- ------------
SYSTEM             OPEN             SYSTEM           TEMP       DEFAULT                        2023-10-22 17:25:09    11G 12C

SQL> alter system set sec_case_sensitive_logon=false scope=both;

System altered.

SQL>

然后我们在另外一个窗口使用system账号登陆数据库


$ sqlplus system/system#1245

SQL*Plus: Release 19.0.0.0.0 - Production on Tue Apr 25 17:16:28 2023
Version 19.3.0.0.0

Copyright (c) 19822019, Oracle.  All rights reserved.

ERROR:
ORA-01017: invalid username/password; logon denied

如果我们将参数设置sec_case_sensitive_logon为true(这个参数调整后可以立即生效,不用重启),


SQL> show user;
USER is "SYS"
SQL> alter system set sec_case_sensitive_logon=true scope=both;

System altered.

SQL>

然后验证如下所示所示,一切正常,所以如果你遇到ORA-01017这个错误,而且数据库版本为12c/19c,如果你确认你密码是正确的,那么检查一下这个参数。


$sqlplus system/system#1245

SQL*Plus: Release 19.0.0.0.0 - Production on Tue Apr 25 17:20:28 2023
Version 19.3.0.0.0

Copyright (c) 19822019, Oracle.  All rights reserved.

Last Successful login time: Tue Apr 25 2023 09:54:37 +08:00

Connected to:
Oracle Database 19Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

SQL>

下面我们再来测试一下,在参数sec_case_sensitive_logon为false的情况,我们控制密码版本来解决ORA-01017这个错误


SQL> show user;  
USER is "SYS"
SQL> show parameter sec_case_sensitive_logon;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
sec_case_sensitive_logon             boolean     FALSE
SQL>

修改sqlnet.ora这个参数文件,设置下面参数:

SQLNET.ALLOWED_LOGON_VERSION_CLIENT = 10
SQLNET.ALLOWED_LOGON_VERSION_SERVER = 10

修改sqlnet.ora参数文件后,必须重新登陆SQLPlus后(如果使用之前的SQLPlus连接也不会生效),执行下面脚本


SQL> alter user system identified by "system#1245";

User altered.

SQL> SET LINESIZE 1080;
SQL> SET PAGESIZE 36;
SQL> COL USERNAME FOR A16;
SQL> COL ACCOUNT_STATUS FOR A16; 
SQL> COL DEFAULT_TABLESPACE FOR A16;
SQL> COL TEMPORARY_TABLESPACE FOR A10;
SQL> COL PROFILE FOR A10;
SQL> COL LOCK_DATE FOR A20;
SQL> COL EXPIRY_DATE FOR A20;
SQL> COL PASSWORD_VERSIONS FOR A12;
SQL> SELECT USERNAME 
  2       , ACCOUNT_STATUS
  3       , DEFAULT_TABLESPACE
  4       , TEMPORARY_TABLESPACE
  5       , PROFILE
  6       , TO_CHAR(LOCK_DATE,'YYYY-MM-DD HH24:MI:SS')    AS LOCK_DATE
  7       , TO_CHAR(EXPIRY_DATE,'YYYY-MM-DD HH24:MI:SS')  AS EXPIRY_DATE 
  8      , PASSWORD_VERSIONS
  9  FROM DBA_USERS 
 10  WHERE USERNAME=UPPER('&USERNAME')
 11  ORDER BY EXPIRY_DATE;
Enter value for username: system
old  10: WHERE USERNAME=UPPER('&USERNAME')
new  10: WHERE USERNAME=UPPER('system')

USERNAME         ACCOUNT_STATUS   DEFAULT_TABLESPA TEMPORARY_ PROFILE    LOCK_DATE            EXPIRY_DATE          PASSWORD_VER
---------------- ---------------- ---------------- ---------- ---------- -------------------- -------------------- ------------
SYSTEM           OPEN             SYSTEM           TEMP       DEFAULT                         2023-10-23 09:21:27  10G 11G 12C

1 row selected.

SQL>

此时验证system账号登陆,则不会报ORA-01017这个错误了。


$ sqlplus system/system#1245

SQL*Plus: Release 19.0.0.0.0 - Production on Wed Apr 26 09:22:18 2023
Version 19.3.0.0.0

Copyright (c) 19822019, Oracle.  All rights reserved.

Last Successful login time: Tue Apr 25 2023 17:20:29 +08:00

Connected to:
Oracle Database 19Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

SQL>

注意:最好使用其他账号验证测试,这里仅仅是为了偷懒,使用测试环境的system账号测试验证。更多相关信息也可以参考The new Exclusive Mode default for password-based authentication in Oracle 12.2 conflicts with case-insensitive password configurations. All user login fails with ORA-1017 after upgrade to 12.2 (Doc ID 2075401.1)[2]

参考资料

[1]

官方文档1: https://docs.oracle.com/en/database/oracle/oracle-database/19/netrf/parameters-for-the-sqlnet.ora.html#GUID-1FA9D26C-4D97-4D1C-AB47-1EC234D924AA

[2]

Doc ID 2075401.1: https://support.oracle.com/epmos/faces/DocumentDisplay?_afrLoop=249715360691380&id=2075401.1&_afrWindowMode=0&_adf.ctrl-state=1agoeyy4f0_80文章来源地址https://www.toymoban.com/news/detail-425797.html

到了这里,关于Oracle 19c的参数sec_case_sensitive_logon与ORA-01017错误的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Docker安装Oracle19c

    1.下载镜像 到 https://hub.docker.com 搜索合适的镜像,这里选择banglamon/oracle193db:19.3.0-ee。  拉取镜像 docker pull banglamon/oracle193db:19.3.0-ee 这里走了点弯路,这个镜像安装后实例无法正常启动,而且挂载的目录下面没有生成文件,想办法启动以后sqlplus能用,但容器外部连接报ora-1

    2023年04月21日
    浏览(47)
  • Linux中Oracle 19C安装教程

    oracle19C下载地址 Oracle Database 19c Download for Linux x86-64 preinstall-19c 下载地址 Oracle Linux 7 (x86_64) Latest | Oracle, Software. Hardware. Complete. 安装目录 /opt/oracle  磁盘40G  文件系统类型 XFS  用于安装数据库 数据文件目录 /oradata 磁盘100G  文件系统类型 XFS  用于存放数据 具体步骤: (此步

    2024年02月15日
    浏览(46)
  • Oracle 19c补丁升级(Windows)

    补丁包: 百度网盘链接:https://pan.baidu.com/s/1vibWR6dQac807z1ovZvfSw?pwd=k7i2 提取码:k7i2 我们可以看到数据库还处于非归档模式 非归档模式变成归档模式: 关闭数据库,对开始时查询到的数据文件进行物理备份。 顺便可以查看一下当前sqlplus版本是多少。 盘符和家目录根据自己的

    2024年04月16日
    浏览(60)
  • Oracle 19c RAC集群相关日志

    在Oracle数据库中,重做日志记录了数据库发生的所有修改操作,包括数据的插入,更新和删除。 在RAC的环境中,每个实例都有自己的重做日志组(redo log group)。这些日志组通常存储在共享设备上,以确保所有节点上的实例都可以访问到。 多个实例可以并发的写入重做日志,

    2024年04月16日
    浏览(54)
  • docker环境安装 部署 Oracle 19c

    3.1 启动Oracle 容器 3.2 配置Oracle 初始化 3.3 dbvs 连接 到此就安装连接成功了

    2024年02月03日
    浏览(52)
  • oracle 19c环境常见问题汇总

    1、rman备份时会消耗这么多临时表空间 参考MOS: RMAN-08132: Warning: Cannot Update Recovery Area ORA-01652: unable to extend temp segment by 64 in tablespace TEMP (Doc ID 2658437.1) Known RMAN Performance Problems (Doc ID 247611.1) 处理办法:备份时,会话级别将optimizer_mode由ALL_ROWS改成RULE RMAN sql \\\"alter session set optimi

    2024年02月12日
    浏览(55)
  • Oracle 19C 单机环境升级RU(19.3升级至19.12)

    📢📢📢📣📣📣 哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】!😜😜😜 中国DBA联盟(ACDU)成员,目前服务于工业互联网 擅长主流Oracle、MySQL、PG、高斯及GP 运维开发,备份恢复,安装迁移,性能优化、

    2024年02月07日
    浏览(97)
  • WSL 配置 Oracle 19c 客户端

    Windows WSL 登陆后显示如下: 登陆WSL系统上,从Oracle下载几个压缩包 分别解压四个压缩包: 然后全部进入~/instantclient/instantclient_21_11里了 规范一下放置的路径,放到上面解压的路径也是可以的 /etc/profile 添加路径 安装个JDK 测试下SQL*Plus ,可以用连接串访问Oracle 添加tnsnames.ora

    2024年02月11日
    浏览(39)
  • Oracle19c文档 tnsnames.ora (三)

      官网地址:Local Naming Parameters in the tnsnames.ora File 欢迎关注留言,我是收集整理小能手,工具翻译,仅供参考,笔芯笔芯. 6.9连接数据部分 了解如何使用协议地址配置网络连接。 网络对象由协议地址标识。建立连接后,客户端和请求的接收者(侦听器或 Oracle Connection Manag

    2024年01月21日
    浏览(49)
  • Linux 服务器 Oracle19C安装

    原文: 【精选】Oracle | CentOS7安装Oracle19c数据库(RPM包)_oracle-database-preinstall-19c-1.0-1.el7.x86_64.rp_Thorold\\\'s Deer的博客-CSDN博客 第一个软件包 :Oracle Database 19c Download for Linux x86-64 第二个包 :Oracle Linux 7 (x86_64) Latest

    2024年02月08日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包