C#连接数据库失败,ORA-28040: No matching authentication protocol

news2024/12/23 9:29:01

C#连接数据库失败

1.原先使用的是oracle11,后来升级数据库到oracle19c,启动程序,数据库连接时报错"ORA-28040: No matching authentication protocol"

        

2.原因分析:最近服务器数据库版本升级到了19c,网上查了主要是说orcale的客户端版本和访问的oracle服务端的版本不一致,那就可能是因为所用的驱动程序与服务器的版本不兼容。找到如下解决方案:

解决方案:官方解释是:

This issue is caused by the default setting for allowed logon version in the 12 database.
Note that the SQLNET.ALLOWED_LOGON_VERSION parameter has been deprecated in 12c.
That parameter has been replaced by these:

SQLNET.ALLOWED_LOGON_VERSION_SERVER=n
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=n

The default setting for the new parameters is 11.  Any client that attempts to connect must 
be at version 11 or higher unless these parameters are explicitly set in the server side sqlnet.ora file.

这段话的意思是,(SQLNET.ALLOWED_LOGON_VERSION)参数在12c中已经被弃用了,被另外两个参数所取代(SQLNET.ALLOWED_LOGON_SERVER,SQLNET.ALLOWED_LOGON_CLIENT)。该参数用来限制可以连接到数据库服务器上的最小客户端版本,12c中这两个新参数的默认值为11,即11g及以上客户端版本可以连接到数据库服务器上。

两个参数区别如下:

SQLNET.ALLOWED_LOGON_VERSION_SERVER:控制可以连接到12c数据库的客户端版本(client --->orace 12c db)

SQLNET.ALLOWED_LOGON_VERSION_CLIENT:控制12c数据库可以连到哪些版本的数据库(orace 12c db  --->其它版本的oracle db),例如:控制通过DB LINK可连接到哪些版本的oracle库。

具体解决办法:

在Oracle用户下,将%ORACLE_HOME%/network/admin/sqlnet.ora文件(如果没有sqlnet.ora文件,那么就创建一个)最后添加如下的行:

SQLNET.ALLOWED_LOGON_VERSION_SERVER=8

SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8

3.于是按以上方法进行操作

重启应用

C:\Users\Administrator>net stop oracleServiceOrcl

OracleServiceORCL 服务正在停止.....................................

OracleServiceORCL 服务已成功停止。

C:\Users\Administrator>net start oracleServiceOrcl

OracleServiceORCL 服务正在启动 ........................

OracleServiceORCL 服务已经启动成功。

4.连接时报另一个错"ORA-1017: invalid username/password; logon denied",看着应该是账号密码错误,确认了一下,账号密码没有错,为啥还会报错呢?

 

查看报错信息:在 Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Object src, String procedure, Boolean bCheck),难道是驱动程序是32位,服务器数据库版本是64位,不匹配。换了几个64位的Oracle.DataAccess.dll,还是报同样错。

 5.既然是账号密码错误,那修改数据库密码试试,原密码为:XXXXXX!,新密码把叹号去掉

SQL> alter user cosem identified by XXXXXX;

用户已更改。

启动程序,居然不报错了。

再把密码改回原来的XXXXXX!,居然也不报错了。

问题算是解决的,但这到底为啥啊?百思不得其解。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/455619.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【技巧】如何以“只读方式”打开PPT文稿?附两个方法

以“只读方式”打开PPT文稿,可以防止意外修改文稿。今天小编就来介绍一下以“只读方式”打开PPT的两种方法。 方法一:无密码的“只读”模式 1、打开PowerPoint程序,点击菜单中的【文件】选项,再依次点击【打开】-【浏览】。接着在…

FL Studio水果萝卜编曲中文版软件V21版本详细功能介绍

FL Studio十分出色的数字音乐工作软件,其功能大致和Cubase相仿,FL Studio拥有自带的音频插件,并且随着软件的不断更新,使得FL studio不仅仅能够制作电子音乐,同时也能够承担古典、流行等风格的音乐。同时,F…

MySQL:创建数据库,数据表,主键和外键

目录 前言: 安装MySQL: 打开MySQL: 创建数据库: 查看已建数据库: 查看数据库引擎: 创建数据表: 主键约束: 单字段主键: 多字段联合主键: 外键约束&…

《编码——隐藏在计算机软硬件背后的语言》精炼——第11章(门)

“The only source of knowledge is experience.” - Albert Einstein 引言 编码是一种处理并表达信息的方式,它包括摩斯电码、盲文、二进制语言等等,当然作为计算机类的经典书籍,这本书简述了计算机中以二进制数为基础的编码方式&#xff0…

5自由度并联机械臂实现搬运功能

1. 功能说明 本文示例将实现R306样机5自由度并联机械臂搬运牛奶到指定地点的功能。该机械臂由1个5自由度并联机械臂和1个单轴丝杠平台构成,机械臂通过并联的方式同时控制同一个端点的运动。其驱动系统采用大扭矩舵机和小扭矩舵机、执行末端为夹持机构。 2. 并联机械…

SEO优化中的外链与反链是什么意思?它们之间有什么区别?

在SEO优化中,外链和反链是两个非常重要的概念。虽然它们听起来很相似,但实际上却有着很大的区别。那么,什么是外链和反链?它们之间有什么区别呢?本文将为您详细介绍。 一、什么是外链 外链,也被称为入站链…

C++---区间DP---环形石子合并(每日一道算法2023.4.24)

注意事项: 本题是"区间dp—石子合并"的扩展题,dp思路完全一样,就不多详细讲了,可以去那篇文章看,这题主要讲一下如何处理环形。 题目: 将 n 堆石子绕圆形操场排放,现要将石子有序地合…

ES的索引结构与算法解析

作者:京东物流 李洪吉 提到ES,大多数爱好者想到的都是搜索引擎,但是明确一点,ES不等同于搜索引擎。不管是谷歌、百度、必应、搜狗为代表的自然语言处理(NLP)、爬虫、网页处理、大数据处理的全文搜索引擎,还是有明确搜…

DAY03_循环语句

1:for循环结构 来,继续啊,下面我们来学习循环结构语句,循环结构有三种语句,分别是: for循环 while循环 do…while循环 这三种循环可以做相同的事情,当然它们也有小的区别,至于它…

【LeetCode】322. 零钱兑换

322. 零钱兑换(中等) 思路 由于题目提到 「每种硬币的数量是无限的」,所以这道题本质上完全背包问题,我直接使用了空间压缩的写法。dp[j] 表示当前区间在 [0, i]的硬币可以表示成 j 的最小数量。注意,这里把 dp数组初始…

windows安装sqli-labs靶场,两种方式

1、安装phpstudy 官网打不开了,下载地址在这儿https://download.csdn.net/download/weixin_59679023/87711536 双击安装 点自定义安装,选择安装目录,注意目录不要有空格和中文 安装完成启动红框内的两个服务 2、安装sqli靶场 这个包支持ph…

4.23学习周报

文章目录 前言文献阅读摘要简介方法结果结论 时间序列预测学习总结 前言 本周阅读文献《A novel hybrid model for water quality prediction based on synchrosqueezed wavelet transform technique and improved long short-term memory》,文献主要提出一种新型混…

动力节点Springsecurity笔记06-13基于数据库的方法授权

6 密码处理 6.1 为什么要加密? csdn 密码泄露事件 泄露事件经过:https://www.williamlong.info/archives/2933.html 泄露数据分析:https://blog.csdn.net/crazyhacking/article/details/10443849 6.2加密方案 密码加密一般使用散列函数&a…

react-9 函数式写法rsc,配合HOOKS基础钩子函数

函数组件和类组件区别: 1.函数组件中没有this 2.函数组件无需继承 3.函数组件默认没有状态,想要使用组件状态必须通过 HOOK 函数引入 4.函数组件默认没有生命周期函数 5.函数组件的渲染,只需要一次函数调用即可 useState :用…

【react全家桶学习】react中JSX语法规则

目录 JSX的定义 XML的含义 JSX的语法规则 (1)定义类名,用className而不是class (2)如何使用内联样式设置样式 (3)虚拟dom必须只有一个根标签 (4)在react组件中使用变…

谷歌将发布全新搜索引擎,你期待吗?

Google一身自带AI属性的新搜索最首要的目标并非急于取代传统搜索引擎,或者说彻底打败ChatGPT,而是能够用全新的产品说服用户,变得与竞争对手同样“强大、能力出众以及顺应AI潮流”。 对于Google而言,搜索就是命脉。Google每年的收…

Java基础——多线程创建

(1)什么是线程? 线程(thread)是一个程序内部的一条执行路径。程序中只有一条执行路径,那么这个程序就是单线程的程序。 (2)多线程是什么? 多线程是指从软硬件上实现多执行流程的技术。 &…

Python入门教程+项目实战-10.5节: 程序实战-冒泡排序算法

目录 10.5.1 排序算法简介 10.5.2 冒泡排序算法 10.5.3 系统学习python 10.5.1 排序算法简介 所谓排序,是指将数据集合中的元素按从小到大的顺序进行排列,或按从大到小的顺序进行排列。前者称为升序排序,后者称为降序排序。在数据结构与算…

jenkins自动化部署配置

文章目录 1. jenkins 插件安装2. 配置2.1 全局工具配置2.2 全局配置2.2.1 gitee 配置 3. 创建任务添加gitee ssh jenkins 开机自启动 1. jenkins 插件安装 ant Build Failure AnalyzerBuild Monitor ViewBuild Timeout dockerEmail Extension Plugin giteegithubgradle javama…

【11 EL表达式JSTL 学习笔记 】

EL表达式 学习笔记 1. EL表达式介绍2. EL表达式的基本使用3. EL 表达式获取数据4. EL注意事项5. EL表达式运算符关系运算符逻辑运算符empty&三元运算符 6. EL表达式细节7. EL表达式11个隐式对象8. JSTL8.1 JSTL的基本使用 1. EL表达式介绍 简化了 java代码块和jsp表达式的…