ویژگی Unified Auditing در پایگاه داده اوراکل مکانیزمی قدرتمند برای ثبت فعالیتهای دیتابیس بهصورت متمرکز و منسجم است. با این حال، این ویژگی میتواند چالشهایی برای DBA ایجاد کند، بهویژه زمانی که مدیریت حجم Audit Trail مدنظر باشد.
یکی از نگرانیهای رایج، فراهم کردن فضای ذخیرهسازی کافی برای جدول AUD$UNIFIED است. در برخی محیطها، DBA ممکن است بخواهد میزان دادههای ذخیرهشده در Audit Trail را با حذف ستونهای مشخص کاهش دهد.
اوراکل 23ai (نسخه 23.7) یک پارامتر جدید برای این منظور معرفی کرده است: UNIFIED_AUDIT_TRAIL_EXCLUDE_COLUMNS
پارامتر unified_audit_trail_exclude_columns این امکان را می دهد تا از ثبت Audit در ستونهای مشخصی از Unified Audit Trail جلوگیری کنیم، که باعث کاهش مصرف فضا و همچنین کاهش سربار ثبت جزئیات غیرضروری میشود.
SQL> SHOW PARAMETER unified_audit_trail_exclude_columns; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ unified_audit_trail_exclude_columns string NONE
بهصورت پیشفرض، مقدار آن NONE است، یعنی هیچ ستونی مستثنی نمیشود. برای اینکه تعیین کنیم این پارامتر چه مقدار مجازی را می پذیرد، از ترفند زیر استفاده می کنیم:
SQL> SHOW PARAMETER unified_audit_trail_exclude_columns NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ unified_audit_trail_exclude_columns string NONE SQL> VARIABLE v_id NUMBER; SQL> EXEC :v_id := 1; SQL> SELECT * FROM vahid.tb WHERE id=:v_id;
SQL> SELECT * FROM vahid.tb WHERE id=:v_id; SQL> SELECT dbusername, action_name, object_name, TO_CHAR(sql_binds) AS sql_binds, TO_CHAR(sql_text) AS sql_text FROM unified_audit_trail WHERE unified_audit_policies='POL_SELECT_TB'; DBUSERNAME ACTION_NAM OBJECT_NAME SQL_BINDS SQL_TEXT ---------- ---------- ----------- ---------- -------------------------------------------- VAHID SELECT TB #1(1):1 select * from vahid.tb where id=:V_ID
این تست نشان می دهد ستون SQL_TEXT به صورت پیش فرض متن دستور SQL را نگه می دارد.
این تست را با هدف استثنا کردن sql_text تکرار می کنیم:
SQL> ALTER SYSTEM SET unified_audit_trail_exclude_columns=sql_text; System altered. SQL> EXEC dbms_audit_mgmt.clean_audit_trail( audit_trail_type=>dbms_audit_mgmt.audit_trail_unified, use_last_arch_timestamp=>false); PL/SQL procedure successfully completed. SQL> select * from vahid.tb where id=:V_ID; ID FIRST_NAME LAST_NAME ---------- ---------- ----------- 1 Vahid Yousefzadeh
SQL> select dbusername,action_name ,object_name,to_char(sql_binds) sql_binds ,to_char(sql_text) sql_text from unified_audit_trail x where unified_audit_policies='POL_SELECT_TB'; DBUSERNAME ACTION_NAM OBJECT_NAME SQL_BINDS SQL_TEXT ---------- ---------- ----------- ---------- ----------------------------------------- VAHID SELECT TB #1(1):1
حالا ستون SQL_TEXT دیتایی ندارد و اطلاعات bind variable همچنان موجود است.
استثنا کردن SQL_BINDS
همانطور که در ابتدا عنوان شد، امکان اسثتا کردن ستون SQL_BINDS هم وجود دارد:
ستون DP_CLOB_PARAMETERS1 خالی است.
استثنا کردن RLS_INFO
برای محیطهایی که از RLS، VPD یا FGAC استفاده میکنند، میتوان ستون RLS_INFO را نیز مستثنی کرد:
SQL> ALTER SYSTEM SET unified_audit_trail_exclude_columns=rls_info; System altered;