وبلاگ وحید نوروزی

تجربه و ترجمه و تحقیق درباره اوراکل را در این وبلاگ خواهید یافت.

وبلاگ وحید نوروزی

تجربه و ترجمه و تحقیق درباره اوراکل را در این وبلاگ خواهید یافت.

  • ۰
  • ۰

سلام

چند وقت پیش به علت وجود چند تا مشکل بر روی دیتابیس تصمیم گرفتم که آخرین PACTH SET رو بر روی دیتابیس اعمال کنم. مشکلاتی که من داشتم شامل monster bug اوراکل ، نشان ندادن tablespace ها در cloud control و نزدن ایمیل اخطار برای warning  و یا critical بودن فضای اونها. بالا نیامدن دیتابیس بعد از ریستارت سرور به علت تغییر permission های فایل اجرایی oracle و از این دست خطاها بود. بعد که نگاه کردم دیدم نزدیک بیست صفحه باگ با این patch حل میشه. چه اونهایی که باهاش برخود کرده بودم و چه اونهایی که برخورد نداشتم.

البته حل مشکل فایل اجرایی oracle که وظیفه ارتباط با grid infrastructure  رو به عهده داره رو حدس نمیزدم که حل کنه ولی خوشبختانه اون هم درست شد.

اول تصمیم داشتم فقط patch مربوط به engine database رو بزنم که تو راهنمای patch به این خط برخوردم و تصمیم گرفتم که grid رو هم patch کنم:

 Environments with Grid Infrastructure (GI)

If you are installing the PSU to an environment that has a Grid Infrastructure (GI) home, note the following:Grid Infrastructure PSU 11.2.0.4.171017 Patch 26635745 should be applied to the Grid Infrastructure home and Database home using the readme instructions provided with the patch

اولین قدم دانلود آخرین نسخه opatch هست و نکته ای که داره اینه که هم باید تو oracle_home و هم grid_home جایگزین بشه. 

نکته دوم این که حتماً باید در زیر oracle_home ها opatch رو بزارید . با توجه به اینکه خود opatch میتونه از مسیر جداگانه ای اجرا بشه ، شاید این اشتباه رخ بده که محل اجراش مهم نیست. اما مشکل از اونجایی رخ میده که تو اسکریپت اجرایی opatch مسیرهایی مانند ../../xyz وجود داره که از اونها استفاده می کنه.

نکته سوم اینکه باید بر روی تمامی سرورهای اصلی و گارد این کپی رخ بده.

پس فایل p6880880_112000_Linux-x86-64.zip رو به مسیرهای oracle_home و grid_home می بریم و اونجا بعد از بک آپ گرفتن opatch قبلی ، جایگزین می کنیم. مواظب باشید فایلهای دیگر رو خراب نکنید. اگر از نظر permission به مشکل برخوردید، از root کمک بگیرید و بعد با کاربر root  می تونید opatch رو به permission درست تغییر بدید.

با export کردن grid_home به عنوان oracle_home باید فایل ocm رو بسازیم. این فایل باید ساخته بشه چون اجرای این psu با کاربر root صورت میگیره و از این فایل استفاده می کنه تا بصورت اتوماتیک به همه اطلاعاتی که میخواد، دسترسی داشته باشه.

برای ساختنش دستور زیر رو می زنیم (بر روی تمامی سرورهای اصلی و گارد):

/u01/app/11.2.0/grid/OPatch/ocm/bin/emocmrsp -no_banner -output /home/oracle/ocm960920.rsp

برای اطلاعات بیشتر در مورد این دستور ، داکیومنت شماره 966023.1 رو بخونید.

حالا LISTENER رو روی سرور گارد stop می کنیم و بعد log shiping رو قطع می کنیم. حالا instance های گارد رو میاریم پایین  و همچنین اگر AGENT یا EM بالاست اونها رو STOP   می کنیم و پس از اطمینان از تمامی این کارها، دستور زیر رو با کاربر root میزنیم:

/u01/app/11.2.0/grid/OPatch/opatch auto /home/oracle/PSU_26635745_11.2.0.4.171017/26635745/ -ocmrf /home/oracle/960920.rsp 

یه نکته اضافه کنم در مورد اسم پج ها که دیگه یه عدد خالی نیست و تبدیل به نمایانگر تاریخ شده. به عنوان مثال patch فعلی مال 17 اکتبر 2017 هست.

به خاطر داشته باشید که اگر در حالت Rac هستید، به ترتیب و دونه به دونه node ها رو بزنید.

حالا گارد رو بالا میاریم و چک می کنیم که سینک شده باشه، 

به سراغ سرورهای اصلی میریم و همانطور که در مورد rac اشاره کردم، دونه باید زده بشند. instance ها روپایین میاریم.

نکته: در صورتی که با sqlplus وصل شدید از روی سرور، حتماً ازش خارج بشید چون در هنگام patch زدن، میگه library مربوط به sqlplus باز هست و نمی تونه oatch بزنه.

 

حالا دستور مربوط به patch رو با کاربر root می زنیم:

/u01/app/11.2.0/grid/OPatch/opatch auto /home/oracle/PSU_26635745_11.2.0.4.171017/26635745/ -ocmrf /home/oracle/960920.rsp

بعد از اتمام کار در صورتی که خطایی نداشتیم و تمامی oraclce_home ها grid  و oracle با موفقیت patch شدند، باید به دیتابیس وصل بشیم و دستورات زیر رو اجرا کنیم:

cd $ORACLE_HOME/rdbms/admin

sqlplus /nolog

SQL> CONNECT / AS SYSDBA

SQL> STARTUP

SQL> @catbundle.sql psu apply

SQL> QUIT

و بعدش برای کامپایل کردن دستور زیر رو:

cd $ORACLE_HOME/rdbms/admin

sqlplus /nolog

SQL> CONNECT / AS SYSDBA

SQL> @utlrp.sql

نکته: اگر در مرحله ای که داره patch میزنه، oracle_home رو نشناخت، با استفاده از oh بهش میشناسونیم و ترتیب هم اول grid_home و بعد oracle_Home رو با مسیر می نویسیم.

نکته: بر روی دیتابیسی که داشتم حدود 3000 INVALID OBJECT از نوع سیستمی (مربوط به SYS و PUBLIC) وجود داشت که با این PATCH حل شد.

اخطار: این مطلب برداشتی از داکیومنت 

Patch 26635745 - Oracle Grid Infrastructure Patch Set Update 11.2.0.4.171017 (Includes Database PSU 11.2.0.4.171017)

و با تجربیات شخصی در محیط دیتابیس زده شده و برای اعمال PATCH در محیطهای خود، باید به داکیومنتهای خود اوراکل مراجعه کرد.

 

 

--------------------------------------------

در هنگام رانندگی به احترام عابرین پیاده بایستیم.

  • ۹۶/۱۰/۰۷
  • قدیر نوروزی میرصادقی

نظرات (۲)

ممنون از مطلب کاملت
  • مهدی غفاری
  • بسیار عالی بود

    ارسال نظر

    ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
    شما میتوانید از این تگهای html استفاده کنید:
    <b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
    تجدید کد امنیتی