Использование публичных синонимов внутри представлений оракула - PullRequest
1 голос
/ 07 марта 2012

Возможно ли иметь публичные синонимы внутри запроса материализованного представления?

Ответы [ 2 ]

2 голосов
/ 07 марта 2012

"получение: ОШИБКА в строке 1: ORA-00980: перевод синонимов больше не выполняется действует; но если я запускаю запрос для того же пользователя, он работает нормально "

Это сообщение означает, что синоним ссылается на объект, который не находится в области видимости. Это может произойти, когда основной объект удален или если имя написано с ошибкой. Это также может произойти, если объект находится в другой схеме, а владелец отзывает наши привилегии.

Поскольку ваш запрос выполняется нормально, мы можем исключить первую пару причин. Итак, ваша проблема - права доступа к объекту, на который указывает синоним.

Я думаю, что ваш пользователь получил права через роль. Это позволяет нам использовать объект в запросах. Однако мы не можем создавать объекты базы данных - хранимые процедуры, представления, материализуемые представления - используя эти разрешения. Нам нужно, чтобы эта привилегия была предоставлена ​​непосредственно пользователю. Именно так работает модель безопасности Oracle.

1 голос
/ 07 марта 2012

Давайте попробуем. Вам нужно предоставить правильные разрешения, но это похоже на работу. Я могу только догадываться, что ваша проблема - это ваш синоним, а не материализованное представление.

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.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...