WEB开发网
开发学院数据库Oracle 案例学习Oracle错误:ORA-00604 阅读

案例学习Oracle错误:ORA-00604

 2007-05-10 12:19:56 来源:WEB开发网   
核心提示: 这时用户得以顺利drop5.一点总结使用sql_trace可以跟踪数据库的很多后台操作有利于我们发现问题的所在,很多时候,我们想要研究Oracle的内部活动或后台操作,也可以通过sql_trace跟踪,sql_trace/10046 是Oracle提供的最为有效的诊断工具之一.案例五:表更

这时用户得以顺利drop

5.一点总结

使用sql_trace可以跟踪数据库的很多后台操作有利于我们发现问题的所在,很多时候,我们想要研究Oracle的内部活动或后台操作,也可以通过sql_trace跟踪,sql_trace/10046 是Oracle提供的最为有效的诊断工具之一.

案例五:表更新时发生递归SQL2级失败错误

问题描述:表更新的时候失败了,并且生成了一条ORA-00604 错误信息。这个错误发生在递归SQL 2级。

解决方案:不幸的是,这个错误并不能告诉你Oracle数据库在错误发生的时候正要做什么。当你执行一条SQL语句的时候,Oracle数据库辉为你在幕后做很多事情。例如,考虑下面的SQL语句:

UPDATE emp SET sal = sal*1.05 WHERE empno=1001;

这条SQL语句给号码为1001的雇员涨5%的工资。当你执行这条语句的时候,Oracle查询数据目录来确定是否有这个表或者你是否使用了同义字。一旦它找到了数据库对象,Oracle查询数据字典来判断你是否拥有访问这个对象的权限。那么,Oracle到底是如何与数据字典进行交互的呢?它执行一条自己的SQL 语句。这些Oracle为你执行的SQL语句被称为“递归”SQL语句。你最初的SQL 语句是0级。Oracle为你执行的递归SQL语句是1级。有时候,一条递归SQL语句又会引起自己的递归SQL语句,就是2级。

在你的案例中,有一个2级的递归SQL语句正在执行,并且产生了问题。为了解决问题,你需要找出执行的是什么递归SQL语句引起的错误。要做到这一点,你必须启动会话中的追踪。首先,执行下面的SQL 语句:

  ALTER SESSION SET sql_trace=TRUE;

然后,执行你的更新语句。你会看到ORA-604 错误。接下来,执行下面的语句:

  ALTER SESSION SET sql_trace=FALSE;

上一页  2 3 4 5 6 7 8  下一页

Tags:案例 学习 Oracle

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接