#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.
Не забудьте отключить трассировку базы данных.
Дэниел