出于测试目的,我需要几个在Oracle11.1.0.7版本中导致ORA-00600
错误的SQL脚本。
数据库不是空的,它充满了Vision电子商务套件新安装的数据。
本系统为学习甲骨文的学生提供了一个培训场所。它将用于发展他们的故障排除技能。为什么是SQL?因为这个脚本复制应该是自动化的。我们将随机化问题的发生,以创建一个真正的窃听系统的模型,以掌握故障排除活动。
我真正需要的是4-5种不同的方法来导致ORA-00600
错误。
注意:这个问题不是关于解释什么是ORA-600错误,也不是关于如何排除它们。这个问题是关于故意导致导致a-600错误的.。
发布于 2014-02-03 08:32:17
您不能“自然”地导致奥拉-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
发布于 2014-02-03 08:30:51
根据这里
ORA-600是由Oracle RDBMS软件的通用内核代码生成的内部错误。它在许多方面与其他Oracle错误不同。可能的原因包括:
SELECT FROM DUAL
语句(您必须使用SELECT FROM SYS.DUAL
!)因此,为了生成这些错误,您可能需要对数据库造成一些严重的破坏,而不是我建议的。上面的最后一点可能是这样做的,所以我会先测试一下。
发布于 2014-02-06 22:34:35
我们可以为你找到好的例子..。
只是为了开始一个集合:
这里(№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
https://stackoverflow.com/questions/21522594
复制相似问题