4

我有返回的 SQL SELECT 语句:

    Error: ORA-00600: internal error code, arguments: [qerpfAllocateR], [], [], [], [], [], [], []

如果我通过在 WHERE 子句中再添加一个条件来缩小结果范围,那么一切正常。

有谁知道发生了什么?

编辑:

    select * from ( select tbl1.col1, ..., tbl1.points
    from table1 tbl1, table2 tbl2
    where tbl1.tbl2FK = tbl2.PK and
          tbl2.col1 = someNumber and
          tbl1.dateColumn = to_date('27-10-2008','dd-mm-yyyy')
    order by tbl1.points desc ) s where rownum <= 3 

编辑2:

我的数据库管理员建议了可行的解决方案:

select * from (select rank() over (order by tbl1.points desc) rank,
                  tbl1.col1, ..., tbl1.points
           from table1 tbl1, table2 tbl2
           where tbl1.tbl2FK = tbl2.PK and
                 tbl2.col1 = someNumber and
                 tbl1.dateColumn = to_date('27-10-2008','dd-mm-yyyy')) s
     where s.rank <= 3
4

8 回答 8

6

ORA-0600 错误表示 Oracle 本身存在内部错误。您很可能遇到了 Oracle 错误。

如果您访问http://metalink.oracle.com,您可以通过将“参数”和完整堆栈跟踪粘贴到 ORA-0600 查找工具中来查找确切的错误(如果已知)。参见金属链接注释 153788.1。

如果该描述存在已知错误,则很可能已经有一个补丁可供您下载和安装。如果不是已知错误,请联系支持人员。

于 2009-02-04T14:29:20.683 回答
4

什么是完整的查询?

http://www.orafaq.com/wiki/ORA-00600建议您应该向 oracle 报告错误。

于 2009-02-04T14:22:11.290 回答
3

祝您好运,获得 Oracle 的支持...

说真的,每次我遇到这个问题时,重新排列查询通常会有所帮助。也许摆弄一下索引。

于 2009-02-04T14:40:06.997 回答
3

ORA-00600 基本上意味着您已经使 oracle 服务器崩溃(不是实例,只是为您的请求提供服务的服务器)。

在您的 bdump 位置中几乎总会有一个跟踪文件。这可能不会对您有很大帮助,但对 Oracle 支持非常有帮助。

这通常是由 oracle 错误引起的,根据经验,除了通过 metalink 提出 SR(这是 Oracle 推荐的解决方案)之外,您对它们无能为力。他们将尝试复制该问题,如果运气好的话,如果它是一个错误,它最终会找到进入补丁的途径。

但在短期内(例如,几天 - 几个月),主要的现实解决方案是解决它。

虽然提高 SR 并不能真正帮助您,而且可能是一种令人沮丧的体验,但值得这样做,因为一旦修复了错误,它可能会节省其他人的时间。

于 2009-02-06T04:01:50.650 回答
2

这些错误通常与优化器有关。我认为即使是查询中的最小更改(例如在 FROM 子句中切换 table1 和 table2 的顺序)也可能会迫使优化器选择不会遇到此错误的不同计划。

于 2009-02-04T16:12:34.640 回答
2

我的解决方案:

问题

在此处输入图像描述

这个 DIDNT 工作出现错误 [0600]

SQL> shutdown abort
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.

Total System Global Area 1904054272 bytes
Fixed Size                  2404024 bytes
Variable Size             570425672 bytes
Database Buffers         1325400064 bytes
Redo Buffers                5824512 bytes
Database mounted.
SQL> recover database
Media recovery complete.
SQL> alter database open
  2
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-00600: internal error code, arguments: [kcratr_nab_less_than_odr], [1],
[108], [615], [655], [], [], [], [], [], [], []`

这是我的问题解决方案:

    SQL> Startup mount
ORA-01081: cannot start already-running ORACLE - shut it down first
SQL> shutdown abort
ORACLE instance shut down.
SQL>
SQL> startup mount
ORACLE instance started.

Total System Global Area 1904054272 bytes
Fixed Size                  2404024 bytes
Variable Size             570425672 bytes
Database Buffers         1325400064 bytes
Redo Buffers                5824512 bytes
Database mounted.
SQL> Show parameter control_files

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
control_files                        string      C:\APP\USER\ORADATA\ORACLEDB\C
                                                 ONTROL01.CTL, C:\APP\USER\FAST
                                                 _RECOVERY_AREA\ORACLEDB\CONTRO
                                                 L02.CTL
SQL> select a.member,a.group#,b.status from v$logfile a ,v$log b where a.group#=
b.group# and b.status='CURRENT'
  2
SQL> select a.member,a.group#,b.status from v$logfile a ,v$log b where a.group#=
b.group# and b.status='CURRENT';

MEMBER
--------------------------------------------------------------------------------

    GROUP# STATUS
---------- ----------------
C:\APP\USER\ORADATA\ORACLEDB\REDO03.LOG
         3 CURRENT


SQL> shutdown abort
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.

Total System Global Area 1904054272 bytes
Fixed Size                  2404024 bytes
Variable Size             570425672 bytes
Database Buffers         1325400064 bytes
Redo Buffers                5824512 bytes
Database mounted.
SQL> recover database using backup controlfile until cancel;
ORA-00279: change 4234808 generated at 01/21/2014 18:31:05 needed for thread 1
ORA-00289: suggestion :
C:\APP\USER\FAST_RECOVERY_AREA\ORACLEDB\ARCHIVELOG\2014_01_22\O1_MF_1_108_%U_.AR

C
ORA-00280: change 4234808 for thread 1 is in sequence #108


Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
C:\APP\USER\ORADATA\ORACLEDB\REDO03.LOG
Log applied.
Media recovery complete.
SQL> alter database open resetlogs;

Database altered.

终于成功了:

在此处输入图像描述

于 2014-01-23T03:23:29.610 回答
1

ORA-00600 通常意味着有一些非常意外的东西,它可能与数据库损坏有关。症状可能是查询是否有效,具体取决于它的制定方式。

生活举例:

  • id=<ID> 的特定行的 LOB 字段更新出错
  • 该行在 SELECT * FROM <table> 中不可见
  • 但是:SELECT * FROM <table> WHERE id=<ID> 执行失败并给出 ORA-006000。

(可能)用于上述示例的解决方案

  • 导出所有可访问的表格内容
  • 删除表
  • 重新导入内容

祝你好运!

于 2019-01-23T09:57:45.830 回答
0

当表中有 XMLTYPE 列时,我使用 PL/SQL Developer 看到过这样的错误。如果我让 PL/SQL Developer 为我创建查询框架就不会发生这种情况,因为它会向 XMLTYPE 列请求添加一些语法,我不记得具体是什么。

于 2009-02-04T14:23:58.417 回答