منبع اصلی نوشتار زیر در این لینک قرار دارد

فعال کردن ویژگی DDL Logging در اوراکل 11g به بعد

بطور پیش فرض امکان 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 است) معلوم نیست و اطلاع هایی مانند خود دستور و هاستی که از آن انجام شده و … مشخص است.



برچسب ها : , , , ,