`
mengzhiang
  • 浏览: 24055 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Oracle删除用户错误

 
阅读更多

案例四: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_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

分享到:
评论

相关推荐

    oracle删除用户下所有表

    ### Oracle 删除用户下所有表 在Oracle数据库管理中,有时候我们可能需要清除某个用户的全部数据,这包括该用户创建的所有表。但是需要注意的是,在执行此类操作时必须格外小心,因为一旦执行了删除命令,这些数据...

    Oracle数据库用户角色、表空间创建、删除命令

    - `CASCADE`:级联删除,即删除用户的同时也会删除该用户创建的所有对象,包括表、视图等。 #### 删除表空间 删除表空间前需确保该表空间未被任何用户使用: ```sql DROP TABLESPACE BCC INCLUDING CONTENTS AND ...

    Oracle创建删除用户、角色、表空间、导入导出数据库命令行方式总结

    要删除用户及其所有对象,使用 `DROP USER` 命令加上 `CASCADE` 参数: ``` DROP USER zfmi CASCADE; ``` 7. 删除表空间: 删除表空间需确保其未被其他用户使用,并使用 `INCLUDING CONTENTS` 和 `INCLUDING ...

    利用 Oracle 系统触发器防止误删除表操作

    当DBA或其他用户具有足够的权限时,可能会因为输入错误等原因执行`DROP TABLE`或`TRUNCATE TABLE`命令,导致重要的数据表被意外删除或清空。例如,用户原本打算删除名为`A`的表(`DROP TABLE A CASCADE CONSTRAINTS;`...

    oracle错误中文解释

    根据提供的文件内容,可以看出这是一份Oracle数据库错误代码及其简体中文解释的列表。这份文档主要涉及了Oracle 7版本的一些基本错误代码及其含义。接下来,我们将对这些错误代码进行详细的解析,帮助用户更好地理解...

    如何彻底删除Oracle

    打开“数据源 (ODBC)”对话框,删除所有与Oracle相关的用户DSN和系统DSN。 #### 步骤9:清理事件查看器 在“事件查看器”中,找到与Oracle相关的日志条目,并将其删除。这样可以进一步减少Oracle存在的痕迹。 ###...

    Oracle10g创建、修改、删除用户和用户表空间

    在Oracle 10g数据库管理中,创建、修改和删除用户以及用户表空间是数据库管理员(DBA)的常见任务。这些操作对于维护数据库的安全性、性能和数据完整性至关重要。下面将详细阐述如何在Oracle 10g中执行这些操作。 ###...

    Linux下Oracle删除用户和表空间的方法

    本文将详细介绍如何在Linux下的Oracle环境中删除用户和表空间,以及处理可能遇到的问题。 首先,我们来看如何删除Oracle数据库中的用户。用户删除是一个系统级别的操作,需要以SYSDBA权限登录到数据库。以下是删除...

    Oracle 删除用户和表空间详细介绍

    Oracle数据库管理中,删除用户和表空间是常见的维护任务,特别是在开发环境中,为了保持数据库的整洁和高效运行,定期清理无用的用户和表空间至关重要。以下是对标题和描述中涉及知识点的详细解释: 1. **Oracle ...

    oracle crs 配置错误详解

    在配置Oracle CRS时,可能会遇到各种错误,这通常与网络配置、主机名设置、ASM(Automatic Storage Management)磁盘组的管理以及权限问题有关。下面是对这些常见错误的详细解释和处理方法。 首先,PRKP-1001 和 ...

    Oracle中通过触发器来追踪用户的活动

    在Oracle数据库中,跟踪用户活动是一项重要的管理任务,有助于监控系统的使用情况、保障安全和优化性能。Oracle从Oracle8i开始引入了一类特殊触发器,它们不再局限于传统的DML事件,而是扩展到了系统级别,包括...

    Oracle数据库常见错误处理方法

    本文将详细介绍一些常见的Oracle错误及其处理方法,帮助用户更好地管理和维护Oracle数据库。 #### 二、ORA-12560: TNS 协议适配器错误 **错误描述:** 当尝试连接到Oracle数据库时,用户可能会收到ORA-12560: TNS:...

    oracle常见错误号

    Oracle数据库在运行过程中可能会遇到各种错误,这些错误通常以错误号的形式出现,帮助数据库管理员或开发者定位问题。以下是一些常见的Oracle错误号及其原因和解决办法: 1. ORA-01002:fetch out of sequence - 当...

    删除oracle下当前用户创建的所有对象

    在提供的压缩包文件中,"oracle删除所有表-1.sql"、"oracle删除所有表-2.sql"和"oracle删除所有表.sql"可能包含了这些命令。这些脚本通常会按照以下步骤进行: 1. **验证权限**:在开始删除操作之前,需要确保具有...

    Oracle错误码大全

    3. ORA-00942: 表或视图不存在 - 通常是由于拼写错误、权限问题或对象已被删除导致的。检查对象名的正确性,确认用户有访问该对象的权限。 4. ORA-01555: 快照过旧 - 数据库回滚段空间不足,导致无法回滚事务。可以...

    ORACLE9i错误信息查询文档

    这里可能包含有关表、索引、视图、存储过程、触发器、用户权限等的创建、修改和删除操作的指导,以及这些操作中可能遇到的错误信息。例如,"ORA-01438"错误通常意味着值超出指定列的精度,文档会解释如何调整数据...

    oracle错误编码一览

    在Oracle数据库管理与维护过程中,遇到错误编码是常有的事情。理解这些错误编码背后的具体含义对于快速定位问题、解决问题至关重要。以下是对部分Oracle错误编码的详细解析,这将帮助数据库管理员或开发人员更准确地...

    Oracle数据库用户角色、表空间创建、删除命令.pdf

    - `CASCADE`选项表示级联删除,即在删除用户的同时也会删除该用户拥有的所有对象。 #### 五、删除表空间 1. **删除表空间前的注意事项**: - 在删除表空间之前,需要确保该表空间不再被其他用户使用。 - 如果表...

    ORACLE常见错误代码的分析与解决

    ORACLE数据库在使用过程中,经常会遇到各种错误代码,了解这些错误代码的产生原因和解决方法对于数据库管理员而言至关重要。本文将详细分析ORACLE中两种常见的错误代码ORA-01650和ORA-01652,并提供相应的解决策略。...

Global site tag (gtag.js) - Google Analytics