بطور پیش فرض امکان Log کردن دستور های DDL انجام شده در اوراکل وجود ندارد. با فعال کردن پارامتر enable_ddl_logging امکان ثبت انجام این دستور ها وجود دارد. اگر مقدار این پارامتر TRUE باشد به معنی فعال بودن این ویژگی است و دستور های DDL انجام شده در فایلی Log خواهند شد. فعال کردن آن به دو صورت انجام می شود: فعال کردن در یک جلسه یا session و فعال کردن آن در سطح system. با فعال کردن در سطح session پس از خرج شدن از جلسه پارامتر غیر فعال می شود اما در سطح سیستم بطور دایمی خواهد بود.با فعال کردن آن فهرستی از دستور های مانند زیر ثبت می شوند.
- ALTER/CREATE/DROP/TRUNCATE CLUSTER
- ALTER/CREATE/DROP FUNCTION
- ALTER/CREATE/DROP INDEX
- ALTER/CREATE/DROP OUTLINE
- ALTER/CREATE/DROP PACKAGE
- ALTER/CREATE/DROP PACKAGE BODY
- ALTER/CREATE/DROP PROCEDURE
- ALTER/CREATE/DROP PROFILE
- ALTER/CREATE/DROP SEQUENCE
- CREATE/DROP SYNONYM
- ALTER/CREATE/DROP/RENAME/TRUNCATE TABLE
- ALTER/CREATE/DROP TRIGGER
- ALTER/CREATE/DROP TYPE
- ALTER/CREATE/DROP TYPE BODY
- DROP USER
- ALTER/CREATE/DROP VIEW
بررسی اینکه آیا پارامتر فعال است یا نه از دستور زیر استفاده کنید. اگر FALSE باشد یعنی فعال نمی باشد.
show parameters ddl_logging
NAME TYPE VALUE
———————- ———– ——————————
enable_ddl_logging boolean FALSE
حال برای فعال کردن آن در سطح جلسه و یا در سطح سیستم باید از دستور های زیر استفاده کنید.
;alter session set enable_ddl_logging=true
;alter system set enable_ddl_logging=true
Log ها در یک فایل xml به نام log.xml ثبت خواهند شد.
cd /u01/app/oracle/diag/rdbms/orcl/orcl/alert
ls
OUTPUT
log.xml
خط های زیر بخشی از فایل هستند. هر خطی که میان <msg> و <msg/> برای یک دستور DDL انجام شده است.
<msg time=’2014-01-21T17:10:38.819+03:30′ org_id=’oracle’ comp_id=’rdbms’
msg_id=’opiexe:3954:4222364190′ client_id=” type=’NOTIFICATION’
group=’schema_ddl’ level=’16′ host_id=’oraclesrv.localhost‘
host_addr=’127.0.0.1′ module=’SQL*Plus’ pid=’3369‘>
<txt>create table t1(id number)
</txt>
</msg>
چیزی که معلوم است اینکه کاربری که دستور DDL را انجام داده (توجه کنید این ویژگی برای تنها دستور های DDL است) معلوم نیست و اطلاع هایی مانند خود دستور و هاستی که از آن انجام شده و … مشخص است.