خیلی وقتها دنبال یه اسکریپت ساده برای چک کردن فضای ASM، بلاککنندهها، یا حتی مشاهده RMAN هستیم. ولی این اسکریپتها یا تو لپتاپ قبلی بودن یا تو یه پوشهی گمشده تو سرور. تو این مقاله میخوام یه دسته از اسکریپتهایی که خودم همیشه تو مسیر ORACLE_PATH
نگهداری میکنم معرفی کنم — همون ابزارهایی که همیشه باید پشت گوشت باشن!
ORACLE_PATH چیست؟
ORACLE_PATH
یکی از متغیرهای محیطی (environment variable) در Oracle است که به sqlplus
یا ابزارهای مشابه کمک میکند تا فایلهای .sql
را بدون نیاز به مسیر کامل فراخوانی کند.
مثال:
فرض کنید در .bash_profile
یا .bashrc
داریم:
export ORACLE_PATH=/u01/app/oracle/sql
در این صورت، اگر فایلی به نام checkasm.sql
در آن مسیر باشد، به راحتی میتوان آن را در SQL*Plus اجرا کرد:
SQL> @checkasm
یه مقاله دیگه هم تو سایت هست که مرتبط با همین موضوع هست.
بدون اینکه لازم باشد مسیر کامل داده شود.
معرفی اسکریپتها:
هر اسکریپت را میتوان با عنوان، مسیر اجرای ساده، و توضیح کوتاه معرفی کرد:
blocking_session.sql
-
کاربرد: نمایش سشنهایی که باعث بلاک شدن دیگران شدهاند. خیلی سریعتر از هر چیز دیگه ای می فهمی که چه نوع blocker ی و چه نوع wait ی و چه زمانی تو دیتابیس وجود داره.
-
ویژگی: مناسب برای بررسی سریع مشکلات قفل شدن.
checkasm.sql
-
کاربرد: بررسی میزان استفاده از دیسکهای ASM. جزو چک لیستهای روزانه میتونه باشه.
-
توصیه: اجرای دورهای در محیطهایی که از ASM استفاده میکنند.
checkgrd.sql
- کاربرد: بررسی فاصله آرشیو لاگ بین Primary و Standby. جزو چک لیستهای روزانه میتونه باشه.
checkrman.sql
- کاربرد: نمایش جزئیات آخرین عملیاتهای بکاپ RMAN. جزو چک لیستهای روزانه میتونه باشه.
invobj.sql
- کاربرد: بررسی objectهای
INVALID
. قبل و بعد هر تغییری تو دیتابیس یه بار اجرا میکنم. کمکم میکنه که ببینم کاری که انجام دادم، باعث invalid شدن object ها نشده باشه.
lrun.sql
- کاربرد: مشاهده عملیاتهای طولانی در حال اجرا (longops). زمانی که کاربران گزارش کندی میدن، یکی از چیزهایی که نگاه میکنم اینه.
inst.sql
- کاربرد: نمایش اطلاعات کلی از instance مثل role، hostname، logins و غیره. اگر دستور حساسی بخوام بزنم، مثل shutdown ، این دستور رو حتماً میزنم که مطمئن بشم، جای درستی در حال کار هستم.
find.sql
- کاربرد: جستجوی نام جدول در dictionary با استفاده از bind متغیر
&tablename
. فرض کن میدونی یه ویویی هست که در مورد scheuler اطلاعات میده ولی اسم دقیقش رو نمی دونی. کافیه بخشی از اسم اون ویو رو بعد از اجرای این دستور بزنی تا تمام اونهایی که این اسم رو دارند، بهت نشون بده
login.sql
- کاربرد: شخصیسازی prompt در SQL*Plus بر اساس کاربر و SID. شماره Session رو می فهمی. مثلا داری کاری انجام میدی و ممکن هست به مشکل برخورد کنی یا مجبور به kill بشی. با دونستن شماره Session کارت خیلی زود راه می افته.
who.sql
- کاربرد: مشاهده کاربران فعال در دیتابیس، همراه با اطلاعات سیستم و برنامه. این دستور بهمون میگه چه کسانی وصل هستند.
space.sql
و prespace.sql
- کاربرد: گزارش استفاده از فضای tablespaceها (داینامیک و استاتیک). فضای دیتابیس رو با این میتونی چک کنی. اولین بار prespace رو اجرا میکنی که یه سری view بسازه و از دفعات بعد space جواب میده
opactive.sql
- کاربرد: شناسایی SQLهای پرتکرار توسط سشنهای فعال. جستجوهایی رو پیدا میکنه که بصورت اکتیو و به تعداد بیشتر از یکی در حال کار هستند. خیلی کمک میکنه که زودتر برسی به مشکل
redo2.sql
- کاربرد: نمایش تعداد لاگهای redo به تفکیک ساعت در هر روز. تغییرات غیر منتظره تو حجم Redo رو میتونی با این ببینی.
sid.sql
- کاربرد: مشاهده اطلاعات کامل یک سشن خاص با SID مشخص. این اسکرپت رو من ننوشتم. اما خیلی کارش درسته. زمانی که آریا همراه بودم، از این استفاده می کردند و بعد از اون من هم هر جا میرم استفاده میکنم.
sid_sql.sql
- کاربرد: دریافت آخرین SQL اجراشده توسط یک سشن مشخص. پیدا کردن اینکه چه sid ای داره چه sql ی در حال حاضر اجرا میکنه.
checkfra.sql
- کاربرد: چک کردن فضایی که به recover dest area size میدی و درصدی که استفاده شده. جزو چک لیستهای روزانه میتونه باشه.
این اسکریپتها ساده هستن، اما حیاتی. درست مثل همون مدادی که پشت گوشته. اگه این ابزارها رو تو مسیر ORACLE_PATH
نگهداری کنی، میتونی فقط با یه @filename
خیلی از نیازهای لحظهایات رو برطرف کنی. فایل این اسکریپتها رو میتونی از کانال تلگرام من دانلود کنی
همچنین لینک github:
https://github.com/vahiddb/oracle-dba-scripts