ORA-08103: объект больше не существует - материализованный вид - PullRequest
0 голосов
/ 26 ноября 2018

Я выбираю из стандартного представления (view1), которое ссылается на материализованное представление (mview1).Стандартный вид создается с опцией «FORCE», а материализованный вид создается «REFRESH COMPLETE ON DEMAND».Поскольку я не знаю, когда обновляется материализованное представление (кто или что требует обновления), я не могу избежать обновления материализованного представления в то же время, когда оно используется в запросе обычного представления.

Когда это происходит одновременно, запрос к ошибкам view1 завершается с:

Сообщение: ORA-08103: объект больше не существует

Я думал, что изменение параметра «ЗАВЕРШИТЬ» с помощью"FORCE" в материализованном представлении предотвратит возникновение этой ошибки.

Если вы сможете пролить некоторый свет на это и / или предложить решение, оно будет очень признательно.

Cheers

1 Ответ

0 голосов
/ 26 ноября 2018

Сначала не отбрасывайте и не создавайте материализованное представление, обновите его, используя процедуру DBMS_MVIEW.REFRESH - DROP - это то, что приводит к ORA-08103: object no longer exists

Вам необходимо установить atomic_refresh параметр от DBMS_MVIEW.REFRESH до true.

Это обновит представление материализации в одной транзакции, поэтому представление материализации никогда не будет пустым.

Технически DELETE, INSERT и commit выполняются для таблицы представления материализации, поэтому до фиксации вы видите старое состояние, после принятия нового состояния.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...