oracle报错(ORA-00600)问题处理

告警日志里这两天一直显示这个错误:

ORA-00600:internalerrorcode,arguments:[kcblasm_1],[103],[],[],[],[],[],[]
TueAug1209:20:17CST2014
Errorsinfile/u01/app/oracle/admin/orcl/udump/orcl_ora_29974.trc:
ORA-00600:internalerrorcode,arguments:[kcblasm_1],[103],[],[],[],[],[],[]
TueAug1209:30:17CST2014
Errorsinfile/u01/app/oracle/admin/orcl/udump/orcl_ora_30084.trc:
ORA-00600:internalerrorcode,arguments:[kcblasm_1],[103],[],[],[],[],[],[]
TueAug1209:40:17CST2014
Errorsinfile/u01/app/oracle/admin/orcl/udump/orcl_ora_29919.trc:
ORA-00600:internalerrorcode,arguments:[kcblasm_1],[103],[],[],[],[],[],[]

网上查的解决办法:

1:临时的解决方法
如果执行计划中是hashjoin造成的,在会话层中设置"_hash_join_enable"=false,如:altersessionset"_hash_join_enabled"=false亦可;

如果执行计划是hashgroupby造成的,设置"_gby_hash_aggregation_enabled"=false
2:根本的解决方法
2.1.优化sql语句,避免遇到bug;
2.2.升级
(1)将数据库升级psu到10.2.0.5.4和11.2可以修正该问题
(2)对于10.2.0.5.0到10.2.0.5.3的版本,打PATCH7612454来避免改错误(该补丁替换lib中的kcbl.o文件)。

通过临时解决办法解决问题示例:

追踪报警日志里提示的trace文件,找到导致出现此错误的sql语句

ORA-00600:internalerrorcode,arguments:[kcblasm_1],[103],[],[],[],[],[],[]
CurrentSQLstatementforthissession:

格式化后的sql语句如下:

SELECTINDENTDATE,
INDENTGROUP,
TRANSDATE,
TRANSBY,
TRANSGROUP,
FEEDBACKBY,
FEEDBACKGROUP,
FINANCEDATE,
FINANCEBY,
FINANCEGROUP,
TOTALCOST,
A.TOTALPAY,
PAY_CASH,
PAY_POINTS,
PAY_ADVANCE1,
PAY_ADVANCE2,
PAY_TYPE,
TRANS_PAY,
DISCOUNT_STAFF,
DISCOUNT_SPECIAL,
GAIN_CASH,
GAIN_POINTS,
GAIN_ADVANCE1,
GAIN_ADVANCE2,
TRANS_CUSTNAME,
TRANS_TEL,
TRANS_PROVINCE,
TRANS_CITY,
TRANS_ADDRESS,
TRANS_ZIPCODE,
TRANS_WEIGHT,
TRANS_COMMENTS,
INDENT_COMMENTS,
INDENT_ID,
A.PARTNER_GUID,
A.PROXY_GUID,
TRANS_TEL2,
CUST_MEDIA_ID,
CUST_PARTNER_GUID,
CUST_PROXY_GUID,
PARTNER_VALUE,
PROXY_VALUE,
CUST_PARTNER_VALUE,
CUST_PROXY_VALUE,
DEALBY,
A.FAILREASON,
ISFOOT,
S_REASONID,
DEALFAILREASON,
A.PRE_FUND,
MEDIA_CALLTYPE,
PRE_ADVANCE,
WEB_FLAG,
NEED_INVOICE,
INVOICE_TITLE,
TRANS_AREA,
ORDERTYPE,
PAY_POINTSPRICE,
A.MEDIA,
USERDEFINEDSTATUS,
CUSTOMERNAME,
CUSTOMERID
FROMELITE.TABCINDENTA
LEFTJOINELITE.OBJECTIVEB
ONA.RELATION_ID=B.OBJECTIVE_GUID
LEFTJOINELITE.CUSTOMERC
ONA.CUSTOMER_GUID=C.CUSTOMER_GUID
WHERE(INDENTDATEBETWEEN:1AND:2ORB.MODIFIEDDATEBETWEEN:3AND:4);

将变量:1,:2,:3,:4替换成具体的值执行:

SELECTINDENTDATE,
INDENTGROUP,
TRANSDATE,
TRANSBY,
TRANSGROUP,
FEEDBACKBY,
FEEDBACKGROUP,
FINANCEDATE,
FINANCEBY,
FINANCEGROUP,
TOTALCOST,
A.TOTALPAY,
PAY_CASH,
PAY_POINTS,
PAY_ADVANCE1,
PAY_ADVANCE2,
PAY_TYPE,
TRANS_PAY,
DISCOUNT_STAFF,
DISCOUNT_SPECIAL,
GAIN_CASH,
GAIN_POINTS,
GAIN_ADVANCE1,
GAIN_ADVANCE2,
TRANS_CUSTNAME,
TRANS_TEL,
TRANS_PROVINCE,
TRANS_CITY,
TRANS_ADDRESS,
TRANS_ZIPCODE,
TRANS_WEIGHT,
TRANS_COMMENTS,
INDENT_COMMENTS,
INDENT_ID,
A.PARTNER_GUID,
A.PROXY_GUID,
TRANS_TEL2,
CUST_MEDIA_ID,
CUST_PARTNER_GUID,
CUST_PROXY_GUID,
PARTNER_VALUE,
PROXY_VALUE,
CUST_PARTNER_VALUE,
CUST_PROXY_VALUE,
DEALBY,
A.FAILREASON,
ISFOOT,
S_REASONID,
DEALFAILREASON,
A.PRE_FUND,
MEDIA_CALLTYPE,
PRE_ADVANCE,
WEB_FLAG,
NEED_INVOICE,
INVOICE_TITLE,
TRANS_AREA,
ORDERTYPE,
PAY_POINTSPRICE,
A.MEDIA,
USERDEFINEDSTATUS,
CUSTOMERNAME,
CUSTOMERID
FROMELITE.TABCINDENTA
LEFTJOINELITE.OBJECTIVEB
ONA.RELATION_ID=B.OBJECTIVE_GUID
LEFTJOINELITE.CUSTOMERC
ONA.CUSTOMER_GUID=C.CUSTOMER_GUID
WHERE(INDENTDATEBETWEEN'2012-06-19'AND'2012-08-19'ORB.MODIFIEDDATEBETWEEN'2012-06-19'AND'2012-08-1');

执行报错:

解决办法:

altersessionset"_hash_join_enabled"=false;

altersessionset"_gby_hash_aggregation_enabled"=false

--先尝试一种,如果一种解决了,就没必要设置另外一种了。

然后再次执行上面的查询语句,不报错啦,嘎嘎

成功啦,(*^__^*)嘻嘻……

让开发人员在程序里加上这条命令即可。

(0)

相关推荐

  • oracle数据库导入导出命令使用方法

    最近做项目的时候遇到过oracle数据库导入导出,在这里我做下记录,防止自己忘记了,有什么不对或者不足的地方,欢迎广大博友拍砖,哈哈~导出命令:1)单表导出:exp 用户名/密码@服务器别名 tables=表名 file=d:\名称.dmp 复制代码 代码如下: exp jm110/jm110@120_2 tables=ajb file=d:\ajb.dmp 多张表: 复制代码 代码如下: exp jm110/jm110@120_2 tables=(ajb,jjdwb) file=d:\ajb2

  • LINUX下Oracle数据导入导出的方法详解

    本文讲述了LINUX下Oracle数据导入导出的方法.分享给大家供大家参考,具体如下: 一. 导出工具 exp 1. 它是操作系统下一个可执行的文件 存放目录/ORACLE_HOME/bin exp导出工具将数据库中数据备份压缩成一个二进制系统文件.可以在不同OS间迁移   它有三种模式: a.  用户模式: 导出用户所有对象以及对象中的数据: b.  表模式: 导出用户所有表或者指定的表: c.  整个数据库: 导出数据库中所有对象. 2. 导出工具exp交互式命令行方式的使用的例子: $ex

  • oracle在导入数据时报600错误的解决方法

    前言 前几天导入一个大容量dmp数据文件,报一个600错误,咨询网上的解决方法,按上面的处理一圈也没有整好,最后咨询组里一个大神,出现此错误 思路是,单个数据文件大小最大为32G,分析数据库后解决如下: 错误情况: 解决方法:在保证我们导入sql无误的情况下,检查当前用户所在表空间: select username,default_tablespace from user_users; 可以看到,我们当前使用的是users表空间,下面检查当前使用表空间的使用率: select total.tab

  • ORACLE出现错误1033和错误ORA-00600的解决方法

    在非法关机以后,Oracle数据库经常会出现这个错误: EXP-00056:ORACLE错误1033出现 ORA-01033:ORACLE initialization or shutdown in progress 用户: 口令: 这个显然是数据库没有办法启动,但是数据库服务还是可以启动,而程序则无法连接数据库. 首选找问题要看看数据库BDUMP目录下的ALERT文件具体报什么错误 最后几行你会看到有: 报错ORA-00600: 内部错误代码,参数: [kcratr1_lostwrt], []

  • Oracle 数据库导出(exp)导入(imp)说明

    buffer:下载数据缓冲区,以字节为单位,缺省依赖操作系统 consistent:下载期间所涉及的数据保持read only,缺省为n direct:使用直通方式 ,缺省为n feeback:显示处理记录条数,缺省为0,即不显示 file:输出文件,缺省为expdat.dmp filesize:输出文件大小,缺省为操作系统最大值 indexes:是否下载索引,缺省为n,这是指索引的定义而非数据,exp不下载索引数据 log:log文件,缺省为无,在标准输出显示 owner:指明下载的用户名 q

  • Oracle 使用TOAD实现导入导出Excel数据

    在Oracle应用程序的开发过程中,访问数据库对象和编写SQL程序是一件乏味且耗费时间的工作,对数据库进行日常管理也是需要很多SQL脚本才能完成的.Quest Software为此提供了高效的Oracle应用开发工具-Toad.在Toad的新版本中,还加入了DBA模块,可以帮助DBA完成许多日常管理工作.它最大的特点就是简单易用,访问速度快.使用Toad,我们可以通过一个图形化的用户界面快速访问数据库,完成复杂的SQL和PL/SQL代码编辑和测试工作.Toad由Oracle开发专家专门为开发人员

  • oracle数据库导出和oracle导入数据的二种方法(oracle导入导出数据)

    方法一:利用PL/SQL Developer工具导出:菜单栏---->Tools---->Export Tables,如下图,设置相关参数即可: 方法二:利用cmd的操作命令导出,详情如下:1:G:\Oracle\product\10.1.0\Client_1\NETWORK\ADMIN目录下有个tnsname.ora文件,内容如下: 复制代码 代码如下: CMSTAR =  (DESCRIPTION =    (ADDRESS_LIST =      (ADDRESS = (PROTOCOL

  • Oracle报错记录被另外一个用户锁定的解决方案

    原因 当一个用户对数据进行修改时,若没有进行提交或者回滚,Oracle不允许其他用户修改该条数据,在这种情况下修改,就会出现:"记录被另外一个用户锁定"错误. 解决 查询用户.数据库锁.以及类型等 select object_id,session_id,locked_mode from v$locked_object; 或者 select t2.owner,t2.object_name,t1.session_id,t1.locked_mode from v$locked_object

  • Oracle报错:ORA-28001:口令已失效解决办法

    目录 一.链接Oracle报错 :ORA-28001:口令已失效 二.查看数据库密码默认有效期: 三.解决方式一:修改用户密码 四.解决方式二:修改默认有效期 总结 一.链接Oracle报错 :ORA-28001:口令已失效 解决办法  原因:Oracle11G创建用户时缺省密码过期限制是180天(即6个月), 如果超过180天用户密码未做修改则该用户无法登录 解决方式: 方式一: 在密码将要过期或已经过期时进行修改密码,密码修改后该用户可正常连接数据库 方式二: 将口令有效期默认值180天修改

  • oracle报错(ORA-00600)问题处理

    告警日志里这两天一直显示这个错误: ORA-00600:internalerrorcode,arguments:[kcblasm_1],[103],[],[],[],[],[],[] TueAug1209:20:17CST2014 Errorsinfile/u01/app/oracle/admin/orcl/udump/orcl_ora_29974.trc: ORA-00600:internalerrorcode,arguments:[kcblasm_1],[103],[],[],[],[],[

  • ORACLE ORA-01653: unable to extend table 的错误处理方案(oracle报错)

    前几天项目在运行的时候数据库数据插入突然报: ORA-01653: unable to extend table HSDC.ADDRESS by 128 in tablespace DATACENTER 大概的意思是说HSDC表空间不足了,在网上搜了一下出现这种表空间不足的问题一般有两种情况:一种是表空间的自动扩展功能没有打开:另一种确实是表空间确实不够用了,已经达到了扩展的极限.所以我们解决问题就应该先去查看Oracle表空间大小,然后看一下Oracle表空间的自动扩展功能是否打开:若确实是表

  • Oracle利用errorstack追踪tomcat报错ORA-00903 无效表名的问题

    现象 tomcat错误日志断断续续报ORA-00903: invalid table name,并无具体SQL与表名,需要排查哪段代码写入了无效表名, 可以通过ORACLE提供的errorstack追踪报错SQL. 由于生产数据无法取出,以下皆为测试环境测试还原生产错误. errorstack简介 设置errorstack,在发生特定的ORA错误时会记录发生问题的会话,语句以及各个进程的trace文件, 在alert日志中有记录错误记录的trace文件位置,也可以给单独会话开启errorstac

  • Oracle+Mybatis的foreach insert批量插入报错的快速解决办法

    最近做一个批量导入的需求,将多条记录批量插入数据库中. 解决思路:在程序中封装一个List集合对象,然后把该集合中的实体插入到数据库中,因为项目使用了MyBatis,所以打算使用MyBatis的foreach功能进行批量插入.期间遇到了"SQL 命令未正确结束 "的错误,最终解决,记录下来供以后查阅和学习. 首先,在网上参考了有关Mybatis的foreach insert的资料,具体如下: foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合. foreach

  • oracle 实际值超过数据库某个字段指定长度报错解决

    ORA-01438: value larger than specified precision allowed for this column 实际值的长度大于了数据库里某个字段允许的最大长度导致的插入失败问题. 常见的场景是oracle sequence自动增长,系统用到一定的时候,sequence的值不断的增大,系统开始报错. 解决方法:更改字段的长度解决

  • win x64下安装oracle 12c出现INS-30131报错的解决方法

    本文为大家分享了安装oracle 12c出现[INS-30131]报错的解决方案,供大家参考,具体内容如下 解决方案: 第一步:控制面板>所有控制面板项>管理工具>服务>SERVER启动 第二步:控制面板>所有控制面板项>管理工具>计算机管理>系统工具>共享文件夹>共享右键单击"共享">新建共享> 点击"下一步">单击"浏览">选择"本地磁盘(C:)&q

  • Python连接Oracle之环境配置、实例代码及报错解决方法详解

    Oracle Client 安装 1.环境 日期:2019年8月1日 公司已经安装好Oracle服务端 Windows版本:Windows10专业版 系统类型:64位操作系统,基于x64的处理器 Python版本:Python 3.6.4 :: Anaconda, Inc. 2.下载网址 https://www.oracle.com/database/technologies/instant-client/downloads.html 3.解压至目录 解压后(这里放D盘) 4.配置环境变量 控制

  • 关于使用PLSQL Developer时出现报错ora-12514的问题

    在登陆PLSQL Developer时报ora-12513错误,需要修改本地数据库的监听配置文件,其过程相对简单. 在Oracle安装目录中搜索找到listener.ora文件,并修改成txt格式后打开(在修改之前建议做好备份),需要添加的代码及添加位置如下图所示: (SID_DESC = (GLOBAL_DBNAME = ORCL) (ORACLE_HOME =E:\Oracle\product\11.2.0\dbhome_1) (SID_NAME = ORCL) ) 注意:安装的盘符需要更改

随机推荐