Oracle
 sql >> база данни >  >> RDS >> Oracle

Одит в Oracle

Ако имате корпоративно издание 10g, трябва да погледнете Fine-Grained Auditing на Oracle. Определено е по-добре, отколкото да търкаляте сами.

Но ако имате по-малка версия или по някаква причина FGA не е по вашия вкус, ето как да го направите. Ключовото нещо е:изградете отделна таблица за одит за всяка таблица на приложение .

Знам, че това не е това, което искате да чуете, защото не съответства на структурата на таблицата, която очертахте по-горе. Но съхраняването на ред със СТАРИ и НОВИ стойности за всяка колона, засегната от актуализация, е наистина лоша идея:

  1. Не се мащабира (една актуализация, докосваща десет колони, създава десет вмъквания)
  2. Ами когато вмъкнете запис?
  3. Пълна мъка е да се сглобява състоянието на запис във всеки даден момент

Така че, имайте таблица за одит за всяка таблица на приложението с идентична структура. Това означава включването на CHANGED_TIMESTAMP и CHANGED_USER в таблицата на приложението, но това не е лошо.

И накрая, и знаете докъде води това, имайте тригер за всяка таблица, който вмъква цял запис само със стойностите :NEW в таблицата за одит. Задействането трябва да се задейства при INSERT и UPDATE. Това дава пълната история, достатъчно е лесно да се разграничат две версии на записа. За DELETE ще вмъкнете запис за одит само с попълнен първичен ключ и празни всички останали колони.

Вашето възражение ще бъде, че имате твърде много таблици и твърде много колони, за да приложите всички тези обекти. Но е достатъчно просто да генерирате таблицата и да задействате DDL изрази от речника на данните (user_tables, user_tab_columns).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. хибернация диалект за оракул 12c

  2. Как да проверя дали съществува съхранена процедура?

  3. Как да създадем и използвам временна таблица в съхранената процедура на Oracle?

  4. java.security.AccessControlException:достъпът е отказан (java.security.SecurityPermission authProvider.SunMSCAPI)

  5. NLS_LOWER() Функция в Oracle