首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >故意导致ORA-00600在Oracle中的异常

故意导致ORA-00600在Oracle中的异常
EN

Stack Overflow用户
提问于 2014-02-03 08:24:20
回答 3查看 27.7K关注 0票数 6

出于测试目的,我需要几个在Oracle11.1.0.7版本中导致ORA-00600错误的SQL脚本。

数据库不是空的,它充满了Vision电子商务套件新安装的数据。

本系统为学习甲骨文的学生提供了一个培训场所。它将用于发展他们的故障排除技能。为什么是SQL?因为这个脚本复制应该是自动化的。我们将随机化问题的发生,以创建一个真正的窃听系统的模型,以掌握故障排除活动。

我真正需要的是4-5种不同的方法来导致ORA-00600错误。

注意:这个问题不是关于解释什么是ORA-600错误,也不是关于如何排除它们。这个问题是关于故意导致导致a-600错误的.

EN

回答 3

Stack Overflow用户

发布于 2014-02-03 08:32:17

您不能“自然”地导致奥拉-00600;它是一个泛型异常,涵盖了内部的Oracle异常。因此,除非您知道一个导致此问题的Oracle错误,或者想故意破坏您的数据库,否则您将没有机会。

你能做的就是自己做引发应用程序错误,它可以模仿这个例外:

代码语言:javascript
运行
复制
declare
   internal_exception EXCEPTION;
   PRAGMA EXCEPTION_INIT( internal_exception, -600 );
begin
  raise internal_exception;
end;
/
declare
*
ERROR at line 1:
ORA-00600: internal error code, arguments: [], [], [], [], [], [], [], [], [], [], [], []
ORA-06512: at line 5

如果必须从SQL执行此操作,则可以将上面的内容转换为一个函数:

代码语言:javascript
运行
复制
create or replace function raise_600 return number is
   internal_exception EXCEPTION;
   PRAGMA EXCEPTION_INIT( internal_exception, -600 );
begin
  raise internal_exception;
  return 1;
end;

那就叫它吧

代码语言:javascript
运行
复制
select raise_600 from dual
票数 5
EN

Stack Overflow用户

发布于 2014-02-03 08:30:51

根据这里

ORA-600是由Oracle RDBMS软件的通用内核代码生成的内部错误。它在许多方面与其他Oracle错误不同。可能的原因包括:

  • 暂停一下,
  • 文件腐败,
  • 内存、硬件、内存或I/O消息中的数据检查失败,
  • 错误还原的文件
  • Oracle中PL/SQL中的SELECT FROM DUAL语句(您必须使用SELECT FROM SYS.DUAL!)

因此,为了生成这些错误,您可能需要对数据库造成一些严重的破坏,而不是我建议的。上面的最后一点可能是这样做的,所以我会先测试一下。

票数 3
EN

Stack Overflow用户

发布于 2014-02-06 22:34:35

我们可以为你找到好的例子..。

只是为了开始一个集合:

这里(№1 )

代码语言:javascript
运行
复制
create table t(a clob);

insert into t values(utl_raw.cast_to_varchar2('EC'));

№2没有将ORA-600返回给客户端,只是删除了连接。但是,在服务器日志中可以找到此错误。必须对此情况进行验证,因为我目前无法访问测试环境。请添加一个评论,以表明这类案件是否有趣。

代码语言:javascript
运行
复制
create table t1(id number);
create table t2(id number);

insert into t1(id) values(1);
insert into t1(id) values(2);
insert into t2(id) values(1);
insert into t2(id) values(2);

select 
  ta.id
from 
  t1 ta
  join (
    select id 
    from t2 
    start with id = 1 connect by prior id + 1= id 
  ) tb 
    on prior ta.id = tb.id
start with 
  ta.id = 2
connect by 
  prior ta.id - 1 = ta.id
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21522594

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档