Вложенные материализованные представления обнаруживают действия при фиксации?

#sql #database #oracle #database-design #materialized-views

#sql #База данных #Oracle #база данных-дизайн #материализованные представления

Вопрос:

Я хотел бы выяснить, какие действия (т. Е. Выбирает, вставляет, обновляет) выполняет база данных в ответ на say:

вставить в T (col_x, col_y, col_z) значения (val_x, val_y, val_z);

T в данном случае представляет собой таблицу с журналом материализованных представлений, но имеет дерево вложенных материализованных представлений, которые основаны на нем и обновляются при фиксации. (например, T1 основан на T, T2 основан на T1 и U1 и т.д.).

Я хочу посмотреть, что делает база данных в ответ на фиксацию, чтобы я мог понять, что я мог бы сделать, чтобы ускорить процесс (т. Е. Добавить индексы или изменить материализованные представления).

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

Комментарии:

1. 1 за опубликованные исходные проблемы, но если вы знаете материализованные журналы на основе этой таблицы, вы знаете даже то, что происходит при вставке в эту таблицу. Однако важно знать, что в случае обновления при фиксации все подразумеваемые DML выполняются в одной транзакции. Он не фиксируется до тех пор, пока не будут обновлены все MV.

Ответ №1:

Что вы можете сделать, так это запустить трассировку базы данных с помощью

  exec dbms_monitor.database_trace_enable();
  

Это позволит отслеживать все, что происходит в базе данных, в каталоге udump.
тогда просто

  grep "MV_NAME" *
  

Это выведет все файлы трассировки, которые имели какое-либо отношение к вашему MVS.
После этого вам нужно будет суммировать трассировки, чтобы вы могли лучше понять их с помощью tkprof.

Не забудьте отключить трассировку базы данных.

Дэниел