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错误不同。 可能的原因包括:
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