0

在 oracle 上运行大型查询时出现此错误。有什么建议吗?我正在使用 pl sql 版本 10.2

我注意到这个错误是由于创建了一个基于许多表的视图,当我从这个视图中选择一个带有 where 条件的特定参数时,我得到了那个错误。当我检查日志时,我发现了这一点

ora 07445 访问冲突

所以这是由于视图上的某些东西。我对从中创建视图的表拥有完全的权利。而且我没有使用任何网络,数据库在我的机器上。

谢谢。

4

2 回答 2

2

这通常是在数据库服务器操作系统级别杀死某些东西时。但这是一个相当普遍的错误。但是在我的特定世界中,如果机器 B 上的数据库服务器关闭,我将在机器 A 上的应用程序服务器日志中看到这一点。在您的情况下,您的桌面正在失去与 DBMS 的通信。如果某些管理员或自动化进程将您的查询标识为资源占用(即您有笛卡尔积),您的“大型查询”可能会在进程级别被杀死。

需要明确的是,这很可能是您作为客户端做错的事情,而不是您的服务器或 Oracle 本身的错误。

更新,因为您提供了更多详细信息。由于数据库正在您的机器上运行,我敢打赌您的查询遇到了 RAM 不足来支持客户端和服务器操作。

于 2010-07-27T20:54:36.677 回答
2

从有用的oerr命令:

$ oerr ora 3113
03113, 00000, "end-of-file on communication channel"
// *Cause: The connection between Client and Server process was broken.
// *Action: There was a communication error that requires further investigation.
//          First, check for network problems and review the SQL*Net setup.
//          Also, look in the alert.log file for any errors. Finally, test to
//          see whether the server process is dead and whether a trace file
//          was generated at failure time.

所以最可能的原因:

  1. 您连接的服务器进程崩溃了。
  2. 网络问题中断了您的连接。
  3. 有人手动杀死了您连接的服务器上的进程。

当您连接的服务器进程崩溃时,它会抛出 ORA-07445。该错误以及 ORA-00600 是相对著名的 Oracle 错误。它们是功能上未处理的异常,ORA-00600 是 Oracle 代码中的未处理异常,而 ORA-07445 是来自操作系统的致命信号,通常是因为 Oracle 做了操作系统不同意的事情,所以操作系统杀死了Oracle进程。

Oracle 的支持站点 ( http://metalink.oracle.com ) 有一个针对这些错误的在线疑难解答程序——在 metalink 中搜索文档 600.1,并从日志文件中输入适当的信息,您可能会收到一些有用的疑难解答信息。

于 2010-07-27T21:16:08.427 回答