初探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 ...
随机推荐
- maven实战迷你版记录
1. ~/.m2 文件 默认情况下,该文件夹下放置了 Maven 本地 仓库.m2/repository.所有的 Maven 构件(artifact)都被存储到该仓库中,以方便重用. 默认情况下,~ ...
- fetch技术
Snandy If you cannot hear the sound of the genuine in you, you will all of your life spend your days ...
- WCF:无法满足对安全令牌的请求,因为身份验证失败。
服务端和客户端如果有认证的话的这样: <wsHttpBinding> <binding name="WSHttpBinding_IService1" closeT ...
- 特殊的流程控制语句break continue exit
break语句可以结束当前的for.foreach.while.do-while.或者switch的执行. for($i=1; $i<10; $i++) { if($i == 5) { echo ...
- XHML教会我的一些东西-4
今天把“河畔林语”的项目看完了.我自己也试着做了一下,这算是自己写的第一个项目吧.虽然全部是模仿,而且经常一边看写好的一边自己写,还是自己不够成熟呀. 不知道为什么,我用我的电脑进http://www ...
- The twentieth day
Knowledge is power 知识就是力量 You're unique,nothing can replace you.你举世无双,无人可以替代.
- Oracle数据导入导出imp/exp命令 10g以上expdp/impdp命令
Oracle数据导入导出imp/exp就相当于oracle数据还原与备份.exp命令可以把数据从远程数据库服务器导出到本地的dmp文件,imp命令可以把dmp文件从本地导入到远处的数据库服务器中. 利 ...
- CAD鼠标移动到对象时显示对象内容
//定义事件 Editor ed = doc.Editor; ed.PointMonitor += new PointMonitorEventHandler(ed_Po ...
- 安装BI Publisher Desktop报错:“Template Builder Installer Failed:Unexpected Error”
原因:office的版本未安装正确,应该安装X86版本的,如果是X64的会出现,重新安装X86版本的office后解决问题.
- JUnit4 学习笔记
一.环境搭建: 1.需要用的包: JUnit4.7:http://files.cnblogs.com/files/ShawnYang/junit4.7.zip hamcrest-1.2:http:// ...