• 网络学院
  • IT资讯
  • 操作系统
  • 网络技术
  • 软件应用
  • 办公软件
  • 编程技术
  • 网站架设
  • 数据库类
  • 平面设计
  • 多媒体类
  • 游戏资讯
  • 教学论文
  • 认证考试
案例学习Oracle错误:ORA-00604
  站点:
  • 首 页
  • 最新软件
  • 文章教程
  • 国内软件
  • 国外软件
  • 绿色软件
  • 源码下载
  • 字体下载
案例学习Oracle错误:ORA-00604
软件发布 案例学习Oracle错误:ORA-00604
网络软件 系统工具 应用软件 联络聊天 图形图像 多媒体类 行业软件 游戏娱乐 编程开发 安全相关 教育教学 数码软件 绿软下载
热门软件: QQ 瑞星 pplive e话通 木马克星 千千静听 office2000 五笔字根 Photoshop 视频分割
返回文章教程首页 >> 认证考试 >> Oracle认证 >> Oracle指导 >> 案例学习Oracle错误:ORA-00604

案例学习Oracle错误:ORA-00604

添加时间: 2008-4-27 0:51:16  作者: Oracle指导  阅读次数:476   来源: http://www.d9soft.com

          我们有必要做个简单说明.

  我们知道,当我们发出一条简单的命令以后

  Oracle数据库要在后台解析这条命令,并转换为Oracle数据库的一系列后台操作.

  这些后台操作统称为递归sql

  比如create table这样一条简单的DDL命令

  Oracle数据库在后台,实际上要把这个命令转换为

  对于obj$,tab$,col$等底层表的插入操作.

  Oracle所作的工作可能比我们有时候想的要复杂的多.

  2.跟踪问题

  我们知道Oracle提供sql_trace的功能

  可以用于跟踪Oracle数据库的后台递归操作.

  通过跟踪文件,我们可以找到问题的所在

  以下是格式化(tkprof)后的输出:

  ********************************************************************************

  The following statement encountered a error during parse:

  DELETE FROM SDO_GEOM_METADATA_TABLE WHERE SDO_OWNER = 'WAPCOMM'

  Error encountered: ORA-00942

  ********************************************************************************
 


  Oracle把错误信息首先呈现出来

  我们看到ORA-00942错误是由于SDO_GEOM_METADATA_TABLE表/视图不存在所致

  问题由此可以定位

  对于这一类的错误,定位问题以后解决的方法就要依据具体问题原因而定了。

  3.问题定位

  对于本案例,通过Metalink获得以下解释:

  Problem Description

  -------------------

  The Oracle Spatial Option has been installed and you are encountering

  the following errors while trying to drop a user, who has no spatial tables,

  connected as SYSTEM:

  ERROR at line 1:

  ORA-00604: error occurred at recursive SQL level 1

  ORA-00942: table or view does not exist

  ORA-06512: at line 7

  A 942 error trace shows the failing SQL statement as:

  DELETE FROM SDO_GEOM_METADATA_TABLE WHERE SDO_OWNER = ''

  Solution Description

  --------------------

  (1) Create a synonym for SDO_GEOM_METADATA_TABLE under SYSTEM which points to

  MDSYS.SDO_GEOM_METADATA_TABLE.

  对于本例,为MDSYS.SDO_GEOM_METADATA_TABLE创建一个同义词即可解决.

  是相对简单的情况.

  (2) Now the user can be dropped connected as SYSTEM.

  Related Documents

  -----------------

  ORA-604 and ORA-942 Reported During DROP USER CASCA

  4.实际处理

  MDSYS.SDO_GEOM_METADATA_TABLE为Spatial对象

  如果未使用Spatial选项,可以删除

  SQL> connect / as sysdbaConnected.

  SQL> select * from dba_sdo_geom_metadata order by owner;

  select * from dba_sdo_geom_metadata order by owner

  *

  ERROR at line 1:

  ORA-00942: table or view does not exist

  ORA-04063: view "MDSYS.DBA_SDO_GEOM_METADATA" has errors

  SQL> select object_name from dba_objects where object_name like '%SDO%';

  OBJECT_NAME

  --------------------------------------------------------------------------------

  ALL_SDO_GEOM_METADATA

  ALL_SDO_INDEX_INFO

  ALL_SDO_INDEX_METADATA

  DBA_SDO_GEOM_METADATA

  DBA_SDO_INDEX_INFO

  DBA_SDO_INDEX_METADATA

  ....

  DBA_SDO_GEOM_METADATA

  DBA_SDO_INDEX_INFO

  ...

  SDO_WITHIN_DISTANCE

  USER_SDO_GEOM_METADATA

  USER_SDO_INDEX_INFO

  USER_SDO_INDEX_METADATA

  88 rows selected.

  SQL> drop user MDSYS cascade;

  User dropped.

  SQL> select owner,type_name from dba_types where type_name like 'SDO%';

  no rows selected

  SQL>

  SQL> alter session set sql_trace=true;

  Session altered.

  SQL> drop user wapcomm;

  User dropped.

  SQL> alter session set sql_trace=false;

  Session altered.

  SQL> exit

  Disconnected from Oracle8i Enterprise Edition Release 8.1.7.4.0 - 64bit Production

  With the Partitioning option

  JServer Release 8.1.7.4.0 - 64bit Production
 


  这时用户得以顺利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;

  现在到你为数据库定义的USER_DUMP_DEST 起始参数上的路径去。那里应该有一个时间戳为当前时间的文件。那个就是你生成的追踪文件。你可以打开文件并 检查 递归SQL语句,其中包括引起错误的一条。(接近追踪文件的末尾)。


  案例六:连接数据库用户的时候遇到ORA-00604错误
  问题描述:当我试图连接到数据库用户的时候,得到了如下的错误信息:ORA-00604:递归SQL 1级的时候出现错误。但是如果我使用数据库 管理 员的角色的时候,用户就能够连接。系统用户可以连接,但是scott 就不能连接。

  解决方案:Oracle为你在幕后做了很多的工作。它在自己的SQL 语句的全过程中进行这项工作。Oracle发布给你的任何的SQL 语句都是“递归的SQL”语句。应该有很多的SQL 语句会引起你遇到的问题。我建议你所做的就是在INIT.ORA文件中设置SQL_TRACE=TRUE,然后重新启动数据库。然后复制ORA-604错误。这会在你的USER_DUMP_DEST目录中生成所有用户进程的大量追踪文件。在错误发生之后,立即关闭数据库,并设置SQL_TRACE=FALSE。然后再一次启动数据库。现在通过追踪文件,你就可以USER_DUMP_DEST目录中生成的追踪文件中查找ORA-604错误那一条信息。就在那里,你就发现ORA-604错误是哪一个递归SQL语句产生的,以及实际发生的错误情况。你的解决方案依赖于语句和实际的错误。

案例学习Oracle错误:ORA-00604(2) 第 [1] [2] [3]  下一页

 

上下文章:

 

上一篇文章: 案例学习Oracle错误:ORA-00060 下一篇文章: 案例学习Oracle错误:ORA-00439

相关文章:

  • Oracle里DUAL表 序列建立
  • 如何手动创建oracle数据库
  • oracle 多元化控制文件
  • Oracle数据库的快照是一个表
  • 学习Ruby-Web程序开发的10条理由

相关软件:

  • 英语学习王 2009.0108 真人发音版
  • 二级VB学习系统 1.0
  • 新概念英语学习机 3.3
  • Turbo C for Windows 集成实验与学习环境 V6.11
  • 汇编语言学习工具 3.6
  • EnglishField英语学习软件 7.8

 

快速导航

  • 网络学院
  • 精品汇聚
  • 字体下载
  • 教程下载
  • ASP源码
  • PHP源码
  • Net源码
  • JSP 源码

Oracle认证分类导航

  • Oracle动态
  • Oracle指导
  • Oracle题库

本类经典文章推荐

  • Oracle中关于逻辑备份与恢复
  • Oracle开发人员JAVA存储过程
  • 为数据库的表自动生成行号
  • Oracle中的OOP概念
  • 用java从oracle取数
  • 冷备份移植到另一台Solaris机器上
  • 如何将excel数据导入oracle中
  • Oracle10.2g安装记录
  • 数据库监控工具ForOraclev1.2
  • oracle双机群集系统

Oracle指导阅读排行

  • Oracle系统表查询
  • 实例:Oracle导出EXCEL文件
  • Oracle常用的OCI函数上
  • 案例学习Oracle错误:ORA-00060
  • 案例学习Oracle错误:ORA-00604
  • 如何将excel数据导入oracle中
  • Tomcat+SQLServer连接池配置
  • 案例学习Oracle错误:ORA-00904
  • Oracle企业管理器(OEM 2.1)使用...
  • ORACLE数据库简介

Oracle认证阅读总排行

  • Oracle系统表查询
  • 实例:Oracle导出EXCEL文件
  • Oracle常用的OCI函数上
  • 案例学习Oracle错误:ORA-00060
  • 案例学习Oracle错误:ORA-00604
  • 在ORACLE的存储过程中如何做简单的...
  • 如何将excel数据导入oracle中
  • Tomcat+SQLServer连接池配置
  • AIX下自动启动Oracle数据库与监听...
  • 案例学习Oracle错误:ORA-00904

广告位置

字母检索 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 回到顶部

关于我们 | 版权声明 | 免责条款 | 广告联系 | 软件发布 | 下载帮助 | 下载排行 | 网站地图 | 特别鸣谢 | 友情连接

copyright; 2005-2008 D9soft.com 第九软件网 版权所有