是否可以在物化视图查询中使用公共同义词?
答案 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.