drop table 报ora-00942 表或者视图不存在//SQL_TRACE的基本用法

当尝试在Oracle数据库中执行DROP TABLE或DROP USER时遇到ORA-00942错误,可以使用SQL_Trace进行诊断。通过跟踪文件定位到问题,例如在本例中是由于SDO_GEOM_METADATA_TABLE表不存在导致的问题。解决方案可能包括创建同义词或根据具体情况解决依赖关系。SQL_Trace是一个强大的工具,可以用于跟踪数据库活动并帮助定位问题。
摘要由CSDN通过智能技术生成
使用Sql_trace进行Oracle诊断案例

  问题说明:很多时候,在我们进行数据库操作时,比如drop user,drop table等,经常会遇到这样的错误

  ORA-00604: error occurred at recursive SQL level 1 .

  这样的提示,很多时候是没有丝毫用处的。本案例就这一类问题提供一个思路及方法供大家参考。

  1. drop user出现问题

  报出以下错误后退出

  ORA-00604: error occurred at recursive SQL level 1

  ORA-00942: table or view does not exist .

  关于 recursive SQL 错误我们有必要做个简单说明。

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

  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_T
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值