1

在物化视图查询中是否可以有公共同义词?

4

2 回答 2

2

“得到:第 1 行的错误:ORA-00980:同义词翻译不再有效;但如果我为同一个用户运行查询,它运行正常”

该消息意味着同义词引用了不在范围内的对象。当底层对象被删除或名称拼写错误时,可能会发生这种情况。如果对象在另一个模式中并且所有者撤销了我们的权限,也会发生这种情况。

由于您的查询运行正常,我们可以排除前几个原因。所以你的问题是同义词指向的对象的权限。

我认为您的用户已通过角色获得权限。这允许我们在查询中使用该对象。然而,我们不能使用这些权限来构建数据库对象——存储过程、视图、实体化视图。我们需要将权限直接授予用户。这正是 Oracle 安全模型的工作方式。

于 2012-03-07T10:14:26.960 回答
1

我们试试看。您显然需要被授予正确的权限,但它似乎有效。我只能猜测您的问题是您的同义词而不是物化视图。

create table tmp_test as
 select level as id, 'something' as blah
   from dual
connect by level <= 100;

Table created.


alter table tmp_test
  add constraint pk_tmp_test
      primary key (id)
      using index;

Table altered.


create materialized view log on tmp_test with primary key;

Materialized view log created.


create or replace public synonym testing123 for tmp_test;

Synonym created.


create materialized view working
refresh fast on demand
as
select *
from testing123;

Materialized view created.


select *
  from working
 where rownum < 11
       ;

        ID BLAH
---------- ---------
         1 something
         2 something
         3 something
         4 something
         5 something
         6 something
         7 something
         8 something
         9 something
        10 something

10 rows selected.
于 2012-03-07T09:05:45.567 回答