Показать время последнего обращения к таблице в БД Oracle - PullRequest
0 голосов
/ 30 мая 2018

Я использую СУБД Oracle для базы данных.Я пытаюсь очистить базу данных и хочу узнать, используются ли некоторые таблицы вообще.Мне требуется время последнего доступа к этим таблицам, чтобы прийти к заключению.

Обратите внимание, что мне нужна временная метка последнего запроса SELECT.У меня есть решения для поиска временных отметок других действий, таких как UPDATE, ALTER и т. Д. Я специально ищу SELECT отметку времени.

Любая помощь приветствуется.

Ответы [ 2 ]

0 голосов
/ 30 мая 2018

Да, @ lad2025 прав, я бы использовал AUDIT, чтобы узнать, кто обращается к таблицам.

Чтобы включить его, просто используйте:

AUDIT SELECT ON scott.emp  BY ACCESS;
AUDIT SELECT ON scott.dept BY ACCESS;  

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

SELECT * 
FROM DBA_OBJ_AUDIT_OPTS 
WHERE owner='SCOTT';

OWNER OBJECT_NAME OBJECT_TYPE SEL
SCOTT DEPT        TABLE       A/A
SCOT  EMP         TABLE       A/A

Если кто-то выбирает одну из проверенных таблиц, она отображается в журнале аудита:

SELECT * FROM scott.emp;

SELECT os_username, username, obj_name, action_name, timestamp
  FROM DBA_AUDIT_TRAIL 
 WHERE timestamp BETWEEN SYSDATE-7 AND SYSDATE
   AND owner = 'SCOTT' 
   AND action=3
 ORDER BY timestamp DESC;

OS_USERNAME USERNAME OBJ_NAME ACTION NAME TIMESTAMP
xxxx        yyy      EMP      SELECT      2018-05-30 08:01:07

Чтобы снова отключить ее, используйте:

NOAUDIT ALL ON scott.emp;
SELECT * FROM DBA_OBJ_AUDIT_OPTS WHERE OWNER='SCOTT';

OWNER OBJECT_NAME OBJECT_TYPE SEL
SCOTT DEPT        TABLE       A/A

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

0 голосов
/ 30 мая 2018

Вы можете использовать AUDIT(traditional auditing):

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