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

LXa*_*ndR 4 sql oracle plsql ora-00600

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

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

该系统是学习Oracle的学生的培训场所.它将用于开发他们的故障排除技能.为何选择SQL?因为这个脚本的复制应该是自动的.我们将随机化问题发生,以创建一个真正的窃听系统模型,用于掌握故障排除活动.

我究竟需要的是4-5种不同的导致ORA-00600错误的方法.

注意:此问题不是解释ORA-600错误是什么,或者如何解决它们.这个问题是关于故意造成 ORA-600错误.

Ben*_*Ben 5

你不能"自然地" 造成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
Run Code Online (Sandbox Code Playgroud)

如果必须从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;
Run Code Online (Sandbox Code Playgroud)

然后就叫它:

select raise_600 from dual
Run Code Online (Sandbox Code Playgroud)

  • 我知道这不是你所需要的@ user3265017; 你提到SQL,我告诉你如何在SQL中执行它...破坏你的数据库或找到导致这种情况的Oracle错误(或者把它变成一个函数来做到这一点). (2认同)

pax*_*blo 3

按照这里

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

  • 超时,
  • 文件损坏,
  • 内存、硬件、内存或 I/O 消息中的数据检查失败,
  • 错误恢复的文件
  • Oracle Forms 中的 PL/SQL语句SELECT FROM DUAL(您必须改用SELECT FROM SYS.DUAL!)

因此,为了生成这些错误,您可能需要对数据库造成一些严重损坏,这不是我建议的。上面的最后一个要点可能是一种方法,所以我首先测试一下。