无法删除oracle视图,因为视图不存在但视图仍然存在

时间:2014-08-29 16:38:06

标签: sql oracle view ddl

所以我试图放弃一个观点......但是它说它不存在但是我仍然可以看它并描述它,它怎么可能发生?

http://i58.tinypic.com/23upo37.png

很抱歉,但我无法发布图片。

2 个答案:

答案 0 :(得分:2)

查看您提供的屏幕,我意识到您正在尝试删除USER_CONS_COLUMNS视图。 USER_CONS_COLUMNS是一个您不能删除它的系统视图。

答案 1 :(得分:0)

USER_CONS_COLUMNS是具有相同名称的数据字典视图的公共同义词。您收到错误是因为您尝试使用DROP VIEW删除公共同义词:

SQL> create view test_view as select * from dual;

View created.

SQL> create public synonym test_view_syn for test_view;

Synonym created.

SQL> desc test_view_syn;
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 DUMMY                                              VARCHAR2(1)

SQL> drop view test_view_syn;
drop view test_view_syn
*
ERROR at line 1:
ORA-00942: table or view does not exist

如果您真的想要,可以删除公开同义词USER_CONS_COLUMNS

SQL> drop public synonym user_cons_columns;

Synonym dropped.

然后,对于除SYS以外的所有用户,它似乎已经消失了:

SQL> desc user_cons_columns
ERROR:
ORA-04043: object user_cons_columns does not exist

将它取回相当容易。以SYS

运行此项
SQL> create public synonym user_cons_columns for sys.user_cons_columns;

Synonym created.

但是为什么你要放弃这个观点?