تا حالا شده بخواین یک redo log یا archive log رو باز کنید؟ مجموعه ابزار Toad for Oracle یکی از ابزارهای قدرتمند مدیریت پایگاه‌داده اوراکل هستش که با در اختیار قراردادن ابزار Oracle LogMiner به صورت گرافیکی و ویزاردی به ما کمک میکنه که بتونیم redo log ها رو بخونیم. سرور فعلی من آرشیو لاگش فعال نیست و فعلا به خوندن redo logها بسنده میکنم.

برای بررسی و تحلیل Redo Logها پس از اتصال به دیتابیس از Database > Diagnose > LogMiner ابزار مدنظر رو فراخوانی می‌کنیم:

در این صفحه گزینه Next رو با قبول گزینه‌های پیشفرض انتخاب می‌کنیم:

  • َUse Online Data Dictionary = همونطور که مشخصه برای خوندن مسیرها و ... از دیتا دیکشنری‌های موجود دیتابیس استفاده میکنه
  • Use Dictionary in Redo Logs = این گزینه برای پیدا کردن مسیرها و ... اقدام به ایجاد یک دیکشنری از روی آرشیوها میکنه که تو این حالت حتماً باید دیتابیس تو حالت آٰشیو باشه وگرنه پیغام خطای زیر رو می‌بینید:
11:32:23 Info: ORA-01325: archive log mode must be enabled to build into the logstream ORA-06512: at "SYS.DBMS_LOGMNR_INTERNAL", line 3333 ORA-00258: manual archiving in NOARCHIVELOG mode must identify log ORA-06512: at "SYS.DBMS_LOGMNR_INTERNAL", line 5972 ORA-06512: at "SYS.DBMS_LOGMNR_INTERNAL", line 6070 ORA-06512: at "SYS.DBMS_LOGMNR_D", line 12 ORA-06512: at line 2

در این صفحه چون قصد داریم Online Redo Logs ها رو بخونیم گزینه مربوط رو انتخاب می‌کنیم:

در این صفحه logهایی رو که قصد داریم روی اون فعالیت انجام بشه انتخاب می‌کنیم، همچنین می‌تونیم با ctrl + a تمام لاگها رو انتخاب کنیم و یا به صورت انتخابی اینکار رو انجام بدیم:

اگه بر روی دکمه‌ی Edit Query کلیک کنیم کوئری‌ای که toad از دیتادیکشنری‌های دیتابیس گرفته تا این صفحه رو به ما نشون بده رو می‌تونیم ببینیم و ویرایش کنیم:

اگه تمام لاگ‌ها رو انتخاب کنید به همچین خروجی می‌رسید:

فعلا من قصد دارم فقط یکی از لاگ‌ها رو پردازش کنم پس فقط یکی از لاگ‌ها رو به این صفحه اضافه میکنم:

خب با زدن دکمه‌ی Next به صفحه‌ی بعدی ویزارد می‌رسیم که توش مشخصات redo logهای انتخاب رو نمایش میده، اگه فقط یکی از redo log ها رو برای پردازش داده باشید فقط اطلاعات اون redo رو نمایش میده و اگه چندین redo رو انتخاب کرده باشید مجموع داده رو نمایش میده.

در حالتی که فقط یک redo انتخاب شده:

در حالتی که چند redo log انتخاب شده:

همونطور که تو شکل‌های بالا مشخصه این پنجره میگه redo logهای انتخابی شماره SCNهای موجود در Online Redo Logهای انتخابی و تاریخ و ساعت اطلاعاتی که درون اون هستش(Redo Entryهامون) رو به ما نشون میده

تو قسمت LogMiner Options هم می‌تونیم به صورت اختیاری یکسری فیلترها رو اعمال بکنیم

در آخر روی Finish کلیک می‌کنیم تا به صفحه زیر برسیم

در این پنجره بر روی دکمه‌ی PLAY کلیک می‌کنیم تا پردازش بر روی Oline Redo Log ما شروع بشه، خروجی دقیقاً محتوای Redo Log ما هستش

خب بعد از پردازش شما محتویات Redo Logهاتون رو در خروجی می‌بینید:

تو این صفحه اگه بر روی Options کلیک کنیم میتونیم ستونهای نمایش داده شده رو کامل بکنیم تا همه‌ی دیتا نمایش داده بشه:

همونطور که مشخصه در Redo Logهای ما به ازای هر Redoی ذخیره شده Undo هم ذخیره شده

خروجی:

نکته: همونطور که در خروجی مشخصه یعصی فیلدها به صورت UNKNOWN هستن(مثلاً Username, Session Info) این به خاطر این موضوعه که در پارمترهای دیتابیس به صورت پیش‌فرض این قابلیت فعال نیست و شما باید SUPPLEMENTAL LOG رو فعال کنید البته این قابلیت قطعاً بر روی دیتابیس بار میندازه و زمانی که شما بر روی جداولتون PK نداشته باشید هم تا ۳۵ درصد میتونه OVERHEAD ایجاد کنه چون برای انجام دادن کارش باید به unique بودن در سطح رکورد برسه و اگه شما PK نداشته باشید باید کل فیلدها رو برای ایجاد کلید یکتا کنار هم بذاره ولی اگه PK داشته باشید حداکثر ۳ درصد بار میندازه

برای چک کردن وضعیت SUPPLEMENTAL LOG می‌تونید از کوئری زیر استفاده بکنید:

SELECT supplemental_log_data_min "Minimum",
       supplemental_log_data_pk  "Primary key",
       supplemental_log_data_ui  "Unique Key",
       supplemental_log_data_fk  "Foregin Key",
       supplemental_log_data_all "All"
FROM   v$database;

برای فعال کردن این حالت تو Minimum ای ترین حالت می‌تونید از دستور زیر استفاده بکنید:

ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;

همونطرو که می‌بینید تو این حالت فیلد Username در Online Redo Log Fileها ثبت میشه و شما می‌تونید بفهمید چه کاربری تو چه تاریخ و ساعتی چه نوع دستوری رو با چه اطلاعاتی درج کرده