前几日通过 ADG 的switchover 模式迁移了一套 19c 的 RAC 环境,迁移后一切正常,主备库均可正常提供服务,备库正常同步,不过为了节省资源,又是测试环境,则将其备库关机回收资源了,大约一周后的时间,有开发的小伙伴找来说他的程序执行报错了,扔来了如下的错误代码。ORA-28040:No matching authentication protocol 没有匹配的认证协议。
系统Oracle版本从原来的Oracle 11g 升级到 Oracle 19c后,PLSQL客户端连接报错:
在Oracle中,造成“ORA-28040: No matching authentication protocol”错误的原因是什么?
1、Oracle JDBC驱动版本查看方式(Oracle JDBC驱动程序随Oracle数据库服务器一起提供)(用户:Oracle”);
这两天出差,出发前开发同学提了一个问题,开会间隙,有了一些想法,java代码中和Oracle中均有可能出现此错误,记录于此。
原因:端口号冲突 解决: (1)方法一 使用命令netstat -ano找到占据端口8005的进程号,再用命令taskkill /pid xxxx杀死对应进程xxxx。 (2)方法二 打开任务管理器,看看开发工具eclipse下是否启动了两个相同进程,直接结束进程,重启eclipse和项目。 (3)方法三 修改Tomcat配置文件server.xml中的端口号。 修改8080端口为其它端口号。
项目开发的时候遇到一个错误: org.springframework.jdbc.BadSqlGrammarException: ### Error querying database. Cause: java.sql.SQLException: ORA-06550: 第 8 行, 第 4 列: PLS-00103: 出现符号 ";"在需要下列之一时: . ( ) , * @ % & = - + < / > at in is mod remainder not rem => <> or
JAVA的数据获取方式: 1 直接声明变量并赋值. 2 Scanner类控制台输入 3 IO流(将硬盘存储中的数据读取到java中) 4 scoket+io 5 从数据库中获取 JDBC的概念: 问题: java和数据库之间的沟通不一致 解决: 数据库厂商对外提供java支持的接口 使用: 创建类实现接口(操作数据库) 数据库厂商对外提供了数据库操作的驱动包.(翻译官) 结论: JDBC其实就是数据厂商对外提供的能够对自己的数据进行操作的驱动包也就是jar文件.
JDBC的基本使用流程: 1 导入jar包: 导入ojdbc6.jar,在项目上右键 builder path–>add to builder path. 2 加载驱动 Class.forName(“oracle.jdbc.driver.OracleDriver”); 作用:初始化加载jdbc类到java虚拟机. 注意: ojdbc6.jar使用此包该句可以省略不写. 3 获取数据库连接对象 Connection conn =DriverMananger.getConnection(“url”,“username”,“password”); 参数含义: url:表示要连接的数据地址 username:数据库的用户名 password:数据库的密码 作用: 连接到指定的数据库并返回连接对象. 4 创建sql命令对象 Statement stmt=conn.createStatement(); 作用: 编译,发送SQL命令 5 创建sql命令 String sql=“insert into dept values(92,’’,’’)”; 6 执行sql命令: 新增sql命令: int i=stmt.executeUpdate(sql); 返回值: 返回值如果小于0,表示未执行成功 返回值如果大于0,表示成功修改的数据量. 7 关闭资源
数据库驱动类:Oracle: ojdbc6.jar MySQL: mysql-connector-java-5.1.7-bin.jar
总结一下昨晚在数据迁移前线奋战碰到的一些问题,虽然总体来说是按照预定的计划完成,并且提前完成,但是哪怕一丁点儿的操作都会导致一些严重的影响。 总体来说,需要做的事情就是把核心业务服务器从一个机房迁移到另外一个机房,这个过程中因为环境的重要性和硬件软件的情况,大体分为了下面三个方向的技术方案。 迁移部分核心业务从Solaris到X86平台,同时需要升级数据库版本 迁移x86平台的部分核心业务,这个方向操作相对简单,基本就是主备切换 整合部分X86平台的环境,比如数据库a,b整合后就是一个数据库a
大约3亿条记录 SQL> SELECT count(*) FROM INFO; COUNT(*) ---------- 294239674 SQL> 导入Hive [root@node1 sqoop-1.4.7]# bin/sqoop import --connect jdbc:oracle:thin:@node1:1521:ORA --username test --password test --table info --hive-import --target-dir temp_table
java.sql.SQLException: Io 异常: Connection reset 大意看起来应该是连接问题,网上查了一下,说是当数据库连接池中的连接被创建而长时间不使用的情况下,该连接会自动回收并失效,但客户端并不知道,在进行数据库操作时仍然使用的是无效的数据库连接,这样,就导致客户端程序报“java.sql.SQLException: Io 异常: Connection reset” 或 “java.sql.SQLException 关闭的连接” 异常。
java.sql.SQLException: ORA-00928: 缺失 SELECT 关键字
目前线上有一套环境是10gR2的,采用了一主两备的架构。在其中一个备库上每天凌晨会开放一个窗口运行一些批量的查询,目前使用dg broker会在指定的时间把备库置为read-only,查询完毕之后修改为online状态。 但是近几天开发的同事突然找到我说,最近几天开始批量查询会频频报错,希望我帮忙查看一下。 语句运行报错,听起来原因应该很简单吧,最大的可能就是备库没有打开,或者是ddl,dml语句之类的。但是看到错误日志,让我着实有些奇怪。 错误日志如下,可以看到是一条查询语句。 [2016.03.06 0
java.sql.SQLException: ORA-01008: 并非所有变量都已绑定
在写关联表的实体类时,用测试代码去运行,出现 16:00:30,817 ERROR JDBCExceptionReporter:72 – ORA-00918: 未明确定义列
今天早上收到邮件,说有一个很紧急的问题,是关于sequence的。 错误日志里面还有ORA的错误 ----- ... 7 more Caused by: java.sql.SQLException: ORA-08004: sequence TRX_1SQ.NEXTVAL exceeds MAXVALUE and cannot be instantiated 猛一看就是sequence的值越界了。 导致这个问题的原因主要有两个: 1)设置的maxvalue值过小了。 2)sequence
温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。 Fayson的github: https://github.com/fayson/cdhproject 提示:代码块部分可以左右滑动查看噢 1.文档编写目的 ---- 在前面的文章Fayson介绍了关于StreamSets的一些文章,参考《如何在CDH中安装和使用StreamSets》、《如何使用StreamSets从MySQL增量更新数据到Hive》、《如何使用StreamSets实现MySQL中变化数据实时写入K
前几天开发的同事反馈一个问题,说前台系统报出了ORA错误,希望我们能看看是什么原因。 java.sql.SQLException: ORA-01427: single-row subquery returns more than one row 我一看到这个错误的第一反应就是应该是sql语句的问题,然后开发同事反馈这个程序已经用了蛮长时间了,现在突然报出了错误。 简单沟通之后,我得到了对应的sql语句。 SELECT ID, PROJECTNAME, GRAPH, TYPE, PERSON, RECORDT
今天看线上一直报 java.sql.SQLException: interrupt 因为第一次遇到也在网上找了一些资料,其中网上的大部分内容如下:
在本文中,我们将通过一个简单的 JDBC 登录案例来详细介绍如何使用 Java 数据库连接(JDBC)来连接数据库、进行用户身份验证等操作。这个案例将适用于数据库初学者,我们将从头开始构建一个简单的登录系统。
当前session处在活动状态,如果此时ORACLE的package在另外一个session中被重新编译,那么当前session再执行其中的procedure就会报包失效,异常STACK见下。
已解决com.mysql.cj.jdbc.exceptions.CommunicationsException异常
用户多次密码输入错误达到一定值就会被锁定。 -- 用户锁定方法 alter user 数据库名 account lock; -- 用户解锁方法 alter user 数据库名 account unlock; 当锁定时连接数据库就会报如下错误。 An error occurred while establishing the connection: Long Message: ORA-28000: the account is locked Details: Type: java.sql.SQLEx
俩天利用空闲时间把书城项目的第二个阶段给弄了,过程很曲折,但最后还是搞好了,尽管看上去有点破碎,但总归是好的,下面利用外卖没到的时间总结一波,纪念下第一次搞这么大的项目!!!
在开发过程中,我们有时会遇到数据库存储数据时出现字符编码问题的情况。其中一个常见的错误是Caused by: java.sql.SQLException: Incorrect string value,并且提到了具体的列名和行号。本文将详细介绍这个错误的原因和解决方案。
在使用PreparedStatement的时候,可以很好地避免像Statement的sql注入问题,但是在这里使用PreparedStatement对象和使用Statement对象来执行sql语句有一定的区别。 PreparedStatement的对象通过: PreparedStatement p = con.preparedStatement(str); 来执行sql语句,其中str是sql语句字符串,所以在后面的PreparedStatement对象调用executeUpdate方法的时候不能再将参数写到括号中了,如p.executeUpdate(str)这种写法就会导致出现“java.sql.SQLException: ORA-01008: 并非所有变量都已绑定的解决方法”这个错误,将p.executeUpdate(str)改为p.executeUpdate()就可以解决问题啦。
上周日,也就是9月1日,收到了一则用户的故障请求,系统中一个存储过程出错,紧急安排工程师响应处理,解决了故障。 我们经历过很多类似的故障,在月初、月尾、年初、年尾,在所有可能的边界处都可能存在程序、流程考虑不周之处,就可能在这些时间点上出现问题,所以DBA甚至程序员们都应该注意这样的细节。 客户系统出现的异常报错是:Java 异常错误终止 java.sql.SQLException: Permission denied,ORA-06512: 在 "SYS.UPFILE"。 经过工程师的检查,存储过程没有问题
当多次执行相同的SQL语句,然后以不同的顺序获取结果集时,可能会出现此错误。这是因为Oracle数据库为每个结果集维护了一个预期的获取顺序(fetch sequence),当实际获取结果的过程与预期的顺序不一致时,就会抛出此错误。
java.sql.SQLException: ORA-01000: 超出打开游标的最大数 问题在一个大数据量的嵌套循环下 close() 关闭 createStatement() 根本无效,即使把执行过程封装在类里,而用循环来调用类也会有问题。
在本文中,我总结了开发过程中最为常见的几种 MySQL 抛出的异常以及如何解决,包括高版本驱动的问题、时区配置问题、SSL 连接问题等,是一篇经验总结贴,于我个人而言,这一篇足以解决目前项目中所有遇到的 MySQL 问题。同时也希望本文能对 MySQL 数据库初学者有一定的引导入门作用。
根目录下: dbpool.properties 代码: driverClassName=oracle.jdbc.driver.OracleDriver username=scott password=tiger url=jdbc:oracle:thin:@192.168.1.20:1521:ora9 poolSize=10 ConnectionPool.java 代码: package webbook.util; import java.io.FileInputStream; import java.sq
从开始使用12c PDB整合环境以来,发现确实不错,原来11g中整合的难题在这里得到了解决。 目前存在多套的测试环境,之前整合了一批,基本是采用整合schema的方式,但是后来发现这种方式局限性太大,
要使用java程序连接SQLite,并与SQLite进行数据存取操作,必须在系统上设置SQLite JDBC驱动程序和安装Java JDK。按照以下步骤进行:
1 import java.io.InputStream; 2 import java.io.Reader; 3 import java.net.URL; 4 import java.sql.Connection; 5 import java.sql.NClob; 6 import java.sql.ParameterMetaData; 7 import java.sql.PreparedStatement; 8 import java.sql.ResultS
Java中执行sql语句总是报这个错误,在网上查了一些原因,都说是因为sql语句标点符号有错误,检查了很长时间没有找到符号错误。把sql拿到PL/SQL中执行可以通过。最后发现在result =pstm.executeUpdate(sql); 这句中多加了sql ,在执行时是不需要传sql的,找了半天的错误,原来在这里。
Oracle 数据库 sql 连接报错: java.sql.SQLException: Listener refused the connection with the following error: ORA-12516, TNS:listener could not find available handler with matching protocol stack!
String driver = "com.mysql.cj.jdbc.Driver";
有一个环境是10gR2,一主两备,因为10g的备库还不是active,所以有一些查询的需求的时候,我们还是会打开相应的窗口时间。 开发的同学需要做一个大查询,数据只能全表,而且还有order by,势必会消耗大量的temp空间,这个时候充分利用备库就是好一些,有一个备库平时也没有用过,今天就用这个备库来完成查询需求。 但是过了一会,开发同事说,查询失败了。让我看看什么原因。 开发同学提供的日志为: 2015-11-20 10:48:05,---exception: ---- StatementCallbac
在windosw虚拟机server2012上安装Oracle数据库后,远程连接失败,报 java.sql.SQLException: The Network Adapter could not establish the connection 错误,然后尝试解决。
sql查询结果无法转换成Java的Date类型,这里是月份无法转换,因为数据库的时间是:
这篇文章是我之前写的博文 数据库方面的面试技巧,如何从建表方面展示自己能力 和 面试技巧,如何通过索引说数据库优化能力,内容来自Java web轻量级开发面试教程是一个系列的,通过面试官的视角和大家分享在数据库方面的面试经验,这些内容都来摘自 java web轻量级开发面试教程。 之前的两篇文章点击量都还行,也感谢管理员放入首页,这鼓舞到了我,也让我更有信心和大家分享我的经验。 我们知道,最终我们是要通过jdbc来连接并访问数据库的,也就是说,最近面试官一定会通
将executeUpdate(sql)或executeQuery(sql)括号中的sql删除。
JDBC:Java DataBase Connectivity(java数据库连接) SUN公司为了简化、统一对数据库的操作,定义了一套Java操作数据库的规范,称之为JDBC。 jdbc是一套标准,它是由一些接口与类组成的。 涉及到的类与接口: java.sql 类:DriverManger 接口 Connection Statement ResultSet PreparedStatement CallableStatement(它是用于调
(1)注册驱动 (只做一次) (2)建立连接(Connection) (3)创建执行SQL的语句(Statement) (4)执行语句 (5)处理执行结果(ResultSet) (6)释放资源
本文章是记录一些自己在开发中遇到的一些bug,并会贴上原因和解决方案,欢迎参观 DiaryServiceTest 异常信息: Process finished with exit code 1 Class not found: "DiaryServiceTest"Empty test suite. 问题描述: 运行项目中的测试类,IDEA提示错误\ 解决方案 删除项目target文件夹即可,重新运行,再次运行IDEA会重新生成target文件夹,并且不再会提示以上错误 On branch master Yo
学JDBC,这一篇就够了
问题1 MySQL报错MySQL“ERROR 1046(3D000):未选择数据库”更新查询
领取专属 10元无门槛券
手把手带您无忧上云