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

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

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

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

  • ۰
  • ۰

سلام. قسمت قبل preinstallation به اتمام رسید و حالا به سراغ نصب Grid می رویم.




دستور Date پس از دستور unzip برای اطمینان از صحت عملکرد unzip است . اگر نخواهید اینکار را انجام دهید می توانید از ?$ echo استفاده کنید. حالا گزینه skip را انتخاب می کنیم.



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



گزینه advanced را انتخاب می کنیم.



زبان انگلیسی را انتخاب می نمائیم.



نام کلاستر را انتخاب می نمائیم و نام scan را بر اساس نامی که در dns وارد نموده ایم وارد می نمائیم.



اطلاعات دومین node را با زدن کلید add اضافه می نمائیم .



پس از  زدن کلید ssh connectivity و وارد نمودن اطلاعات مورد نیاز، setup را می زنیم.



در صورتی که همه چیز درست باشد با پیغام زیر مواجه می شویم.



در صفحه بعد کارتهای شبکه متناسب را انتخاب می کنیم.




گزینه Asm  را انتخاب می کنیم



با توجه به اینکه تنها یک دیسک را در نظر گرفته ایم برای هر گروه ، گزینه external را انتخاب کرده و نام دیسک را ocr می گذاریم و دیسک 2 گیگابایتی را به آن اختصاص می دهیم.



رمز عبور مدنظر خود را وارد کنید.



گزینه عدم استفاده از ipmi را انتخاب می کنیم.



با توجه به اینکه مراحل preinstallation را صحیح انجام داده ایم، گروه ها در جای درست خود قرار گرفته اند:



مسیرهای مناسب را می دهیم.



مسیر انتخاب شده را تایید می کنیم:



مراحل check انجام می شود و در صورتی که مشکلی وجود داشته باشد اطلاع داده می شود:



آنهایی که قابل رفع شدن توسط خود اوراکل هستند ، با زدن گزینه fix and check again و با اجرای اسکریپت توسط root بر طرف خواهند شد.



خطایی که درباره ntp به من داده بود رو با توجه به sync بودن crony ، نادیده گرفتم. اگر دوستان نظری دارند که می تونه این رو هم برطرف کنم، بگن که تصحیح کنم. اما به نظرم مشکلی برام ایجاد نخواهد کرد. 



خلاصه ای از اطلاعات ارائه می شه در این مرحله:



اسکریپتهای نشان داده شده رو به ترتیب گفته شده بر روی node های یک و دو اجرا می کنیم.



با توجه به اینکه ntp را ignore کرده بودیم ، با خطا در انتهای نصب مواجه می شویم که اگر لاگ رو بخونید ، می بینید که فقط در همین مورد هست و مشکل خاصی نداره.



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




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

لطفاً در هنگام رانندگی به احترام عابرین پیاده بایستیم.

  • قدیر نوروزی میرصادقی
  • ۰
  • ۰

سلام.

در قسمت قبل clone به اتمام رسید. حالا به سراغ ادامه کار می رویم.

ماشینهایی که برای اینکار در نظر گرفته ایم را روشن می کنیم. به سراغ فایل etc/sysconfig/network/ رفته و آنرا متناسب با فایل etc/hosts/ ویرایش می کنیم:



کارت شبکه ها رو باز هم بر طبق etc/hosts/ بصورت زیر بر روی هر یک از ماشینها کانفیگ می کنیم:



کارت شبکه Eth1 برای private در نظر گرفته ایم بصورت زیر کانفیگ می کنیم. در تصویر netmask=255.255.255.0 نیامده است که آنرا هم اضافه کنید.



از روی اطلاعات موجود در etc/hosts/ باید کارتهای شبکه public  و  private را بتوان با نام ping کرد. این تست را انجام می دهیم.



ماشنیها را خاموش می کنیم. به قسمت Setting ماشین اول رفته و از قسمت storage و قسمت sata بر روی دکمه روبرویش برای اضافه کردن دیسک کلیک می کنیم و گزینه Create new disk را بر می گزینیم.



در قسمت زیر روی vdi  کلیک می کنیم:



من در تستهایم گزینه fixed size را انتخاب کرده ام . 



میزان حجم مورد نظر و همجنین نام و محل ساختن را انتخاب می کنیم. بهتر است برای خوانایی بیشتر پوشه مجزایی برای shared diskها در نظر گرفته شود. ocr را می سازیم با حجم 2 گیگابایت.



دیسکهای data و fra را نیز با حجم 10 گیگابایت به همین روش می سازیم. در انتهای ساخت دیسکها بصورت زیر خواهد شد:



از منوی اصلی vbox و از منوی فایل گزینه virutal media manager را اجرا می کنیم. در اینجا دیسکهایی که به منظور shared disk ساخته ایم را انتخاب کرده و type آنها را به shareable تغییر می دهیم:



حالا به Setting دومین node رفته و از قسمت storage بر روی گزینه روبروی کنترلر sata ، گزینه اضافه کردن دیسک را می زنیم و اینبار بجای انتخاب create disk گزینه choose existing disk را انتخاب و تک تک shared disk های ساخته شده را به آن می دهیم. نتیجه کار به شکل زیر خواهد بود.



حالا هر دو node را روشن می کنیم. اگر بر روی هر یک از دو node دستور lsblk را اجرا کنیم با تصویر زیر مواجه می شویم که نشان می دهد ، دیسکها به هر دوی آنها اضافه شده است:




دیسکها را مطابق شکل زیر با دستور fdisk پارتیشن بندی می کنیم:



اینکار را برای تمامی دیسکهای جدید که شامل sdb , sdc , sdd می شود انجام می دهیم. بر روی node  دیگر دستور partproble را می زنیم که تغییراتی که در node اول داده ایم دیده شود:



بر روی node  اول ابتدا ownership دیسکها را درست کرده و دستور createdisk را مطابق شکل می زنیم. سپس بر روی node دوم تنها با زدن دستور oracleasm scandisks باید دیسکهای ساخته شده دیده شوند.



در قسمت بعد به سراغ نصب grid خواهیم رفت.




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

لطفاً در هنگام رانندگی به احترام عابرین پیاده بایستیم.

  • قدیر نوروزی میرصادقی
  • ۰
  • ۰

در قسمت قبل سیستم عامل رو نصب کردیم. حالا به سراغ preinstallation می ریم.

ابتدا بر روی قسمت other کلیک می کنیم و کاربر root و پسوردی که برای آن در نظر گرفته ایم را وارد می کنیم:


 

پس از ورود به ما گفته می شود که با کاربر root وارد شده ایم. گزینه مربوط به عدم نمایش را چک می کنیم تا دوباره نمایش داده نشود:




در virtual box از منوی فایل گزینه host network manager را باز می کنیم تا ببینیم که host only در چه محدوده ای آدرس می دهد. در سیستم من 192.168.56 است. (برای اینکه این آدرس در آینده هم تغییر نکند، می توان آنرا بصورت دستی هم داد.)



در سیستم عامل از منوی application سپس system tools  و سپس Terminal را انتخاب می کنیم. با توجه به پر کاربرد بودن terminal می توان آنرا به بالای صفحه انتقال داد.



بعد از باز کردن terminal با دستور vi فایل etc/hosts/ را بصورت زیر ویرایش می کنیم و با زدن wq: آنرا ذخیره می کنیم:



iptables را با دستورات زیر غیر فعال می کنیم. توجه داشته باشید که در محیط عملیاتی باید پورت های مورد استفاده را به iptables اضافه  و از غیر فعال کردن آن اجتناب کنید.


selinux را با ویرایش فایل etc/selinux/config/ و disabled را Selinux قرار می دهیم.



در محیط virtualbox یک dns سرور راه انداختم و فایلهای مربوط به reoslve کردن host ها رو بصورت زیر تغییر دادم. (راه اندازی dns کار سختی نیست و من از روی یک ویدئو در youtube اون رو ساختم)



البته بخشی از فایلهای موجود مربوط به دیتابیس 12 هست و به بحث الان ما مربوط نمیشه. ما همونهایی که در فایل etc/hosts/ بود رو نیاز داریم که اینجا وارد کنیم. می دونیم که تنظیمات مربوط به کارت شبکه private هم نیاز نیست که اینجا باشه.


فایلهای کارت شبکه اول و etc/resolv.conf/  را مطابق شکل زیر تنظیم می کنیم:



بعد از تنظیمات بالا یکبار سرویس شبکه را با دستور etc/init.d/network restart/ دوباره راه اندازی می کنیم. حالا می توانیم با putty هم به این ماشین وصل شویم.

rpm  مربوط به chrony را نصب می کنیم . برای این کار باید از منوی مربوط به optical drive یکبار دیگر iso مربوط به oracle linux 6.8 را به ماشین می شناسانیم. 



بعد از نصب chronyd را با دستور etc/init.d/chronyd start/ راه می اندازیم و با chkconfig chronyd on به سیستم عامل می گوییم که بعد از هر بار بالا آمدن ، این سرویس را نیز بالا بیاورد. سپس فایل etc/chrony.conf/ را بصورت قسمت highlight شده در تصویر ویرایش می کنیم. آدرس آمده ، آدرس موجود در سرور 192.168.56.103 هست که همان dns است. روی این سرور سرویس ntp را نیز فعال کرده ام.



با توجه به اینکه کاربر oracle با زدن preinstall ساخته شده است، ابتدا آنرا پاک می کنیم و طبق نظر خودمان کاربر و گروه های مدنظر خود را می سازیم. در این نصب ما کاربر grid و oracle را با توجه به وظایفشان جدا می سازیم :




مسیرهای موردنیاز را به شکل زیر می سازیم:



فایل etc/security/limits.conf/ را باز کرده و هر آنچه برای اوراکل نوشته شده است را برای grid هم می نویسیم و آنرا ذخیره می کنیم.:



rpm مربوط به oracleasmlib را دانلود کرده و به ماشین انتقال داده و نصب می کنیم:



با زدن کانفیگ usr/sbin/oracleasm configure -i/ تنظیمات را مطابق شکل زیر انجام می دهیم:



ماشین را خاموش می کنیم و با راست کلیک بر روی نام آن در vbox گزینه clone را انتخاب می کنیم. سپس نام جدید ماشینی که ساخته خواهد شد را وارد کرده و حتماً گزینه reinitialize را چک می کنیم و next را کلیک می کنیم:



گزینه full clone را انتخاب می کنیم:



ماشین جدید ساخته شده را روشن کرده و کانفیگ فایلهای etc/sysconfig/network-scripts/ifcfg-eth0/ و etc/sysconfig/network-scripts/ifcfg-eth1/ را پاک کرده و سپس فایل etc/udev/rules.d/70-persistent-net.rules را نیز پاک می کنیم. این کار به این علت است که کارتهای شبکه جدید با نامهای eth2 و eth3 ظاهر شده اند و باید در RAC هم نام باشند.



ماشین ها را خاموش می کنیم.


در قسمت بعد به سراغ ساخت shared disk و ادامه نصب خواهیم رفت.


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

لطفاً در هنگام رانندگی به احترام عابرین پیاده بایستیم.

  • قدیر نوروزی میرصادقی
  • ۰
  • ۰
در قسمت قبل نحوه ساختن ماشین  vbox رو دیدیم. حالا به سراغ نصب سیستم عامل می ریم.
بعد از روشن کردن ماشین اولین صفحه ای که می بینیم ، صفحه زیر هست:


بعد از این مرحله پیشنهاد چک کردن دیسک داده می شود. در صورتی که این مرحله را ok کنید ، پس از اتمام چک کردن دیسک خارج می شود. به خاطر داشته باشیم که اگر بصورت remote در جایی که دسترسی به آن سخت است مشغول نصب باشیم، ممکن است با خارج شدن دیسک دچار دردسر شویم. ما skip را انتخاب می کنیم:


صفحه welcome اولین صفحه ای است که بالا می آید:


در طول نصب زبان انگلیسی را انتخاب می کنیم:


زبان کیبرد را انگلیسی انتخاب می کنیم:


با توجه به نوع storage ی که داریم، basic storage را انتخاب می کنیم:


با توجه به اینکه اطمیان داریم بر روی این دیسک اطلاعات دیگری وجود ندارد و برای همین کار تخصیص یافته است، هارد موجود بر روی آن را با قبول گزینه yes ، آماده نصب می کنیم:


فعلا از تغییر نام خود داری می کنیم و آنرا به بعد از clone گرفتن موکول خواهیم کرد.


کشورمان را برای نصب انتخاب می کنیم:


پسوردی را برای کاربر root انتخاب می کنیم:


گزینه آخر را برای فرمت دیسک انتخاب می کنیم تا بتوانیم طبق خواسته خود آنرا پارتیشن کنیم:


برای نصب بهتر است که پارتیشن های مربوط به u01 و var و tmp و ... را جدا کنیم اما با توجه به محدودیت فضا u01 را در حال حاضر نمی سازیم و تنها سه پارتیشن / و boot/ و swap را می سازیم. Swap را هم اندازه با ram که قبلاً 4 گیگابایت انتخاب کرده بودیم ، می سازیم:


این صفحه را بدون تغییر رها می کنیم :


در صفحه زیر گزینه customize now را انتخاب می کنیم تا بتوانیم package های مورد نیاز خود را انتخاب و نصب کنیم:


از صفحه نمایش داده شده از پنجره سمت چک Servers و از پنحره سمت راست system administration tool  و با کلیک بر روی  optinal package گزینه های نمایش داده شده را انتخاب می کنیم:


برای نصب desktop از منوی سمت چپ Desktops و از منوی سمت راست گزینه های انتخاب شده را چک می کنیم. با کلیک بر روی این گزینه ها گزینه all را انتخاب کنید:


عملیات نصب شروع می شود:


پس از اتمام نصب reboot می کنیم.


بر روی دکمه forward کلیک می کنیم:

 
برای قبول license بر روی yes کلیک می کنیم:


بر روی no و از پنجره باز شده no thanks I'll connect later را انتخاب می کنیم:



بر روی forward کلیک می کنیم:


ساخت کاربران را در مراحل بعدی انجام خواهیم داد:



تاریخ و زمان را با chrony تنظیم خواهیم کرد:



بر روی finish و سپس yes کلیک کرده تا سیستم reboot شود.



سیستم عامل آمادست:


در پست بعدی به سراع مراحل preinstallation خواهیم رفت.



-----------------------------------------------------
لطفاً در هنگام رانندگی به احترام عابرین پیاده بایستیم.
  • قدیر نوروزی میرصادقی
  • ۰
  • ۰

سلام

برای هر کسی در هر رشته ای ، تست و آزمایش در محیط تست ، باعث تسلط او بر روی وظایف محوله می شود. چون می توان خطاها را در محیط آزمایشگاهی شبیه سازی کرد و یا می توان feature های جدید را آزمایش نمود و یا عکس العمل حدودی سیستم را در قبال انجام کار خاصی آزمود. همه اینها باعث افزایش اعتماد به نفس و همچنین امکان ارائه پیشنهادهای درست در زمان مناسب می گردد. 

در این سری آموزش ها می خواهیم یک دیتابیس با دو node بر روی oracle linux 6.8 نصب کنیم. 

اولین قدم ساختن ماشین vm است. برای اینکار بر روی دکمه new در محیط vbox کلیک می کنیم و با تصویر زیر مواجه می شویم:

با توجه به اینکه قصد نصب اوراکل لینوکس 6.8 را داریم، بنابراین گزینه های نصب را متناسب با آن انتخاب کرده ایم. بر روی دکمه next  کلیک می کنیم. 

در صفحه بعدی میزان رم مدنظر خود را برای هر کدام از ماشین ها انتخاب می کنیم. من برای هر کدام از ماشین ها 4G را در نظر گرفته ام:

در صفحه بعد باید یک دیسک جدید بسازیم ، بر روی دکمه create a virtual hard disk now کلیک می نمائیم:

در صفحه زیر همان گزینه اول را (vdi) انتخاب می کنیم و next را کلیک می کنیم:

برای اینکه در فضا صرفه جویی کنیم، گزینه dynamically allocate را انتخاب می کنیم:

فضای مد نظر خود را به ماشین می دهیم. این فضا برای نصب سیستم عامل و engine اوراکل استفاده می شود. برای ocr و Data و fra فضای دیگری اختصاص خواهیم داد:

حالا با انتخاب ماشین ساخته شده بر روی Setting کلیک می کنیم و با پنجره زیر مواجه می شویم:

حالا در پنجره راست بر روی network کلیک می کنیم تا با توجه به نیاز RAC به دو کارت شبکه، آنها را بسازیم. یکی از کارت شبکه ها رو در حالت HOST-ONLY ADAPTER و کارت شبکه دیگر را در حالت INTERNAL NETWORK قرار می دهیم. کارت شبکه اول نقش PUBLIC و VIP و SCAN  و کارت شبکه دوم نقش PRIVATE را به عهده خواهد داشت. هر دو تصویر بصورت متوالی قرار داده شده است . برای کارت شبکه دوم از پنجره باز شده سمت چپ ، باید گزینه فعال شده مربوطه را تیک بزنید:



حالا به قسمت Storage در منوی سمت راست می رویم . در این قسمت با انتخاب optical drive ، باید iso مربوط به oracle linux 6.8 را به آن بشناسانیم.


ماشین ما آمادست.

در قسمت بعد نحوه نصب سیستم عامل را مرور می کنیم.



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

لطفاً در  هنگام رانندگی به احترام عابرین پیاده بایستیم.





  • قدیر نوروزی میرصادقی
  • ۰
  • ۰

سلام

ممکن است این نیازمندی بوجود آید که بخواهیم محل قرارگیری voting disk ها و ocr را عوض کنیم. یکی از این دلایل می تواند وجود redundancy از نوع external برای این diskgroup حساس باشد. 

#احتیاط. برای انجام این کارها در محیط عملیاتی حتماً از متخصصین امر بهره ببرید. 

برای فهمیدن اینکه در حال حاضر چه نوع redundancy را داریم، می توانیم از جستجوی زیر استفاده کنیم:

select group_number, name , type from v$asm_diskgroup;

پیشنهاد برای این گروه حساس حداقل normal و در حالت بهتر high است. می توانیم diskgroup جدید را با دستور زیر ایجاد کنیم:

create diskgroup newocr high redundancy disk 'orcl:ocrnew1','orcl:ocrnew2',...,'orcl:ocrnew5' attribute 'compatible.asm' =  '11.2';

قبل از اینکه کار را پیش ببریم، باید diskgroup جدید را بر روی دیگر nodeها نیز mount کنیم. 

ضمناً با توجه به اینکه حادثه خبر نمی کند، من به شخصه قبل از انجام چنین کارهایی از داشتن backup و همزمانی گارد اطمینان حاصل می کنم . برای این مورد خاص یک backup از نوع manual هم از ocr تهیه می کنیم:

ocrconfig -manualbackup

برای دیدن محل فعلی ocr با کاربر root دستور زیر رو میزنیم:

$GRID_HOME/bin/ocrcheck

و برای دیدن محل فعلی voring disk ها دستور زیر رو:

$GRID_HOME/bin/crsctl query css votedisk

اگر از نوع external باشد redundancy دستور بالا تنها یک خط برای ما می آورد. 

حال برای اضافه کردن محل جدید ocr دستور زیر را می زنیم:

$GRID_HOME/bin/ocrconfig -add +newocr

با زدن دستور زیر از اضافه شدن آن مطمئن می شویم:

$GRID_HOME/bin/ocrcheck

حالا مسیر قبلی ocr را حذف می کنیم:

$GRID_HOME/bin/ocrconfig -delete +ocr

برای تغییر voting disk ها و چک کردن آن دو دستور زیر را بکار می بریم:

$GRID_HOME/bin/crsctl replace votedisk +newocr

$GRID_HOME/bin/crsctl query css votedisk

حالا باید به اندازه تعداد voting disk های گروه جدید، جواب برگردانده شود.



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

لطفاً در هنگام رانندگی به احترام عابرین پیاده بایستیم.

  • قدیر نوروزی میرصادقی
  • ۰
  • ۰

سلام

اوراکل در قسمت grid infrastructure برای cluster health monitoring از crfclust.bdb ،  که دیتابیسی  از نوع Berkeley database هست استفاده می کند. گاهاً پیش میاد که این دیتابیس کوچک به شدت رشد می کنه و باعث پر شدن پارتیشن خودش می شه و متعاقباً باعث افتادن دیتابیس. 

برای حل این مشکل باید اقدامات زیر رو به ترتیب انجام بدیم:

ابتدا با کاربر grid دستور زیر رو میزنیم:

oclumon manage -repos resize 259200

باید پیغامی مبنی بر اعمال اون بر روی تمامی node ها بگیریم. اگر اینطور نشد و پیغامی غیر از این داد، باید مشکل رو رفع کنیم و دوباره این کار رو تکرار کنیم. برای من این مسئله رخ داد که پارتیش u01 بر روی node2 پر شده بود که خالیش کردم و دوباره دستور بالا رو اجرا کردم.

سپس دستور زیر رو میزنیم:

oclumon manage -get repsize

ممکنه باز هم خطا بخوریم چون در حال حاضر حجم این فایل بزرگتر از اون چیزی که باید باشه شده، اما این خطا رو ignore می کنیم و سرویس مربوطه رو ریستارت می کنیم.

crsctl stop res ora.crf  -init

crsctl start res ora.crf -init


مشکل برطرف شد. 

البته برای این مشکل اوراکل patch هم داده.

موفق باشید.


----

لطفاً در هنگام رانندگی به احترام عابرین پیاده بایستیم.


  • قدیر نوروزی میرصادقی
  • ۰
  • ۰

سلام

چند وقت پیش به علت وجود چند تا مشکل بر روی دیتابیس تصمیم گرفتم که آخرین 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 در محیطهای خود، باید به داکیومنتهای خود اوراکل مراجعه کرد.



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

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

  • قدیر نوروزی میرصادقی
  • ۰
  • ۰

سلام

در زمان راه اندازی cloud control یکی از مهمترین وظایفی که می توانیم به عهده آن بگذاریم، قرار گرفتن در صفحه مانیتورینگ تیم های مانیتورینگ و dba است. لذا بر اساس این موضوع، این صفحه نباید expire شود. 

انجام این کار یک روش ساده دارد. بصورت پیش فرض در 12 این مقدار برابر 45 دقیقه و در 13 برابر null است. برای هدف ما باید این مقدار برابر 1- (منفی یک) تنظیم شود.

در 12 باید به مسیر middleware_home و سپس به پوشه oms و bin  رفته و  در 13 در زیر پوشه middleware_home و سپس bin و دستور زیر را اجرا می کنیم:

./emctl set property -name oracle.sysman.eml.maxInactiveTime -value -1 -sysman_pwd sysman_password

در 12 باید oms را ریستارت کنیم ولی در 13 احتیاج نیست:


./emctl stop oms
./emctl start oms

در 13 با پیغام  OMS restart is not required to reflect the new property value مواجه می شویم که نشان می دهد احتیاجی به restart نیست.


----------

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

  • قدیر نوروزی میرصادقی
  • ۰
  • ۰

سلام

قبل از اینکه شروع کنم چند تا نکته ضروری رو مرور کنیم. اول نگه داشتن dbid و اسکریپتهای backup در جایی غیر از خود دیتابیس که اگر همه چیز از دست رفت و فقط tape برامون موند، بتونیم فقط با داشتن همین دو مورد، rman backup رو برگردونیم روی سرور جدید. البته اسکریپت بک آپ بیشتر در تسریع کار تاثیر داره تا اصل کار.

سناریوی ما شامل از دست رفتن تمامی فایلها شامل spfile  و  controlfile  و datafile ها و archivelog هاست. حالا می خواهیم  بر روی سرور جدیدی backup رو برگردونیم.

بعد از اینکه ارتباطات ما با tape برقرار شد و تنظیمات مربوطه انجام شد و کانالهای rman رو تست کردیم، زمان برگردوندن شروع میشه. یادمون باشه که گزینه atuobackup controlfile رو حتماً از قبل باید کانفیگ کنیم که تو backup ها اومده باشه وگرنه کارمون سخت تر میشه.

قدم اول تنظیم environment variable هاست که مهمترین اونها ORACLE_HOME و ORACLE_SID و PATH هستند

به rman با دستور / rman target  وصل می شویم و دستور زیر رو می زنیم:

set dbid=53246351832161;

حالا با توجه به اینکهspfile   نداریم، با زدن دستور زیر دیتابیس رو مجبور می کنیم که به مرحله nomount وارد بشه.

rman> startup force nomount;

 

spfile رو با دستور زیر بر می گردونیم:

 

RMAN> run{allocate channel ch01 type sbt; 
2> SEND 'NB_ORA_CLIENT= hypprdbv1-bn; 
3> restore  spfile from autobackup; 
4> } 

 

با زدن دستور بالا بصورت پیش فرض 7 روز رو می گرده، اگر ما میدونیم که داده های backup برای قبل از این هست، باید با دادن گزینه maxdays این رو بهش بگیم.که میشه دستور زیر:

 

RMAN> run {

1>allocate channel ch01 type sbt;

2> send 'NB_ORA_CLIENT=hypprdbv1-bn';

3> RESTORE SPFILE to pfile '/export/home/oracle/sshaik/initHYPP.ora' from autobackup maxdays 20;

4> }

 

تو دستور بالا دو تا کار همزمان صورت گرفت، و اون ایجاد PFILE بود که باید با توجه به شرایط محیطی سرور جدید تنظیم بشه. بعد از اینکه دستور بالا رو زدیم، PFILE رو باز می کنیم و فایل رو بر اساس نیاز تغییر میدیم. چند تا از مهمترینهاش پارامترهای مربوط به convert هست و دیگری db_create_file_dest که بر اساس سرور جدید باید مشخصات بدیم .  من پارامترهای مربوط به کلاستر و تنظیمات مربوطه به THREADهای دیگر رو بر داشتم.بعد از این مرحله، می تونیم باز با PFILE جدید بالا بیایم و در حالت nomount با زدن دستور create spfile from pfile ، صاحب spfile بشیم و در راه اندازی بعدی با اون بالا بیاریم دیتابیس رو.

حالا کنترل فایل رو با همون روش restore می کنیم ، اینجا دوباره باید دستور Set dbid رو بزنیم و بعد دستورات پایین  رو اجرا کنیم:

RMAN>  run {allocate channel ch01 type sbt;

2>  send 'NB_ORA_CLIENT=hypprdbv1-bn';

3> restore controlfile to '/adm02/u9001/HYPP/control/control01.ctl' from autobackup maxdays 20;

4> }

اگر to رو هم نزاریم میره سر همون جایی که تو pfile بهش گفتیم.

حالا اگر دستور زیر رو بزنیم مشخصاتی از بک آپ های موجود رو بهمون میگه. با توجه به خروجی اون که SCN 10513166137701 توش هست، می تونیم بفهمیم که تا کجا می تونیم دیتابیس رو recover  کنیم.

RMAN> run{

2> allocate channel ch01 type sbt;

3> send 'NB_ORA_CLIENT=hypprdbv1-bn';

4> restore database preview;

5> }

 

من restore رو جداگانه زدم و دستور recover  رو توش نیاوردم .

 چون محل جدیدی براشون در نظر گرفته بودم، دستورات زیر رو هم زدم:

run {

allocate channel ch01 type sbt;

send 'NB_ORA_CLIENT=hypprdbv1-bn';

set newname for database to ‘+data’;

restore database ;

switch datafile all;

}

بعد از اینکه کارش تموم شد و خواستم recover  رو انجام بدم، با خطای ora-00600  مواجه شدم:

Ora-00600 internal error code , arguments : [krbrpr_no_buffer]

که براش مجبور شدم patch با شماره 19272701 رو بزنم. بعد از اون موفق شدم که دستور recover  رو اجرا کنم. حواسمون باشه در هر مرحله اگر احساس می کنیم که ارتباطمون با دیتابیس از کلاینتی که دستور رو اجرا می کنیم ، ممکنه که قطع بشه، حتماً دستورات رو با nohup  و & بفرستیم background

Recover database until scn 10513166137701;

هنوز کار تموم نشده، باید دیتابیس با دستور زیر open بشه:

Alter database open resetlogs;

وقتی این دستور رو زدم ، با خطاهای Redo مواجه شدم که اگر بخوام مستقیم برم سر اصل مطلب و دورهایی که دور خودم زدم رو ننویسم، باید اونها رو به مسیر جدید اول rename کرد و بعد از اون clear کرد و اون وقت دستور بالا اجرا میشه.

alter database rename file  '/u01/app/oracle/redo/redo01a.log' to ‘+data/db/onlinelog/redo01a.log';

alter database clear unarchived logfile  group n;

اگر در ارتباط با اولیه که وقتی که میخواید spfile رو restore کنید روی asm به خطا خوردید، یه سر هم به دستور setasmgidwrap هم بزنید که معمولاً با ora-00600 خودش رو نشون می ده.

 

خواهش: در هنگام رانندگی به احترام عابرین پیاده بایستیم.

منابع:

http://www.shaiksameer.com/2012/08/oracle-full-db-restore-from-tape-to-new.html

منابعی که در زیر اومدن، اونایی بود که دور خودم میگشتم که مشکل رو حل کنم، ازش چیزهای خوبی در میاد، اگر بخونید بد نیست.

منابع دیگر:

http://www.dba-oracle.com/t_rman_136_recover_missing_redo_log_group.htm

http://dbaclass.com/article/ora-01623-log-3-is-current-log-for-instance-cannot-drop/

https://gavinsoorma.com/2009/07/drop-and-recreate-online-redolog-files/

http://myoracledbablogon.blogspot.com/2011/01/alter-database-open-resetlogs-error-ora.html

https://asanga-pradeep.blogspot.com/2016/08/resetlogs-fails-with-ora-00349.html

https://husnusensoy.wordpress.com/2007/11/29/disabling-an-old-rac-instance-thread/

 

  • قدیر نوروزی میرصادقی