初探12C碰到的那些“坑”
一个昏天黑地的早上,刚搭建的系统忽然遭遇严重数据库问题。于是,主要人物闪亮登场了,他们分别是友商人员小灰和DBA小Y。
事情的开始,小Y接到小灰紧急救助电话...
小灰:小Y,我是友商的小灰,刚搭建的XX系统数据库连接不上,请多帮忙。
小Y:好,我看看。
放下电话后,小Y发现不对劲……
小Y:小灰,我能连得上哦。你再试试看。
小灰:好,我连连看。
5分钟过去了……
小Y:小灰,怎么样?
小灰:奇怪,我怎么连不上哩?
小Y:用什么版本的客户端?有无报错提示信息?
小灰:我用的是11g的客户端。连接的时候有28040的报错。
小Y:好,我看看。
放下电话后,小Y查了一下28040的报错究竟是什么鬼,以下是官方对这报错的解释:
$ oerr ora 28040
28040, 0000, "No matching authentication protocol"
// *Cause: There was no acceptable authentication protocol for
// either client or server.
// *Action: The administrator should set the values of the
// SQLNET.ALLOWED_LOGON_VERSION_SERVER and
// SQLNET.ALLOWED_LOGON_VERSION_CLIENT parameters, on both the
// client and on the server, to values that match the minimum
// version software supported in the system.
// This error is also raised when the client is authenticating to
// a user account which was created without a verifier suitable for
// the client software version. In this situation, that account's
// password must be reset, in order for the required verifier to
// be generated and allow authentication to proceed successfully.
知道处理方法后,小Y在<GRID_HOME>/network/admin/sqlnet.ora中增加了以下两行代码并reload监听:
SQLNET.ALLOWED_LOGON_VERSION_SERVER=8
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8
就这样,10分钟过去了……
小Y:小灰,我改了些配置,现在应该能连得上了,你再试试看。
小灰:好,我连连看。
5分钟过去了……
小灰:小Y,能连得上了。
小Y:好的,有问题再联系我。
又过去了10分钟……
小灰:小Y,还有部分人连不上……
小Y:用什么版本的客户端?有无报错提示信息?
小灰:11g的客户端,有01017的报错,但确认密码是对的。
小Y:是不是用简易客户端?
小灰:是哒。
小Y:重新安装一下客户端,不要用简易客户端,要用安装版的。
小灰:好,我试试。
过去了30分钟……
小Y:小灰,怎么样了?
小灰:可以连得上了。
过去了1小时……
小灰:小Y,又有部分人连不上……这次是10g的客户端,有01017的报错,但确认密码是对的。
小Y:好,我看看。
放下电话后,小Y纳闷了……是不是有地方配置漏改了?看了一下,dba_users视图,发现了一个新增的列PASSWORD_VERSIONS,以下是该列的官方文档说明:

默认情况下,password_versions的值为11g 12c。然后小Y把用户密码重置了一下,password_versions的值为10g 11g 12c。
小Y:小灰,现在可以了,再试试。
小灰:好。
5分钟过去了,问题终于解决……
小灰:小Y,可以了。
小Y:好哒。
总结:
1. 12c通过sqlnet.ora通过参数SQLNET.ALLOWED_LOGON_VERSION、SQLNET.ALLOWED_LOGON_VERSION_SERVER和SQLNET.ALLOWED_LOGON_VERSION_CLIENT三个参数对连接orcale服务器端的数据库软件版本进行管控。

2. oracle通过sqlnet文件中的参数对用户密码的校验算法进行优化。如:
SELECT USERNAME,PASSWORD_VERSIONS FROM DBA_USERS;
USERNAME PASSWORD_VERSIONS
------------------------------ -----------------
JONES 10G 11G 12C
ADAMS 10G 11G
CLARK 10G 11G
PRESTON 11G
BLAKE 10G
PASSWORD_VERSIONS列表示的为oracle数据库用户的密码算法,其中,10g代表10g以及更早版本的case-insensitive算法,11g代表基于SHA-1算法,12c代表基于SHA-2和SHA-512算法。
通过上述例子说明:
· 用户jones: 该密码在Oracle Database 12c release 12.1版本且在SQLNET.ALLOWED_LOGON_VERSION_SERVER = 8 的情况下创建用户或者修改密码。
· 用户 adams 和 clark: 这两个用户在10g的客户端进行创建,在11g的客户端下重置过密码,且SQLNET.ALLOWED_LOGON_VERSION_SERVER = 8 。
· 用户 preston: 该用户在 Exclusive 模式下通过11g客户端进行创建,且SQLNET.ALLOWED_LOGON_VERSION = 12。
· 用户 blake: 该用户一直是用oracle10g客户端创建、重置密码等操作。
3. 在各大客户中,由于系统架构复杂,涉及的合作伙伴众多,所牵涉的问题较多,为减少各种各样的问题,提高系统的稳壮性、兼容性,建议在安装完oracle 12C服务器端后,对sqlnet.ora文件增加以下参数
SQLNET.ALLOWED_LOGON_VERSION=8
SQLNET.ALLOWED_LOGON_VERSION_SERVER=8
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8
初探12C碰到的那些“坑”的更多相关文章
- 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(五)——实现注册功能
使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(一)——创建应用 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(二)——使用蓝图功能进行模块化 使用 Flask 框架写用 ...
- 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(四)——对 run.py 的调整
使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(一)——创建应用 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(二)——使用蓝图功能进行模块化 使用 Flask 框架写用 ...
- 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(一)——创建应用
使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(一)——创建应用 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(二)——使用蓝图功能进行模块化 使用 Flask 框架写用 ...
- 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(二)——使用蓝图功能进行模块化
使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(一)——创建应用 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(二)——使用蓝图功能进行模块化 使用 Flask 框架写用 ...
- 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(三)——使用Flask-Login库实现登录功能
使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(一)——创建应用 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(二)——使用蓝图功能进行模块化 使用 Flask 框架写用 ...
- 聊聊用Selenium做自动化碰到了哪些坑?都是怎么解决的?
本周我们的讨论话题是关于Selenium自动化: 话题:聊聊用Selenium做自动化碰到了哪些坑?都是怎么解决的? 话题描述:Selenium是大家做UI自动化用到的主流框架,在平时写脚本的过程中, ...
- JDBC 连接 MySQL 时碰到的小坑
最近从MS SQL Server换到了MySQL,已经是8.11版本了,安装的时候似乎还用了新的身份认证方式之类的,连接过程中也是磕磕绊绊,碰到很多奇奇怪怪的问题,在此记录下来. 驱动加载: 以前使用 ...
- babel/core 6.x升级到7.x要碰到的一些坑
刚学习react.js没多久,碰到各种坑.就比如这个问题,弄了我3个小时,终于解决了.其实就是一个小问题. 报错信息: Error: Cannot find module '@babel/core' ...
- 项目分享一:在项目中使用 IScroll 所碰到的那些坑
最近做了个 WEB APP 项目,用到了大名鼎鼎的 IScroll,滚动的效果的确很赞,但是坑也是特别多,下面总结一下,希望自后来者有帮助. 该项目现已开源在 github 上,https://git ...
随机推荐
- 标准I/O库(详解)(Standard I/O Library)
文章转自:https://www.cnblogs.com/kingcat/archive/2012/05/09/2491847.html 自己在学习中,对此原文的基础之上进行补充. 什么是缓冲区 缓冲 ...
- stm32 输入捕获学习(二)
(本文参考STM32 开发指南 V1.3 -- ALIENTEK 战舰 STM32 开发板库函数教程 ) 1. 实验设计 我们用 TIM5 的通道 1(PA0)来做输入捕获,捕获 PA0 上高电 ...
- 在线编辑word文档代码
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...
- .net程序集标示与绑定上下文
之前在实现Autofac扫描自加载程序集实现IOC时候遇到程序集依赖的问题,在网上搜了一下,没有发现中文世界的相关描述.随取google拿了几篇文章,翻译&自己的理解,之后会写一些小demo, ...
- 命令“mkdir "xxx" xcopy "xxx" "xxx" /S /E /C /Y”已退出,代码为 9009。
前几天公司来了个新同事,使用的VS2013,但我们的所有项目都是使用VS2012创建的,我想用13打开应该没有什么问题.昨天新同事修改完代码提交后,我获取完成后无法编译成功,提示: 错误 3 命令“m ...
- vue多个组件的过渡
<transition name="component-fade" mode="out-in"> <component v-bind:is=& ...
- Smile with face. Smile with mind.
Smile with face. Smile with mind.微笑不仅是挂在脸上的,更是发自心底的.
- win10 安装mysql zip 压缩包版
从官网下载zip https://www.mysql.com/downloads/ 解压 D:\devtool\mysql-5.7.17-winx64\ 将 D:\devtool\mysql--wi ...
- CentOS 7.0 各版本下载说明 新增Everything版
CentOS-7.0-1406有很多可供选择的版本,对初学者来说,不知如何选择,下面做简单的介绍: CentOS-7.0-1406-x86_64-DVD.iso 标准安装版,一般下载这个就可以了 Ce ...
- centos6.5_64bit_tomcat7开机自启
一.创建tomcat脚本 vim /etc/init.d/tomcat 将下面的内容拷到脚本里面 =================================================== ...