ORA-00980: synonym translation is no longer valid

[复制链接]
查看11 | 回复5 | 2011-2-18 11:42:48 | 显示全部楼层 |阅读模式
oracle 11.2.0.1查看view DBA_NETWORK_ACL_PRIVILEGES
SQL> select * from DBA_NETWORK_ACL_PRIVILEGES;
select * from DBA_NETWORK_ACL_PRIVILEGES

*
ERROR at line 1:
ORA-04063: view "SYS.DBA_NETWORK_ACL_PRIVILEGES" has errors
查找view DBA_NETWORK_ACL_PRIVILEGES的创建脚本,发现是视图XDS_ACE失效了
SQL>select object_name,status from dba_objects where object_name='XDS_ACE';
OBJECT_NAMEOBJECT_TYPE
-STATUS
-----------------------------------------------------------------------------
XDS_ACE
VIEW
INVALID
XDS_ACE
SYNONYM
INVALID
查看XDS_ACE的创建
CREATE OR REPLACE FORCE VIEW SYS.XDS_ACE
(
ACLID,
START_DATE,
END_DATE,
IS_GRANT,
INVERT,
PRINCIPAL,
PRIVILEGE
)
AS
SELECT a.object_id,

EXTRACTVALUE (VALUE (b),

'/ace/@start_date',

'xmlns="http://xmlns.oracle.com/xdb/acl.xsd"'),

EXTRACTVALUE (VALUE (b),

'/ace/@end_date',

'xmlns="http://xmlns.oracle.com/xdb/acl.xsd"'),

SUBSTR (

EXTRACTVALUE (VALUE (b),

'/ace/grant',

'xmlns="http://xmlns.oracle.com/xdb/acl.xsd"'),

1,

5

),

CASE EXISTSNODE (VALUE (b),

'/ace/invert',

'xmlns="http://xmlns.oracle.com/xdb/acl.xsd"')

WHEN 1

THEN

'true'

ELSE

'false'

END,

CASE EXISTSNODE (VALUE (b),

'/ace/invert',

'xmlns="http://xmlns.oracle.com/xdb/acl.xsd"')

WHEN 1

THEN

EXTRACTVALUE (

VALUE (b),

'/ace/invert/principal',

'xmlns="http://xmlns.oracle.com/xdb/acl.xsd"'

)

ELSE

EXTRACTVALUE (

VALUE (b),

'/ace/principal',

'xmlns="http://xmlns.oracle.com/xdb/acl.xsd"'

)

END,

EXTRACT (VALUE (b),

'/ace/privilege',

'xmlns="http://xmlns.oracle.com/xdb/acl.xsd"')
FROM xdb.xdb$acl a,

table (XMLSEQUENCE (EXTRACT (a.object_value, '/acl/ace'))) b;
recreate 失败,select 一下发现是下面出现问题,可xdb.xdb$ac是个table,怎么会出现这个错误呢,不甚理解
CASE EXISTSNODE (VALUE (b),

*
ERROR at line 11:
ORA-00980: synonym translation is no longer valid



回复

使用道具 举报

千问 | 2011-2-18 11:42:48 | 显示全部楼层
这个错是说同义词无效了,是不是创建同义词的对象现在是无效的状态
回复

使用道具 举报

千问 | 2011-2-18 11:42:48 | 显示全部楼层
eric0435 发表于 2012-12-12 15:02
这个错是说同义词无效了,是不是创建同义词的对象现在是无效的状态

是的 同义词SYS.XDS_ACE失效了,就是不明白为什么失效了
回复

使用道具 举报

千问 | 2011-2-18 11:42:48 | 显示全部楼层
g644516804 发表于 2012-12-12 15:08
是的 同义词SYS.XDS_ACE失效了,就是不明白为什么失效了

你看一上这个SYS.XDS_ACE是建在什么对象上的,比如
create or replace synonym IF_CORP_FEE_INFO
for IF_CORP_FEE_INFO@TYZJ;
那么IF_CORP_FEE_INFO@TYZJ;这个表是不是有效的了

回复

使用道具 举报

千问 | 2011-2-18 11:42:48 | 显示全部楼层
g644516804 发表于 2012-12-12 15:08
是的 同义词SYS.XDS_ACE失效了,就是不明白为什么失效了

你看一上这个SYS.XDS_ACE是建在什么对象上的,比如
create or replace synonym IF_CORP_FEE_INFO
for IF_CORP_FEE_INFO@TYZJ;
那么IF_CORP_FEE_INFO@TYZJ;这个表是不是有效的了

回复

使用道具 举报

千问 | 2011-2-18 11:42:48 | 显示全部楼层
eric0435 发表于 2012-12-12 15:34
你看一上这个SYS.XDS_ACE是建在什么对象上的,比如
create or replace synonym IF_CORP_FEE_INFO
for...

问题解决了, EXISTSNODE 是synonym,之前以为是函数呢,直接drop synonymEXISTSNODE
再重新编译视图即可了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行