Oracle-删除错误视图

Oracle-删除错误视图,oracle,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 identi

我有一个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
下降X.z力
*
第1行错误:
ORA-06553:PLS-707:不支持的构造或内部错误[2604],[403]
ORA-06553:PLS-103:在期望以下情况之一时遇到符号“供应商”
以下是:
ORA-06553:PLS-112:引用标识符中的行尾
所提到的列错误地有一条换行符 (它是:“供应商 名称”)。我无法替换、重命名甚至删除以修复该问题的问题。
有什么办法可以让我放弃它或者重新创造它吗

根据中描述的内容,您应该能够执行以下操作:

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的,并且只能隐约猜测腐败。我尝试使用相同的版本导出和导入视图,但它仍然没有抱怨。因此,我无法验证它是否真的能像广告中所宣传的那样工作,但它看起来应该…

看一下。我刚刚创建了一个视图,其中包含一个换行符的列,从中选择(正常工作),然后将其删除。它工作得很好。我无法重现您正在报告的场景。这是一个独立的
DROP
语句,由SQL*Plus或SQL Developer等自行运行吗?还是显式或隐式地包装在某些PL/SQL代码中?这可能会导致问题(很明显,这是一个PL/SQL错误)。如果是这样,那么只需从SQL*Plus中删除视图即可。@mathguy我们会发现它似乎不是换行符本身,视图查询不知何故被破坏了。尝试了所有工具,但出现了相同的错误。提到的文件正是问题所在。