我想删除在oracle9i已经存在的表,数据库没有做任何特殊的设置。用户也是以最高的权限登录,但是当删除一张表时,跳出错误“VBO-4562:无法删除表。ORA-04098:触发器'XDB.XDB_PI_TRIG'无效且未通过重新确认”。
哪位高人给点思路。

解决方案 »

  1.   

    提示信息有说明了table上定义有触发器, 先删除trigger.
      

  2.   

    看你的错误信息就知道你在删除ORACLE自带的XDB SCHEMA下的表, 这应该是不被允许的. 
      

  3.   

    我在方案:test下,表空间ysdb上建的ywt表啊。
    删除时跳出错误“VBO-4562:无法删除表。ORA-04098:触发器'XDB.XDB_PI_TRIG'无效且未通过重新确认”。 
    ,我也看到有XDB表空间,但是没使用这个表空间啊!
    会不会是日志满了?
      

  4.   

    OK,你的问题在于XDB.XDB_PI_TRIG这个TRIGGER,我还没有仔细研究这个TRIGGER,不过可以肯定的是它在你执行DROP语句的时候会触发. 而当它执行时,因为某种原因它失败了.所以导致你无法完成删除的操作.根据04098错,你的XDB.XDB_PI_TRIG应该现在的状态是INVALID的. 检查这个TRIGGER的代码,并编译确保它成功,可以解决你的问题. 如果你一时无法编译它, 考虑DISABLE它, 但前提是你用的是测试或开发环境. select owner,trigger_name,trigger_type,triggering_event, status
      from dba_triggers
      where trigger_type like '%EVENT'
           and triggering_event like '%DROP%'
      order by 1,2
    /