Oracle-删除错误的视图

时间:2018-08-15 13:58:32

标签: oracle

我有一个Oracle视图,尝试查看,替换甚至删除该视图时,它会显示以下错误:

DROP X.z force
*
ERROR at line 1:
ORA-06553: PLS-707: unsupported construct or internal error [2604], [403]
ORA-06553: PLS-103: Encountered the symbol "Vendor " when expecting one of
the following:
<an identifier> <a double-quoted delimited-identifier>
ORA-06553: PLS-112: end-of-line in quoted identifier

提到的列错误地有一个换行符 (它是:“供应商 名称”)。我无法替换,重命名甚至删除来解决该问题。 有什么办法可以强制删除它或重新创建它?

1 个答案:

答案 0 :(得分:0)

根据My Oracle Support Doc ID 2254717.1中描述的内容(似乎恰好与此问题有关),您应该可以执行以下操作:

column object_id new_value bad_object_id;

select object_name, object_type, owner, status, object_id
from all_objects
where object_type='VIEW' and owner='X' and object_name = 'Z';

OBJECT_NAME                    OBJECT_TYPE         OWNER                          STATUS   OBJECT_ID
------------------------------ ------------------- ------------------------------ ------- ----------
Z                              VIEW                X                              VALID       445264

exec dbms_utility.invalidate(&bad_object_id);

PL/SQL procedure successfully completed.

select object_name, object_type, owner, status, object_id
from all_objects
where object_type='VIEW' and owner='X' and object_name = 'Z';

OBJECT_NAME                    OBJECT_TYPE         OWNER                          STATUS   OBJECT_ID
------------------------------ ------------------- ------------------------------ ------- ----------
Z                              VIEW                X                              INVALID     445264

drop view X.z;

View X.Z dropped.

我使用了替换变量,但是您当然可以手动输入对象ID。

我一直无法弄清楚如何重现此问题-MoS文档似乎也不知道它是如何发生的,尽管在那种情况下是从11g升级到12c,并且只能隐约地猜测腐败。我尝试使用相同的版本导出和导入视图,但是仍然没有抱怨。因此,我无法验证这是否可以像广告中所述正常工作,但看起来应该如此...