2012-03-23 88 views
3

此问题与one I posted yesterday有关,但具有更多含义。Oracle - 无法删除表格

情况是:我无法下降ANY表。这里有一个例子:

SQL> CREATE TABLE FOO (BAR NUMBER) TABLESPACE SYSTEM 
/
Table created. 

SQL> SELECT COUNT(1) FROM FOO; 
    COUNT(1) 
---------- 
     0 

SQL> DROP TABLE FOO; 
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 19 

所以,表似乎存在,但我不能够放弃它。

注意错误ORA-00604:在递归SQL级别1处发生错误。如果我尝试删除一个不存在的表,这个错误不会出现:

SQL> DROP TABLE NON_EXISTING_TABLE 
ERROR at line 1: 
ORA-00942: table or view does not exist 

不知何故,该系统无法找到表在下降时间

oracle安装和数据库本身是新的(一天的旧)。

编辑 - 我用重试另一个表空间和用户(我刚刚创建的)这个测试,我得到一个稍微不同的行为:使用SYS,我得到了DROP错误后,我仍然可以从表中选择。但是,使用这个新用户后,我得到了DROP错误,我不再可以从表中SELECT

解决方案

我们发现了问题所在:MDSYS.SDO_GEOR_SYSDATA_TABLE失踪,防止滴operation.The解决方案是恢复该表。这里是完整的解决方案,由Gaurav Soni(顺便说一下,非常感谢)。

运行脚本catmd.sql(位于$ ORACLE_HOME/md/admin目录中)。

catmd.sql脚本是加载数据库中Oracle空间所需的所有对象的脚本。然后放下用户。

你也可以参考Oracle metalinks

Steps for Manual Installation of Oracle Spatial Data Option

Dropping user results in ORA-942 against SDO_GEOM_METADATA_TABLE

+0

你安装了哪个oracle版本? [链接](http://www.dba-oracle.com/sf_ora_00604_error_occurred_and_recursive_sql_level_string.htm) – 2012-03-23 11:34:30

+0

Oracle数据库10g快捷版版本10.2.0.1.0 - 生产 – jpaires 2012-03-23 11:40:40

+0

有点远景,但它表现得像其他东西发生在这里。 DATABASE或您当前的架构上是否有DROP触发器? – 2012-03-23 12:02:34

回答

0

我认为这个问题是您创建的系统表空间中的表。您应该在用户表空间上创建它或创建一个来存储您的数据。

+0

正如我在我的问题的编辑部分所说,我尝试了一个不同的用户和表空间。 – jpaires 2012-03-23 12:19:11

+0

我不知道为什么这会阻止桌子掉落的一般原因。我可以在我的'SYSTEM'表空间中创建和删除表。 – 2012-03-23 12:21:03

3

我建议你激活SQL跟踪(ALTER SESSION SET SQL_TRACE=TRUE;)并再次尝试下降。这将在服务器上(在udump目录中)生成一个跟踪文件,该文件将显示会话执行的所有SQL,包括递归语句。这应该向您显示失败的递归SQL语句。

+0

使用你的建议和Gaurav的我能够缩小它:问题是与MDSYS.SDO_GEOR_DROP_USER触发器,最准确地与SDO_GEOR_SYSDATA_TABLE似乎并不存在!我试图选择该表,并得到“ORA-00942:表或视图不存在”。然后我编辑触发器在使用该表之前返回,现在我可以删除表格。接下来,最后,我使用该表格重新编辑触发器以立即返回,并且不再可以删除表格。该表不存在或无法找到。任何想法为什么? – jpaires 2012-03-23 14:56:39

+0

不知道。这与Oracle的Spatial Option相关,我相信,我没有任何经验。可能是在安装过程中发生错误。如果你不使用这个选项,最好的办法就是删除它。 – 2012-03-23 15:06:25

+0

很多很多,谢谢。我已经向我的同事询问了此表的创建脚本。现在我有桌子,我终于可以放桌子了。不过,我仍然好奇这是怎么发生的。 – jpaires 2012-03-23 15:28:56