初探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 ...
随机推荐
- Erlang C 與M/M/N排隊模型
一何谓排队模型 在现实生活中排队的现象可说是无处不在,如:买票.超商.百货公司…等.顾客总是在揣测"排在哪一个服务台会比较快?"或"到底还要排多久呢?"类似这样 ...
- golang中并发的相关知识
golang中done channel理解:https://segmentfault.com/a/1190000006261218 golang并发模型之使用Context:https://segme ...
- 深入.NET框架。
1.Microsoft.NET框架结构是一个面向网络,支持各种用户终端的开发平台. 2..NET框架的主要内容有CLR,FCL,ADO.NET,XML,ASP.NET,WinForms和WebSeri ...
- IntelliJ IDEA实时模板变量
返回由当前方法返回的值的类型IntelliJ IDEA 实时模板中的模板变量允许用户输入.扩展模板后,变量将作为输入字段显示在编辑器中. IntelliJ IDEA 声明实时模板变量 模板中的变量以下 ...
- 解决 Maven 项目中找不到 jdk 的 tools.jar 文件的办法(多数情况下适用)
<dependency> <groupId>jdk.tools</groupId> <artifactId>jdk.tools</artifact ...
- 超详细Hexo+Github博客搭建小白教程
原文链接:超详细Hexo+Github博客搭建小白教程 去年9月的时候开始搭建了第一个自己的独立博客,到现在也稍微像模像样了.很多小伙伴应该也想过搭建一个自己的博客,网上也有一堆详细教程.我在此稍稍总 ...
- JavaScript平台Platypi悄然登场
几个月前,一个新的JavaScript平台Platypi悄然诞生.它为开发者提供的不仅仅是一套标准的MVC框架而已,由于它是基于TypeScript构建的,因此对开发者而言在熟悉之中透露出与众不同的感 ...
- Linux文件属性与权限
一.在Linux里面,任何一个文件都具有“User,Group,Others”(用户.用户组.其他人)三种身份 二.用户组最有用的功能之一,就是当你在团队开发资源的时候,且每个账号都可以有多个用户组的 ...
- 【CSS】等高布局
1. 负margin: margin-bottom:-3000px; padding-bottom:3000px; 再配合父标签的overflow:hidden属性即可实现高度自动相等的效果. ...
- git(github)常用命令
安装git sudo apt-get install git 显示git版本 git version 显示system属性,对应为/etc/gitconfig文件的内容 git config --sy ...