Список истории инструкций SQL в хранилище DB2 в облаке

#sql #db2 #ibm-cloud #db2-luw #audit-logging

#sql #db2 #ibm-cloud #db2-luw #аудит-ведение журнала

Вопрос:

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

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

1. Какую версию / тип DB2 вы используете?

2. @MichaelS. Я использую тип: план предприятия — одиночный узел

3. Если вы запрашиваете только короткий период времени, если ваш authid имеет соответствующую авторизацию, и ваша рабочая нагрузка соответствующим образом настроена, поможет ли вам функция таблицы MON_GET_ACTIVITY?

Ответ №1:

То, что вы запрашиваете, обычно называется «аудит». Вы можете включить средство аудита 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
  

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

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

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

Ответ №2:

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