关于程序出现ORA-04068错误的处理方法

YOLOv11改进策略【卷积层】| CVPR-2024 PKI Module 获取多尺度纹理特征,适应尺度变化大的目标 PKI Module是。 阅读详情

在客户端查询数据的时候,有时候会出现明明有数据,但是还是显示查不到数据,再点击查询或多查几次又能查出来,很是郁闷,查看服务器日志,发现了如下错误:

 

错误的信息是说ISGIS.GIS_DIST_STAT这个包的状态是无效的,也就是说,DBServer重新编译了这个包,导致出现此异常,如果在这个时候再查询一次就不会报这个错,原因是当包编译的时候会将包的状态缓存起来,当你重新编译的时候,之前缓存的包的状态变成了OLD,新编译的变成了NEW,当程序来请求这个包的时候,加载的是OLD,而这个OLD已经被标示成无效的了,所以报错,当你再一次查询的时候,程序已经知道这个包是无效的,所以重新加载NEW,就不会再报错,解决的方法大致有三个:

 

1。将所用到的包设置成无状态的包,也就是说,不能在包里面设置全局变量,这样,即使重新编译了包,也不会出现以上错误,这需要在程序设计时就必须考虑到,但是很遗憾,我目前的程序在设计的时候没有考虑这一点,包的规模比较大,全局变量到处都是!

 

2。将包中的全局变量拿出来放到一个新的包里,当前包不设置全局变量,当前包需要全局变量的时候到新包里去取,这样,只要不重新编译全局变量所在的包,就不会出现异常。我觉得这个方法比较好,因为要做到包里面没有全局变量,不是要做很多重复的工作吗?但是目前我这个程序中的全局变量到处都是,改起来太麻烦了,看来还是要在程序设计的时候考虑全面一点!

 

3。如果你的项目中用到了Spring框架,那你一定会知道Spring的环绕通知,所谓环绕通知,就是在方法执行前和执行后都会调用这个通知,在这个通知里,你可以改变传入方法的参数,也可以修改方法的返回值,当然还有前置通知和后置通知,不懂的朋友自己去查资料吧,我的打算是给需要调用包的方法都加上环绕通知,然后在方法执行完判断是否出现了4068异常,如果出现了此异常,就再去执行一次,这样就不会出现查不到数据的情况了,而且源代码不需要改动,只要加配置文件和一个类就Ok,如果没有用到spring那就自己想办法吧,可以在执行的时候判断是否出现4068异常,然后再重新查询,反正思路大致就是这样,网上还有一种做法,我觉得也还不错,就是将callableStatement,PreparedStatement,Statement这些类中的执行数据库操作的方法重写,然后判断有没有出现4068异常,如果出现,再执行一次,这要求你在有可能出现4068异常的地方执行数据库操作都使用自己重写过的类,如果项目庞大并且已经成型,你会晕的,如果在项目搭建的时候就考虑到4068异常,这也未尝不是一个好方法。

 

总结:

综上所述,个人觉得如果对数据库更改方便的话,尽量使用第2种方法,如果数据库不能随便让你动,而且程序已经成型,不能去大范围改动源代码,那就使用Spring的环绕通知来做这个事情比较划算!

嘿嘿,看来以后项目搭建的时候,如果数据库用到包的话,那就要考虑考虑4068异常咯,因为等成型了再来改就比较麻烦了!我也是一菜鸟,希望高手看到不对的地方指正一下,谢谢!

 

附:

java判断数据库4086异常的代码:

 

基于FPGA的64点fft变换verilog开发 这精度的损失在10bits看来对最后的误差的影响是存在是不可忽略的。此后,在这思想基础上又开发了高基和分裂基等快速算法,随着数字技术的高速发展,1976年出现建立在数论和多项式理论基础上的维诺格勒傅里叶变换算法(WFTA)和素因子傅里叶变换算法。采用这种算法能使计算机计算离散傅里叶变换所需要的乘法次数大为减少,特别是被变换的抽样点数N越多,FFT算法计算量的节省就越显著。采用这种算法能使计算机计算离散傅里叶变换所需要的乘法次数大为减少,特别是被变换的抽样点数N越多,FFT算法计算量的节省就越显著。 阅读详情

相关推荐

低供电电压CMOS偏置电路分析(有些类似于三支路电流源)

1、偏置电路原理图以及仿真结果 电路电流分析:Ip=Ip1=Ip2=Ip3,那么 Ip=12μnCoxWL(IpR−VTH)2 I_p=\frac{1}{2} μ_nC_{ox}\frac{W}{L} (I_{p}R-V_{TH})^2 Ip​=21​μn​Cox​LW​(Ip​R−VTH​)2 解出方程式即可得到参考电流及参考电压 2、电路电源抑制比PSRR分析 这里为了方便,小信号前都不加△ 首先做一个近似,由于gmRo>>1,直接将VDD变化导致的P3管漏级电压变化与VDD变化量做相等

qq_46579389的博客 2907

ORA-04068解决记录

ORA-04068: existing state of packages has been discarded 出现该错误时,意味着package有被重新编译,旧状态的包已被丢弃,包有新的状态产生。 产生原因 在上游程序(如Java中MyBatis数据库连接池)运行过程中,如果对Oracle有状态(即定义了全局变量)的Package重新编译,将会导致上游程序获取该packge的会话状态失效。 因为有状态的package每次编译都会产生新的副本,会导致引用旧副本的连接池无法正确调用package。 问题表现

baidu_36720706的博客 2636

Sentinel-1 Burst数据处理避坑实录:从aria2c报错到wget脚本救场

本文详细介绍了Sentinel-1 Burst数据处理的完整解决方案,从下载困境到高效处理技巧。针对aria2c报错等常见问题,提供了增强版wget脚本和智能分组方法,显著提升下载成功率和处理效率,特别适合科研机构和企业级网络环境下的哨兵数据处理需求。

weixin_42641998的博客 283

ORA-04068: 已丢弃程序包 的当前状态

一般来说,我们都会用到包,但是包的使用范围是会话级的,通常因为你的会话没有关闭,而别的会话却在修改包然后编译,这时候会出现ORA-04068: 已丢弃程序包  的当前状态的错误,但是再次调用包的时候又不会复现之前的问题,有时候就会不管不顾,技术继续使用。这是为什么,因为包的缓存在报错后第二次调用会被重新刷新。 下面就做一个实验看看。 1.开启两个会话,我们成为A和B 会话A执行如下动作:

Csong的专栏 2万+

饥荒Mod 开发(二):Mod目录结构

饥荒中的每个Mod 都有一些固定的目录结构,各个目录的放着不同类型的文件。动画,图片,源代码等。我们最好是遵守Mod 开发中的各个目录结构,我用的是WeGame 安装的饥荒游戏,Mod 目录如下,这个目录下保存所有订阅的Mod。

小乖写代码 4626

基于ROS下的安卓手机图像和IMU跑ORB-SLAM3

接之前文章继续,手上没有现成的单目+IMU硬件,但是安卓手机几乎人人都有。因此,本文讲下如何用手机跑ORB-SLAM3的Mono和Mono_Inertial。 1. 手机与PC通信 基于ROS下的信息发布和订阅,手机和PC在一个局域网下进行信息(image和IMU)传输。 手机APK参考了github上的2个开源Android_Camera-IMU和android_ros_sensors,基于ros_java生成安卓APP,下载安装任一个APP到安卓手机,界面分别是这样: 手机和PC连一个无

h_372101的博客 1万+

ORA-04068: existing state of packages has been discarded

一.版本信息 操作系统版本: AIX 6100

渔夫数据库笔记 4888

168、OIS光学防抖系统设计:陀螺仪标定、音圈马达驱动与滚珠式/悬丝式结构选型

本文总结了OIS光学防抖系统设计中的关键问题与解决方案。作者通过实际案例指出,陀螺仪标定需重视零偏、灵敏度和温度补偿问题,音圈马达驱动需采用电流环控制并优化相位补偿。在机械结构选型方面,滚珠式适合大角度补偿但存在回差问题,悬丝式精度高但受重力影响,需根据应用场景选择。系统联调建议从开环到闭环逐步验证,注意陀螺仪与驱动频率匹配。最后给出5条经验建议:关注陀螺仪信噪比而非分辨率、预留标定余量、重视机械结构公差、配备专业调试工具、协调OIS与电子防抖的分工配合。文章强调OIS调试需针对不同模组特性进行反复测试与标

zzfmlxs的博客 41

ORA-04068/ ORA-04061

准备知识: PL/SQL块分为:命名块和匿名块。 ◆匿名块:以declare或begin开始,每次执行匿名块都要通过客户端工具将其发送给Oracle,经过语法分析、编译然后执行。 ◆命名块:具有名称的PL/SQL块,这些命名块被存储在Oracle中,编译一次,以后只可调用就可多次执行。如:存储过程、存储函数、包、触发器等、 存储过程:无返回值; 存储函数:有返回值; 包:可容纳

u011165335的博客 5985

工业级Modbus ASCII实时监控系统(WinForms完整实现)

本文介绍了一个基于WinForms的工业级Modbus ASCII实时监控系统实现方案。该系统采用经典工控界面布局,包含串口配置、数据采集控制和实时数据显示三大区域。核心功能包括:串口通信参数设置、Modbus从站地址配置、寄存器数据采集、实时数据表格展示和趋势图绘制。系统通过ModbusAsciiClient类实现通信核心,采用定时器轮询机制采集数据,支持最多100个数据点的历史趋势显示。界面设计注重用户体验,配置区位于左侧,主显示区在右侧,底部为状态和日志区,符合工业控制系统的操作习惯。代码示例展示了窗

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 277

Silly Tavern酒馆ai角色卡与世界书导入超详细教程!

前几天,我在设置 Silly Tavern 的时候,想导入一个喜欢的角色卡,结果发现不少朋友其实已经下载好了角色资源,但却不知道怎么正确导入使用。这篇文章就作为一份完整的新手向教程,一步步教你如何在 Silly Tavern 中导入角色卡、世界书,并实现与 AI 角色的真实互动。如果你是第一次接触这个功能,建议先收藏慢慢看~点击菜单栏上的 图标,打开角色界面。初始状态下,你应该只看到默认角色 Seraphina。你可以先点击她的头像尝试聊天,也可以导入自己喜欢的角色。点击导入按钮,选择你下载好的角色卡(通

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 2万+

存储过程ORA-04068错误解析

在运行一个过程是报了一个ORA-4068错误。虽然问题简单而且解决过程也不复杂,但是要真正理解错误产生的原因,还是要对概念有比较清晰的理解下面用一个简单的例子来重现错误:SQL>  create table t as select * from emp; 表已创建。 SQL> c

zhuomingwang的专栏 2686

YOLOv8 改进涨点 | 模块即插即用 直接可用

在目标检测任务中,注意力机制能够帮助模型聚焦于图像中的关键区域,显著提升检测精度。。创建模块代码注册模块修改任务解析tasks.py创建YAML配置文件模块核心优势适用场景计算开销SOCA捕获二阶统计信息,增强通道间相关性需要精细特征区分的场景中等SK自适应多尺度核选择多尺度目标检测中等偏高显式特征聚集-分配机制全局上下文建模中等A2-Net双线性注意力,高效全局交互复杂场景理解中等偏高CrissCross线性复杂度全局上下文高分辨率输入,长距离依赖较低。

u012133341的博客 2256

java 调用 ora-04068_关于程序出现ORA-04068错误的处理方法

在客户端查询数据的时候,有时候会出现明明有数据,但是还是显示查不到数据,再点击查询或多查几次又能查出来,很是郁闷,查看服务器日志,发现了如下错误:2011-01-07 08:49:31,604 ERROR [STDERR] java.sql.SQLException: ORA-04068: existing state of packages has been discardedORA-04061...

weixin_34567079的博客 380

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

关于ORA-06508 , ORA-04068异常的详细说明

参考:程序包调用报ORA-06508: PL/SQL: 无法找到正在调用的程序单元 出现这种情况的原因是因为,对于全局变量,每一个session会生成一个本地copy,如果程序重新编译的话,就会因程序里原变量找不到而丢弃该变量,继而导致这个错误。 也就是说在一个会话中调用程序包package时,会生成package中全局变量的副本,如果在另一个会话中对此package进行编译就会使前...

dianmie4090的博客 1452

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

常见错误

错误 无法识别gene.XXXX组件==owner跑gene.pks pkb dba跑授权 admin跑adm,geneadmin;还不行的话,就是不小心用geneadmin跑了gene pks pkb,drop package gene,用admin跑一下 索引中丢失 IN 或 OUT 参数==4; 这个原因是数据库中的字段类型与SQL语句中的类型不匹配造成的,后边的数字,代表第几个参数错...

wangrui813的博客 686

java 调用 ora-04068_在Java/JDBC中透明处理“ORA-04068”错误

转载自:http://database.ctocio.com.cn/tips/14/8106014.shtml在Oracle 里,如果你想编写存储过程你当然应该使用PL/SQL包。在这篇文章里,假设你一般了解PL/SQL 和非常熟悉PL/SQL 包。这篇文章关注于一个令人讨厌的错误,这个错误使许多使用PL/SQL以及使用API(例如JDBC)从应用层调用它的开发人员很苦恼。【IT专家网独家】导言在...

weixin_26937243的博客 491

ORA-04062\ORA-04068

客户今天刷新物化视图出现ORA-04062\ORA-04068错误,同事处理了这个问题,下面记录下过程:   OS:aix DB: 9.2.0.8 由于该物化视图的基表所在数据库先前进行了重建数据字典的操作。 在远端数据库刷新物化视图的时候报ORA-04062/ORA-04068的错误,可以通过设置 alter session set remote_dependencies_mod

767

java 调用 ora-04068_关于ORA-06508 , ORA-04068异常的详细说明

出现这种情况的原因是因为,对于全局变量,每一个session会生成一个本地copy,如果程序重新编译的话,就会因程序里原变量找不到而丢弃该变量,继而导致这个错误。也就是说在一个会话中调用程序包package时,会生成package中全局变量的副本,如果在另一个会话中对此package进行编译就会使前一个会话中的副本失效,故而产生错误。要想避免这个错误,可以使程序捕获ORA-06508:的错误进行处...

weixin_39774044的博客 838

oracle 包中的常量(包括全局和私有)与 ORA-04068 错误 (二)

ORACLE 包中的常量 与 ORA-04068 错误 oracle 包中的常量(包括全局和私有)与 ORA-04068 错误 (一)中展示了包中常量带来的问题,这里我们 改变常量定义位置,来解决这类问题。我们新增一个常量包:PG_CONSTANT。将所有包中的常量都定义在此包 中,PG_CONSTANT 只有包头,不需要包头。定义如下: CREATE OR REPLACE

Alan的专栏 3726

oracle 包中的常量(包括全局和私有)与 ORA-04068 错误 (一)

ORACLE 包中的常量 与 ORA-04068 错误     最近我在做一个项目,有些业务是用 存储过程写的。里面有好几个包,如 PG_COMMON,PG_TO等等还有一些其它包。 PG_COMMON包是目前共用的一个包,里面包括一些基础数据的检查什么的,其它包是按不同业务分类的,PG_TO就是其中的一个业务。 每个过程都含有属于自己业务区域的一些常量,有些包可能依赖其它包。

Alan的专栏 2471

java 调用 ora-04068_ORA-04068的错误解决

今天接到一个奇怪的故障,发现有一些包在NODE1上执行是正常的,再NODE2上执行报ORA-04068的错误.但是检查DBA_INVALIED_OBJECTS的STATUS都是正常.(由于昨天晚上对数据库的某些PACKAGE进行修改)后来检查包的依赖情况,发现有很多依赖包的时间戳已经不一致导致该问题的.使用以下命令可以检查到PACKAGE的依赖情况:set pagesize 10000column...

weixin_39546092的博客 257

ORA-04068 / ORA-04065 / ORA-06508 详细说明

关于在运行ORACLE 包发生ORA-04068 / ORA-04065 / ORA-06508 代码异常的原因只有一个,那就是包含了全局变量/常量的包,在会话保留期间被执行了编译。 对于此类错误,我翻看了大量其他博主的博客,有以下内容可供各位参考: http://jasonvogel.blogspot.co.uk/2008/03/how-to-deal-with-frustrati...

dianmie4090的博客 331

oracle 程序包 常量,oracle 包中的常量(包括全局和私有)与 ORA-04068 错误 (一)

ORACLE 包中的常量 与 ORA-04068 错误最近我在做一个项目,有些业务是用 存储过程写的。里面有好几个包,如 PG_COMMON,PG_TO等等还有一些其它包。PG_COMMON包是目前共用的一个包,里面包括一些基础数据的检查什么的,其它包是按不同业务分类的,PG_TO就是其中的一个业务。每个过程都含有属于自己业务区域的一些常量,有些包可能依赖其它包。我们在开发过程遇到一个问题:我们的...

weixin_29254673的博客 670

java调用“package存储过程”遇到的问题ORA-04068: existing state of packages has been discarded

现状: 1. 项目,调用"package 存储过程"问题如下:           当web处于启动状态,此时编译"package 存储过程:SALSEL.PAC_REAL_USERTAG_TEST",          第一次调用该存储过程时,报错: “ Cause: java.sql.SQLException: ORA-04068: existing state of packa

ziyunlong1984的专栏 2555

java 调用 ora-04068_ORACLE 错误一览表(2)

与版本 不兼容ORA-06519: 检测到活动的自治事务处理,已经回退ORA-06520: PL/SQL: 加载外部库时出错ORA-06521: PL/SQL: 映射函数时出错ORA-06522:ORA-06523: 参数个数超出上限ORA-06524: 不受支持的选项:ORA-06525: 长度与 CHAR 或 RAW 数据不匹配ORA-06526: 无法加载 PL/SQL 库ORA-06527...

weixin_39864591的博客 897
上一篇: Oracle取整函数
下一篇: Ora-00054 resource busy and acquire with nowait specified
TangKai_java
博客等级 码龄18年 12粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值