ORA-00600: internal error code,求助!

z4qls 2015-06-09 02:20:36
异常信息如下:
ORA-00600: internal error code, arguments: [kglobpg_is_pkp], [0xF01A72C10], [], [], [], [], [], []
看网上说的600错误原因很多,我发现arguments后面的东西有所不同。有没有人解释下[kglobpg_is_pkp], [0xF01A72C10], [], [], [], [], [], []这串是什么意思?
存储过程是ETL_FUN_CLEAR调用ETL_PAC_CharConverterUtil,ETL_PAC_CharConverterUtil再调用java程序ClearCharUtil.toHalfAngle。
按照以下程序,ETL_FUN_CLEAR如果发生异常,则会插入日志表数据记录日志(ETL_PRO_ADDLOG),并将入参直接返回,并继续执行后面的程序。可实际发生的是日表里插入了这条数据,内容就是SQLERRM中的内容,可记录完日志后程序中止了,没有继续运行。困扰好久了,求指教问题原因。

此问题是偶发性问题,通过记录日志分析:近30天发生过1次,总体平均每三天一次,经常连续几天发生。

oracle版本
SELECT * FROM v$version ;
Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bi
PL/SQL Release 10.2.0.5.0 - Production
CORE 10.2.0.5.0 Production
TNS for Linux: Version 10.2.0.5.0 - Production
NLSRTL Version 10.2.0.5.0 - Production

附上程序:

FUNCTION ETL_FUN_CLEAR(i_table_name IN VARCHAR2,
i_column_name IN VARCHAR2,
i_value IN VARCHAR2) RETURN VARCHAR2 IS
v_method_count number;
v_value varchar2(200);
v_method varchar2(100);
v_tablename varchar2(100);
v_columnname varchar2(100);
BEGIN
v_value := i_value;
v_value := ETL_PAC_CharConverterUtil.toHalfAngle(v_value);
return v_value;
exception
when others then
ETL_PAC_BASE.ETL_PRO_ADDLOG('ETL_PAC_CLEAR',
'ETL_FUN_CLEAR',
'',
SQLCODE || '-' || v_method || '-' ||
v_tablename || '-' || v_columnname || '-' || v_value,
SQLERRM);
return v_value;
END ETL_FUN_CLEAR;

create or replace package body ETL_PAC_CharConverterUtil is

-- Private type declarations
--type <TypeName> is <Datatype>;

-- Private constant declarations
--<ConstantName> constant <Datatype> := <Value>;

-- Private variable declarations
--<VariableName> <Datatype>;

-- Function and procedure implementations
function toHalfAngle(v_value varchar2) return varchar2 AS
language java name 'ClearCharUtil.toHalfAngle(java.lang.String) return java.lang.String';
function removeAllChar(v_value varchar2) return varchar2 as
language java name 'ClearCharUtil.removeAllChar(java.lang.String) return java.lang.String';
function removeBlank(v_value varchar2) return varchar2 as
language java name 'ClearCharUtil.removeBlank(java.lang.String) return java.lang.String';
function removeSpareBlank(v_value varchar2) return varchar2 as
language java name 'ClearCharUtil.removeSpareBlank(java.lang.String) return java.lang.String';
--begin
-- Initialization
--<Statement>;
end ETL_PAC_CharConverterUtil;

create or replace and compile java source named "ClearCharUtil" as
import java.util.List;
import java.util.regex.Pattern;

public class ClearCharUtil {

/**
* 全角转半角 半角字符串
*
* @return String
*/
public static String toHalfAngle(String str) {
char c[] = str.toCharArray();
for (int i = 0; i < c.length; i++) {
if (c[i] == '\\u3000') {
c[i] = ' ';
} else if (c[i] > '\\uFF00' && c[i] < '\\uFF5F') {
c[i] = (char) (c[i] - 65248);
}
}
String outStr = new String(c);
return outStr;
}
}
...全文
369 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
z4qls 2015-06-15
  • 打赏
  • 举报
回复
查出了点眉目,下面这段java代码编译是报错的。 正确的写法应该是把"\\"换成"\"。 但是奇怪的是我改好后再编译,编译成功后关掉窗口,再重新查看源,发现里面又变成“\\”了。 哪位大神知道这是什么原因吗? 我用的是pl/sql Developer 11。

  public static String toHalfAngle(String str) {
        char c[] = str.toCharArray();
        for (int i = 0; i < c.length; i++) {
            if (c[i] == '\\u3000') {
                c[i] = ' ';
            } else if (c[i] > '\\uFF00' && c[i] < '\\uFF5F') {
                c[i] = (char) (c[i] - 65248);
            }
        }
        String outStr = new String(c);
        return outStr;
    }
z4qls 2015-06-09
  • 打赏
  • 举报
回复
引用 2 楼 wangchangming 的回复:
一个全半角转换被你整得如此麻烦,Oracle函数早已实现了该功能
SQL> select to_single_byte('计算.()机') from dual;

TO_SINGLE
---------
计算.()机

SQL> select to_multi_byte('计算.()机') from dual;

TO_MULTI_BYT
------------
计算.()机
哎,先人写的程序,维护而已。。痛苦~
wangchangming 2015-06-09
  • 打赏
  • 举报
回复
一个全半角转换被你整得如此麻烦,Oracle函数早已实现了该功能
SQL> select to_single_byte('计算.()机') from dual;

TO_SINGLE
---------
计算.()机

SQL> select to_multi_byte('计算.()机') from dual;

TO_MULTI_BYT
------------
计算.()机
z4qls 2015-06-09
  • 打赏
  • 举报
回复
补充一下,调用这个函数的地方是这样的一段程序。

      update Temp_PrpDcstP
         set IdentifyType      = ETL_FUN_CLEAR('PRPDCSTP',
                                               'IDENTIFYTYPE',
                                               cur.IdentifyType),
             IdentifyNumber    = ETL_FUN_CLEAR('PRPDCSTP',
                                               'IDENTIFYNUMBER',
                                               cur.IdentifyNumber),
             DateValid         = ETL_FUN_CLEAR('PRPDCSTP',
                                               'DATEVALID',
                                               cur.DateValid),
             Gender            = ETL_FUN_CLEAR('PRPDCSTP',
                                               'GENDER',
                                               cur.Gender),
             BirthDate         = ETL_FUN_CLEAR('PRPDCSTP',
                                               'BIRTHDATE',
                                               cur.BirthDate),
             DeathDate         = ETL_FUN_CLEAR('PRPDCSTP',
                                               'DEATHDATE',
                                               cur.DeathDate),
             Health            = ETL_FUN_CLEAR('PRPDCSTP',
                                               'HEALTH',
                                               cur.Health),
             Stature           = ETL_FUN_CLEAR('PRPDCSTP',
                                               'STATURE',
                                               cur.Stature),
             Weight            = ETL_FUN_CLEAR('PRPDCSTP',
                                               'WEIGHT',
                                               cur.Weight),
             Marriage          = ETL_FUN_CLEAR('PRPDCSTP',
                                               'MARRIAGE',
                                               cur.Marriage),
             Nationality       = ETL_FUN_CLEAR('PRPDCSTP',
                                               'NATIONALITY',
                                               cur.Nationality),
             HouseProperty     = ETL_FUN_CLEAR('PRPDCSTP',
                                               'HOUSEPROPERTY',
                                               cur.HouseProperty),
             RegionCode        = ETL_FUN_CLEAR('PRPDCSTP',
                                               'REGIONCODE',
                                               cur.RegionCode),
             FamilySumQuantity = ETL_FUN_CLEAR('PRPDCSTP',
                                               'FAMILYSUMQUANTITY',
                                               cur.FamilySumQuantity),
             BloodType         = ETL_FUN_CLEAR('PRPDCSTP',
                                               'BLOODTYPE',
                                               cur.BloodType),
             Favourite         = ETL_FUN_CLEAR('PRPDCSTP',
                                               'FAVOURITE',
                                               cur.Favourite),
             Interest          = ETL_FUN_CLEAR('PRPDCSTP',
                                               'INTEREST',
                                               cur.Interest),
             SelfMonthIncome   = ETL_FUN_CLEAR('PRPDCSTP',
                                               'SELFMONTHINCOME',
                                               cur.SelfMonthIncome),
             SmIncomeCurrency  = ETL_FUN_CLEAR('PRPDCSTP',
                                               'SMINCOMECURRENCY',
                                               cur.SmIncomeCurrency),
             FamilyMonthIncome = ETL_FUN_CLEAR('PRPDCSTP',
                                               'FAMILYMONTHINCOME',
                                               cur.FamilyMonthIncome),
             FmIncomeCurrency  = ETL_FUN_CLEAR('PRPDCSTP',
                                               'FMINCOMECURRENCY',
                                               cur.FmIncomeCurrency)
       where CustomerCode = cur.CustomerCode;
内容概要:本文提出了一种基于非合作博弈理论的居民负荷分层调度模型,并结合双层鲸鱼优化算法(Two-level Whale Optimization Algorithm)进行高效求解,模型与算法均通过Matlab代码实现。研究针对电力系统中居民侧用电负荷的复杂调度问题,引入非合作博弈机制刻画各用户之间的利益竞争关系,实现负荷的分层优化分配;同时设计双层优化架构,上层优化资源配置,下层模拟用户自主决策行为,提升了模型的实用性与合理性。通过智能优化算法求解多层级、非凸非线性的博弈模型,有效提高了调度方案的收敛性与全局寻优能力,适用于现代智能电网中的需求侧管理与能源优化场景。; 适合人群:具备电力系统基础理论知识和Matlab编程能力,从事智能电网、能源优化调度、需求侧管理、博弈论应用等方向的科研人员、高校研究生及工程技术人员。; 使用场景及目标:①应用于居民区电力负荷的分层优化调度系统设计与仿真分析;②为非合作博弈在多主体能源系统建模中的应用提供方法论支持;③利用双层鲸鱼算法解决具有嵌套结构的复杂双层优化问题,提升求解效率与调度方案的可行性。; 阅读建议:建议读者结合提供的Matlab代码深入理解模型构建逻辑与算法实现流程,重点关注博弈模型的效用函数设计、纳什均衡求解思路以及双层优化结构的迭代机制,宜配合实际用电数据开展复现实验以验证模型有效性与鲁棒性。
内容概要:本文围绕基于自适应神经模糊推理系统(ANFIS)智能控制器的可再生能源微电网功率管理系统展开研究,结合Simulink仿真实现,深入探讨了微电网中功率的智能调控与经济机组组合调度问题。通过引入ANFIS控制器,有效应对风能、光伏等可再生能源出力的波动性与不确定性,提升系统运行的稳定性与电能质量。研究内容涵盖微电网多源协调控制策略、功率平衡管理、优化调度模型构建及仿真验证,实现了对分布式电源、储能系统和负荷的协同优化,兼顾经济性与可靠性目标,并通过仿真平台验证了所提方法的有效性与优越性。; 适合人群:具备电力系统、自动化或新能源相关专业背景,熟悉Matlab/Simulink仿真环境,从事微电网能量管理、智能控制、能源优化等领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①用于高比例可再生能源接入场景下的微电网能量管理系统研发与教学实践;②为实现微电网功率稳定控制与经济高效运行提供先进的智能控制解决方案;③支撑高水平学术论文复现、科研课题攻关及实际工程项目的仿真验证与方案优化。; 阅读建议:建议结合提供的Simulink模型与相关代码进行动手实践,重点关注ANFIS控制器的设计流程、规则库构建与参数调优方法,并通过与传统PID或MPC控制策略的对比实验,深入理解其在动态响应与鲁棒性方面的优势。同时可进一步拓展文中提出的优化调度逻辑,应用于多目标、多约束的复杂实际应用场景中。

17,135

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧