网站首页 > 技术文章 正文
概述
当数据库升级到12c后,有些功能的改变可能影响到原应用的可用性,如数据库升级12c后原来的10G或更老的客户端或10g或更老的JDBC 驱动连接数据库时失败,因为安全认证协议不符合,导致ORA-28040错误的发生,提示下面的错误信息:
- ORA-28040: No matching authentication protocol error
- ORA-03134: Connections to this server version are no longer supported
报错截图:
思路:
ORACLE 12C R2中默认的认证协议是12, 即便是sqlnet.ora文件不存在默认值同样生效,12是一种区分大小写密码的认证,是一种新的认证协议,解决办法是创建或在现有的sqlnet.ora文件中增加参数sqlnet.allowed_logon_version_server,在12c以前的版本中解决方法同样也是在sqlnet.ora文件增加参数SQLNET.ALLOWED_LOGON_VERSION, 该参数在12c中以被sqlnet.allowed_logon_version_server 和sqlnet.allowed_logon_version_client替代, 如果在12c中配置了SQLNET.ALLOWED_LOGON_VERSION,会在DB ALERT 中出现“Using deprecated SQLNET.ALLOWED_LOGON_VERSION parameter”提示。
数据库的认证协议并不是数据库软件的版本, 对应的是dba_users.password_versions的值
使用下面的sql确认:
SELECT USERNAME, PASSWORD_VERSIONS FROM DBA_USERS ORDER BY 1;
在11g中的密码版本10g和11g组合, 12c中密码版本是11g, 12c的组合,如果想使用10g的密码版本登录12.2数据库需要修改sqlnet.allowed_logon_version_server 到11或更低的值。sqlnet.allowed_logon_version_server 和sqlnet.allowed_logon_version_client配置的值是最小认证版本的值,如数据库是12c, sqlnet.allowed_logon_version_server=10, 那10g,11g,12c的client都可以访问,包含10g对应的JDBC驱动包。 sqlnet.allowed_logon_version_server是配置在数据库服务器(被访问端)的DB $ORACLE_HOME的sqlnet.ora(不是GI HOME),在12.2版本有效值应该是8,9,10,11,12,12A,当ALLOWED_LOGON_VERSION_SERVER的值设为12时,只有已经应用了关键补丁更新CPUOct2012或更高版本的客户端,或者具有等同更新的11.2.0.3客户端版本才能连接到服务器。
解决办法:
前置条件:已安装Oracle11g客户端,配置好环境变量,用PL/SQL Developer登录数据库
1、在oracle 12C服务器端$oracle_home/network/admin目录下 新建文件sqlnet.ora
SQLNET.ALLOWED_LOGON_VERSION_SERVER=11
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=11
2、在服务器端,管理员身份登录,修改密码
?sqlplus / as sysdba alter session set container=服务名; alter user 服务名 identified by 密码;
注意:配置完服务器端的sqlnet.ora文件后,务必要重新修改密码,否则仍登录失败
觉得有用的朋友多帮忙转发哦!后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注下~
猜你喜欢
- 2024-10-17 ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务
- 2024-10-17 mybatis中oracle模糊查询like concat报错
- 2024-10-17 如何高效进行Oracle巡检?顺序方法缺一不可
- 2024-10-17 详解4个方法--解决Oracle快照过旧问题
- 2024-10-17 Kettle 连接Oracle rac报ORA-12505错误解决方法
- 2024-10-17 centos7.4安装oracle11GR2报错解决办法
- 2024-10-17 centos安装oracle 11.2.0.1报错的处理方法
- 2024-10-17 详解Oracle数据库如何有效处理失效对象
- 2024-10-17 Oracle常见问题 IMPDP导入时报错:IMP-00034
- 2024-10-17 Java中常见的20个错误及解决方案 java: 错误: 不支持发行版本 6
你 发表评论:
欢迎- 588℃几个Oracle空值处理函数 oracle处理null值的函数
- 580℃Oracle分析函数之Lag和Lead()使用
- 569℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 567℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 561℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 553℃【数据统计分析】详解Oracle分组函数之CUBE
- 539℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 535℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端react (48)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- 前端懒加载 (49)
- Oracle RAC (73)
- oracle恢复 (76)
- oracle 删除表 (48)
- oracle 用户名 (74)
- oracle 工具 (55)
- oracle 内存 (50)
- oracle 导出表 (57)
- oracle 中文 (51)
- oracle的函数 (57)
- 前端调试 (52)
- 前端登录页面 (48)
本文暂时没有评论,来添加一个吧(●'◡'●)