Вывести историю операторов SQL в хранилище DB2 в облаке - PullRequest
0 голосов
/ 03 апреля 2019

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

Ответы [ 2 ]

1 голос
/ 03 апреля 2019

Вы можете создать или использовать существующий монитор событий для действий .
Информация о готовых операторах SQL с большим количеством показателей производительности собрана в таблицах.
У вас есть возможность собирать такую ​​информацию для всей базы данных, конкретных объектов WLM (рабочих нагрузок, классов обслуживания) и даже для определенных сеансов.

1 голос
/ 03 апреля 2019

То, что вы просите, обычно называется «аудит». Вы можете включить функцию аудита Db2 в облачных экземплярах, например,

create audit policy exec_policy categories execute status both error type normal;
audit database using policy exec_policy;

Вы не можете ограничить аудит выполнения оператора только запросами; Операторы DML и DDL также будут записаны.

Затем вы будете регулярно перемещать записи аудита из журнала в таблицы аудита:

call audit.update()

и выберите данные:

select * from audit.execute

Более подробную информацию вы найдете в руководстве .

Обратите внимание, что аудит имеет определенные последствия для производительности, поскольку каждое аудированное событие записывается синхронно.

Очевидно, вы не можете вернуться назад во времени и захватить события, которые уже завершены. Будут записаны только события, происходящие после включения аудита.

...