ORA-01017:用户名/密码无效,登录被拒绝的解决方案(适用于配置用户名都正确的情况下)

.Net程序连接远程oracles数据库时,报出一下错误:ORA-o1017:用户名/密码无效,登录被拒绝,但是我们使用PL/SQL可以正常连接,那么这是怎么回事呢?

首先,我们需要确保程序中的远程地址端口、服务名以及用户名和密码都是正确的,但是还是发现报出ORA-01017错误,例如像笔者这种:

ORA-01017:用户名/密码无效,登录被拒绝的解决方案(适用于配置用户名都正确的情况下)_第1张图片

其次,你是不是很崩溃,那么你接下来会怎么做呢?我就把代码逐语句地进行调试,发现配置文件都能够获取到,说明数据库的配置是正常的,但是登录经常被拒绝,我百思不得其解,这几个月由于不做数据相关的工作,所以无需连接数据库,我就点击继续忽略异常。但当自己真的要进行数据库的连接时,这个问题成了我最大的绊脚石,我在搜索引擎上搜了好多资料,有的说安装你客户端的,安装客户端又安装服务端,最后又觉得是位数不一致,又开始卸载oracle。在自己电脑上尝试了好几天都没能解决这个问题,感觉应该是系统的锅,然后又在家中的电脑尝试,家中的电脑是windows10,但是电脑上缺少的编译文件太多,项目又运行不起来,安装完全又得耗费很长时间,当然我并不希望是系统的问题,因为真的是系统的问题的话,那么我就得换我电脑上的系统,电脑上资料软件特别多,不到迫不得已都不想这么折腾。于是就和这个异常杠上了,一天、二天、三天,终于在昨天晚上浏览网上相关的错误信息时,一种解决方法映入眼帘(说实话是我无知了):FIPS兼容性存在问题!

对,你没有看错,我都没有听说过这是个啥,但是它真的解决了我的问题。那么我们先来看看这东西到底是个啥?

官方定义:FIPS Publication 140-2NIST所发布的针对密码模块的安全需求(Security requirements for cryptographic modules)标准。FIPS 140-2,这些标准和方针由NIST发布,并作为联邦信息处理标准(FIPS)在政府机构广泛采用。

FIPS 是由两个政府主体开发的标准。一个是美国国家标准和在美国境内的技术。另一种是通信安全机构,在加拿大。FIPS 是建议或要求使用 (美国或加拿大) 的联邦政府操作 IT 系统中的标准。

看完还是懵懵懂懂的,那么解决这个问题的办法到底是什么呢?关闭FIPS校验

两个方法:

第一种方法是通用的也是比较直接的(建议使用):修改注册表

在运行框中输入regedit进入注册表,然后找到

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\FipsAlgorithmPolicy

ORA-01017:用户名/密码无效,登录被拒绝的解决方案(适用于配置用户名都正确的情况下)_第2张图片

ORA-01017:用户名/密码无效,登录被拒绝的解决方案(适用于配置用户名都正确的情况下)_第3张图片

设置enabled值为0

第二种方法(适用于.net程序,但笔者未验证,网上找到的方法,读者可自行验证):

.Net程序可以通过再其 .config文件中添加以下配置来关闭 FIPS 校验

<configuration

    <runtime

        <enforceFIPSPolicy enabled="false"/> 

    runtime

configuration

不过笔者还是推荐使用第一种方法进行关闭FIPS校验,修改注册表相当在根本上解决了问题。总之这个错误笔者也是搞了三天三夜才解决,把它记录下来写给大家,屏幕前面的你如果也遇到同样的问题,希望您能够按照我的方法解决您的问题,节省你的时间,觉得这篇文章还不错的,请你素质三连一下,您的点赞是我持续写作的动力。

你可能感兴趣的:(Oracle)