Oracle ORA-00600
我的 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
I have SQL SELECT statement that returns:
Error: ORA-00600: internal error code, arguments: [qerpfAllocateR], [], [], [], [], [], [], []
If I narrow my results by adding one more condition in WHERE clause everything is ok.
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:
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
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
ORA-0600错误表示Oracle本身的内部错误。 您很可能遇到了 Oracle 错误。
如果您访问 http://metalink.oracle.com,您可以查找确切的错误(如果是)通过将“参数”和完整堆栈跟踪粘贴到 ORA-0600 查找工具中来了解。 请参阅 Metalink 注释 153788.1。
如果存在具有该描述的已知错误,则可能已经有补丁可供您下载和安装。 如果这不是已知错误,请联系支持人员。
The ORA-0600 error indicates an internal error in Oracle itself. You're most likely hitting an Oracle bug.
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.
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.
完整的查询是什么?
http://www.orafaq.com/wiki/ORA-00600 建议您应该将错误报告给oracle。
What is the full query?
http://www.orafaq.com/wiki/ORA-00600 suggests you should report the error to oracle.
祝你好运,获得 Oracle 的支持……
不过说真的,每次我遇到这个问题时,稍微重新安排一下查询通常会有所帮助。 也许稍微摆弄一下索引。
Good luck with getting support from 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.
ORA-00600 基本上意味着您已经使 Oracle 服务器崩溃(不是实例,只是为您的请求提供服务的服务器)。
bdump 位置中几乎总会有一个跟踪文件。 这可能不会对您有太大帮助,但对 Oracle 支持非常有帮助。
这通常是由 oracle bug 引起的,根据经验,除了通过 metalink 提出 SR(这是 Oracle 推荐的解决方案)之外,您对此无能为力。 他们会尝试复制这个问题,如果幸运的话,如果它是一个错误,它最终会找到解决办法。
但在短期内(例如,几天到几个月),主要的现实解决方案是解决它。
虽然提高 SR 并不能真正给你带来多大帮助,而且可能会是一次令人沮丧的经历,但它值得这样做,因为一旦 bug 得到修复,它可能会节省其他人的时间。
ORA-00600 basically means you've crash the oracle server (not the instance, just the server servicing your request).
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.
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.
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.
这些错误通常与优化器有关。 我认为即使是查询中最小的更改(例如在 FROM 子句中切换 table1 和 table2 的顺序)也可能会迫使优化器选择不会遇到此错误的不同计划。
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.
我的解决方案:
问题
这不起作用,出现错误 [0600]
这是我对问题的解决方案:
最终它有效:
My solution:
Problem
THIS DIDNT WORK WAS GETTING ERROR [0600]
HERE IS MY SOLUTION TO THE PROBLEM:
FINALLY IT WORKED:
ORA-00600 通常意味着出现了非常意外的情况,并且可能与数据库损坏有关。 症状可能是查询是否有效,具体取决于它的制定方式。
生活示例:
(可能)用于上述示例的解决方案
祝你好运!
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.
Life example:
(Possible) Solution used to the above example
Good Luck!
当表中有 XMLTYPE 列时,我使用 PL/SQL Developer 看到过这样的错误。 如果我让 PL/SQL Developer 为我创建查询框架,这种情况就不会发生,因为它会向 XMLTYPE 列请求添加一些语法,但我不记得具体是什么。
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.
我在记录类型涉及 USER_TAB_COLS 的情况下遇到了这种情况。 我对记录中应该保存 USER_TAB_COLS.DATA_DEFAULT 的字段使用了 VARCHAR2(128)。 好吧,无论出于什么原因,这都是很长的,虽然当我在命令窗口(PL/SQL Developer)中运行代码时此映射工作正常,但当我将相同的代码嵌入到执行各种任务的伞式脚本中时它失败了。 一旦我正确设置记录的数据类型以使用锚定类型 (USER_TAB_COLS.DATA_DEFAULT%TYPE) 而不是 VARCHAR2(128),执行该工作的 sp 将在任一上下文中运行。 我对它“独立”运行但从另一个脚本调用时不起作用的事实感到震惊。
这是我使用的记录类型:
您可以在其中看到字段 DEF_VALUE 的定义现在是锚定类型。
我不得不说,这很奇怪。 我本以为它在这两种情况下都会失败。
I encountered this in a situation with a record type that involved USER_TAB_COLS. I had used VARCHAR2(128) for the field in the record that was supposed to hold USER_TAB_COLS.DATA_DEFAULT. Well, that's a LONG, for whatever reason, and while this mapping worked OK when I ran the code in a command window (PL/SQL Developer), it failed when I embedded the very same in an umbrella script that did all sorts of tasks. Once I set the data type of the record correctly to use an anchored type (USER_TAB_COLS.DATA_DEFAULT%TYPE) instead of VARCHAR2(128), the sp that does the work runs in either context. I was buffaloed by the fact that it worked 'stand-alone' but not when called from another script.
Here is the record type I was using:
where you can see the definition of field DEF_VALUE is now an anchored type.
This was bizarre, I have to say. I would have expected it to fail in both contexts.