问题是这样子的,建了TYPE A和TYPE B, B引用了A, 所以B依赖于A.
然后修改A和B, 但因为引用依赖的原因, 反复的drop和create B.
然后,麻烦就来了, 无法修改A,始终报引用依赖的错.最后查sys.obj$和sys.dependency$, 发现在sys.obj$存在一条记录,记的是前一版本的B,实际上已经被删除,在pl/sql developer或enterprise mananger中都看不到它,但它却存在在sys.obj$中.更麻烦的是,在sys.dependency$中,上述这个"幽灵B",还引用着A,导致A也没法修改.这下该怎么搞,我可以直接在sys.obj$和sys.dependency$直接删除这个"幽灵B"吗?
直接操作系统数据字典表,会不会捅出什么篓子来?
然后修改A和B, 但因为引用依赖的原因, 反复的drop和create B.
然后,麻烦就来了, 无法修改A,始终报引用依赖的错.最后查sys.obj$和sys.dependency$, 发现在sys.obj$存在一条记录,记的是前一版本的B,实际上已经被删除,在pl/sql developer或enterprise mananger中都看不到它,但它却存在在sys.obj$中.更麻烦的是,在sys.dependency$中,上述这个"幽灵B",还引用着A,导致A也没法修改.这下该怎么搞,我可以直接在sys.obj$和sys.dependency$直接删除这个"幽灵B"吗?
直接操作系统数据字典表,会不会捅出什么篓子来?
解决方案 »
- 求oracle数据库软件和linux操作系统
- 如何从oracle客户端以sysdba用户登陆
- JSP,ORACLE,批量生成插入号码
- 为什么单纯的select语句会报回滚段不足?
- plsql里面,有个复杂的存储过程,里面包含子存储过程,如何把存储过程的sql倒出来,看看?
- 荣升Oracle中文论坛开发版版主,庆祝
- 怎样删除重复的记录
- 请问如何实现每条记录都显示一个总和以及累加值
- 关于update clob类型字段的问题
- 关于oracle与VB的问题
- ORA-31693 ORA-38500: Unsupported operation: Oracle XML DB not present
- COleDateTimeSpan的使用
呵呵,那我问个其他问题吧. 我现在的目的在于要改掉A. A原来是一个独立的type, 现在我创建了一个TYPE C作为基类,要使A继承C. 就是改成类似create or replace type A UNDER C这样的形式.修改A,如果是加个atrribute之类的,是可以用CASCADE关键字,绕过那个"幽灵B"直接修改的.
但要改成UNDER C, 可以直接用ALTER TYPE A+CASCADE改吗?我猜了几种写法,都没改成.
再create or replace type b,然后再drop type b
查看依赖是否还在。
drop type type_name force;
drop type type_name force;
purge recyclebin,重启服务器,都无效.去吃了顿饭回来,不死心,再运行drop type A force,还是报错ORA-21700,然后诡异的事情发生了,我看到pl/sql developer提交事务的按钮亮了.点提交,再查看sys.obj$, 发现那条'幽灵B'的记录没了,sys.dependency$里面的依赖记录也没了.然后,TYPE A变成了一条幽灵记录,就是说除了在sys.obj$有记录之外,在别的地方再也看不到它. 可以重新create A,也可以drop A, 但那条幽灵记录始终存在.而事务按钮再也没亮过. 结论:撞上oracle的内部bug了.