在oracle物化视图中使用公共同义词

时间:2012-03-07 07:56:25

标签: oracle materialized-views synonym

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

2 个答案:

答案 0 :(得分:2)

  

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

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

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

我认为您的用户已通过角色获得了权限。这允许我们在查询中使用该对象。但是,我们无法使用这些权限构建数据库对象 - 存储过程,视图,materiliazed视图。我们需要将权限直接授予用户。这就是Oracle安全模型的工作方式。

答案 1 :(得分: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.