SQL 甲骨文 ORA-00600
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/511534/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Oracle ORA-00600
提问by Chobicus
I have SQL SELECT statement that returns:
我有返回的 SQL SELECT 语句:
Error: ORA-00600: internal error code, arguments: [qerpfAllocateR], [], [], [], [], [], [], []
If I narrow my results by adding one more condition in WHERE clause everything is ok.
如果我通过在 WHERE 子句中再添加一个条件来缩小结果范围,一切都会好起来的。
Anyone knows what is happening?
有谁知道发生了什么?
EDIT:
编辑:
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
EDIT2:
编辑2:
My DB admin suggested solution that works:
我的数据库管理员建议的解决方案有效:
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
回答by Apocalisp
The ORA-0600 error indicates an internal error in Oracle itself. You're most likely hitting an Oracle bug.
ORA-0600 错误表示 Oracle 本身存在内部错误。您很可能遇到了 Oracle 错误。
If you go to http://metalink.oracle.com, you can look up the exact bug, if it is known, by pasting the "arguments" and full stack trace into the ORA-0600 lookup tool. See metalink note 153788.1.
如果您访问http://metalink.oracle.com,您可以通过将“参数”和完整堆栈跟踪粘贴到 ORA-0600 查找工具中来查找确切的错误(如果已知)。请参阅金属链接注释 153788.1。
If there's a known bug with that description, it's likely that there's already a patch available for you to download and install. If it's not a known bug, contact support.
如果该描述存在已知错误,则很可能已经有补丁可供您下载和安装。如果这不是已知错误,请联系支持人员。
回答by tehvan
What is the full query?
什么是完整查询?
http://www.orafaq.com/wiki/ORA-00600suggests you should report the error to oracle.
http://www.orafaq.com/wiki/ORA-00600建议您应该向 oracle 报告错误。
回答by Tamas Czinege
Good luck with getting support from Oracle...
祝您好运获得 Oracle 的支持...
Seriously though, every time I hit this problem, rearranging the query a little bit usually helps. Maybe fiddling around with the indexes a bit.
不过说真的,每次遇到这个问题时,稍微重新排列查询通常会有所帮助。也许摆弄一下索引。
回答by Matthew Watson
ORA-00600 basically means you've crash the oracle server (not the instance, just the server servicing your request).
ORA-00600 基本上意味着您已经崩溃了 oracle 服务器(不是实例,只是为您的请求提供服务的服务器)。
There will almost always be a trace file in your bdump location. This likely wont be a lot of help you to, but will be very helpful to oracle support.
在您的 bdump 位置几乎总会有一个跟踪文件。这可能不会对您有很大帮助,但对 Oracle 支持非常有帮助。
This is generally caused by an oracle bug, and from experience, there isn't a lot you can do about them except raise a SR via metalink (this is the recommended solution from Oracle). They will try to replicate the issue and with any luck, if its a bug it will eventually find its way into a patch.
这通常是由 oracle 错误引起的,根据经验,除了通过 metalink 提出 SR(这是 Oracle 推荐的解决方案)之外,您对它们无能为力。他们将尝试复制这个问题,如果运气好的话,如果它是一个错误,它最终会找到一个补丁。
In the immediate term though (eg, days - months) the main realistic solution is work around it.
在短期内(例如,几天 - 几个月),主要的现实解决方案是解决它。
While raising the SR doesn't really do alot to help you and can be a frustrating experience, its worth doing, as it might save someone else time once the bug is fixed.
虽然提高 SR 并没有真正帮助你,并且可能是一种令人沮丧的体验,但它值得这样做,因为一旦错误被修复,它可能会节省其他人的时间。
回答by zee
My solution:
我的解决方案:
(just give back to the SO community) I had the problem today and I was not able to resolve "starting my instance" following the steps above, after hours of looking around I was able to resolve it as follow.
(只是回馈 SO 社区)我今天遇到了问题,我无法按照上述步骤解决“启动我的实例”,经过几个小时的环顾四周后,我能够按如下方式解决它。
Problem
问题
THIS DIDNT WORK WAS GETTING ERROR [0600]
这没有工作得到错误 [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], [], [], [], [], [], [], []`
HERE IS MY SOLUTION TO THE PROBLEM:
这是我对问题的解决方案:
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\ARCHIVELOG14_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.
FINALLY IT WORKED:
最后它奏效了:
回答by Tal
These bugs are usually related to the optimizer. I think even the smallest change in the query like switching the order of table1 and table2 in the FROM clause might force the optimizer to choose a different plan that will not encounter this error.
这些错误通常与优化器有关。我认为即使是查询中最小的更改,例如在 FROM 子句中切换 table1 和 table2 的顺序,也可能会迫使优化器选择一个不会遇到此错误的不同计划。
回答by Dave Swersky
I have seen errors like this when there are XMLTYPE columns in the table, using PL/SQL Developer. It wouldn't happen if I had PL/SQL Developer create the query skeleton for me because it would add some syntax to the XMLTYPE column request, I can't remember exactly what.
当表中有 XMLTYPE 列时,我使用 PL/SQL Developer 看到过这样的错误。如果我让 PL/SQL Developer 为我创建查询框架就不会发生这种情况,因为它会向 XMLTYPE 列请求添加一些语法,我不记得到底是什么。
回答by Witold Kaczurba
ORA-00600 generally means that there is something highly unexpected and it might be linked to the database corruption. The symptoms can be that query works or not depending on how it is formulated.
ORA-00600 通常意味着有一些非常出乎意料的事情,它可能与数据库损坏有关。症状可能是查询是否有效,这取决于它是如何制定的。
Life example:
生活举例:
- LOB field update went wrong for a particular row with id=<ID>
- The row is not visible with SELECT * FROM <table>
- But: SELECT * FROM <table> WHERE id=<ID> fails to execute and gives ORA-006000.
- id=<ID> 的特定行的 LOB 字段更新出错
- 该行在 SELECT * FROM <table> 中不可见
- 但是: SELECT * FROM <table> WHERE id=<ID> 无法执行并给出 ORA-006000。
(Possible) Solution used to the above example
(可能)用于上述示例的解决方案
- export all accessible table contents
- delete table
- reimport the contents
- 导出所有可访问的表格内容
- 删除表
- 重新导入内容
Good Luck!
祝你好运!