Oracle中的00600异常

出于测试目的,我需要一些SQL脚本,这些脚本会在Oracle 11.1.0.7版本中导致ORA-00600错误。

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

该系统是学习Oracle的学员的培训基地。 它将用于开发他们的故障排除技巧。 为什么SQL? 因为这个脚本复制应该是自动的。 我们将随机分析问题发生情况,以创建一个真正的故障排除系统模型,以便掌握故障排除活动。

我所需要的是4-5种不同的方法来引起ORA-00600错误。


你不能自然地导致ORA-00600。 这是一个覆盖内部Oracle异常的通用异常。 所以,除非你知道导致这个问题的Oracle错误,或者想故意破坏你的数据库,否则你是没有机会的。

你可以做的是自己提出一个应用程序错误,它可以模仿这个异常:

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执行此操作,则可以将上述内容转换为函数:

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;

然后调用它:

select raise_600 from dual

按照这里:

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

  • 超时,
  • 文件损坏,
  • 内存,硬件,内存或I / O消息中的数据检查失败,
  • 错误地恢复文件
  • Oracle Forms中PL / SQL中的SELECT FROM DUAL语句(您必须改用SELECT FROM SYS.DUAL !)
  • 所以,为了产生这些错误,你可能需要对数据库造成一些严重的损害,而不是我建议的。 上面的最后一点可能是一种做法,所以我会先测试一下。


    可能都是我们可以为你找到好例子......

    只是开始一个集合:

    №1(在这里找到)

    create table t(a clob);
    
    insert into t values(utl_raw.cast_to_varchar2('EC'));
    

    №2没有将ORA-600返回给客户端,只是断开连接。 但是这个错误可能在服务器日志中找到。 这种情况必须经过验证,因为我目前无法访问测试环境。 请添加评论以表明这种情况是否有趣。

    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
    
    链接地址: http://www.djcxy.com/p/6299.html

    上一篇: 00600 exception in Oracle

    下一篇: search date and time in oracle using to