Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

खराब आरएसी नोड को फिर से बनाएं

अभी हाल ही में, मैं 2-नोड Oracle RAC सिस्टम में नवीनतम और महानतम पैच सेट अपडेट (PSU) लागू करने का प्रयास कर रहा था। पहले नोड पर सब कुछ सुचारू रूप से चला। PSU को दूसरे नोड पर लागू करने का प्रयास करते समय मुझे समस्याएँ हुईं। समस्या ओपैच या पीएसयू के साथ नहीं थी, बल्कि, मैं ग्रिड इंफ्रास्ट्रक्चर (जीआई) को भी सफलतापूर्वक नीचे नहीं ला सका। और मामले को बदतर बनाने के लिए, यह भी नहीं आएगा।

मैंने अपनी समस्या को ग्रिड इंटर प्रोसेस कम्युनिकेशन डेमॉन (gipcd) पर ट्रैक किया। 'crsctl stop crs' जारी करते समय, मुझे एक संदेश प्राप्त हुआ जिसमें कहा गया था कि gipcd को सफलतापूर्वक समाप्त नहीं किया जा सकता है। जीआई शुरू करते समय, स्टार्टअप ने जीआईपीसीडी शुरू करने की कोशिश की और फिर इसे छोड़ दिया। मुझे माई ओरेकल सपोर्ट (एमओएस) और Google खोजों के साथ कई उपयोगी लेख मिले। उन दस्तावेजों में से कई मेरे मुद्दे के साथ सही रास्ते पर लग रहे थे, लेकिन मैं सफलतापूर्वक जीआई को वापस और चलाने में सफल नहीं हो सका। नोड को रिबूट करने से भी मदद नहीं मिली। इस लेख का शेष भाग मदद कर सकता है, भले ही आपकी समस्या gipcd के साथ न हो, यह मेरे लिए केवल महत्वपूर्ण बिंदु था।

इसलिए इस मोड़ पर, मुझे एक निर्णय लेना था। मैं एमओएस पर सेवा अनुरोध (एसआर) दर्ज कर सकता हूं। या मैं क्लस्टर में उस नोड को "पुनर्निर्माण" कर सकता हूं। मुझे पता था कि अगर मैंने एसआर दाखिल किया है, तो मैं भाग्यशाली हूं कि अगले सप्ताह में किसी भी समय नोड चालू हो जाएगा। मैं इतना लंबा इंतजार नहीं करना चाहता था और अगर यह एक उत्पादन प्रणाली होती, तो मैं इतना लंबा इंतजार नहीं कर सकता था। इसलिए मैंने नोड के पुनर्निर्माण का फैसला किया। यह ब्लॉग पोस्ट मेरे द्वारा उठाए गए कदमों का विवरण देगा। उच्च स्तर पर, यही शामिल है:

  1. क्लस्टर से नोड निकालें
  2. उस नोड पर मौजूद किसी भी GI और RDBMS अवशेषों को साफ़ करें।
  3. नोड को वापस क्लस्टर में जोड़ें।
  4. नए नोड के लिए इंस्टेंस और सेवा जोड़ें।
  5. इंस्टेंस शुरू करें।

यदि यह मायने रखता है, तो यह सिस्टम Oracle 12.1.0.2 (GI और RDBMS दोनों) Oracle Linux 7 पर चल रहा है। मेरे उदाहरण में, host01 "अच्छा" नोड है और host02 "खराब" नोड है। डेटाबेस का नाम "orcl" है। जहां संभव हो, मेरे कमांड में उस नोड को इंगित करने वाला संकेत होगा जहां से मैं उस कमांड को चला रहा हूं।

सबसे पहले, मैं खराब नोड को क्लस्टर से हटा दूँगा।

मैं RDBMS सॉफ़्टवेयर को अच्छे नोड की सूची से हटाकर शुरू करता हूँ।

[oracle@host01]$ ./runInstaller -updateNodeList ORACLE_HOME=$RDBMS_HOME "CLUSTER_NODES={host01}" 
LOCAL_NODE=host01

फिर मैं जीआई सॉफ़्टवेयर को इन्वेंट्री से हटा देता हूं।

[oracle@host01]# ./runInstaller -updateNodeList ORACLE_HOME=$GRID_HOME "CLUSTER_NODES={host01}" 
CRS=TRUE -silent

अब मैं उस नोड को क्लस्टर रजिस्ट्री से हटा दूँगा।

[root@host01]# crsctl delete node -n host02
CRS-4661: Node host02 successfully deleted.

वीआईपी को हटा दें।

[root@host01]# srvctl config vip -node host02
VIP exists: network number 1, hosting node host02
VIP Name: host02-vip
VIP IPv4 Address: 192.168.1.101
VIP IPv6 Address: 
VIP is enabled.
VIP is individually enabled on nodes: 
VIP is individually disabled on nodes: 
[root@host01]# srvctl stop vip -vip host02-vip -force
[root@host01]# srvctl remove vip -vip host02-vip
Please confirm that you intend to remove the VIPs host02-vip (y/[n]) y

फिर इंस्टेंस हटा दें।

[root@host01]# srvctl remove instance -db orcl -instance orcl2
Remove instance from the database orcl? (y/[n]) y
 

इस बिंदु पर, अच्छे नोड के दृष्टिकोण से, खराब नोड अब क्लस्टर का हिस्सा नहीं है।

इसके बाद, मैं खराब नोड पर जाऊँगा और सॉफ़्टवेयर को हटा दूँगा और कुछ कॉन्फ़िग फ़ाइलों को साफ़ करूँगा।

[oracle@host02]$ rm -rf /u01/app/oracle/product/12.1.0.2/
[root@host02 ~]# rm -rf /u01/grid/crs12.1.0.2/*
[root@host02 ~]# rm /var/tmp/.oracle/*
[oracle@host02]$ /tmp]$ rm -rf /tmp/*
[root@host02]# rm /etc/oracle/ocr*
[root@host02]# rm /etc/oracle/olr*
[root@host02]# rm -rf /pkg/oracle/app/oraInventory
[root@host02]# rm -rf /etc/oracle/scls_scr

मैंने आसान रास्ता निकाला और आरडीबीएमएस और ग्रिड होम सॉफ्टवेयर को हटाने के लिए बस 'आरएम' का इस्तेमाल किया। चीजें अब सब साफ हो गई हैं। अच्छा नोड एकल-नोड क्लस्टर का अपना हिस्सा सोचता है और खराब नोड क्लस्टर के बारे में भी नहीं जानता है। इसके बाद, मैं उस नोड को वापस क्लस्टर में जोड़ दूंगा। मैं host01 पर एडनोड उपयोगिता का उपयोग करूंगा।

[oracle@host01]$ cd $GRID_HOME/addnode
[oracle@host01]$ ./addnode.sh -ignoreSysPrereqs -ignorePrereq -silent "CLUSTER_NEW_NODES={host02}" 
"CLUSTER_NEW_VIRTUAL_HOSTNAMES={host02-vip}"

यह जीआई होम को host01 से host02 तक क्लोन करेगा। अंत में, मुझे host02 पर root.sh चलाने के लिए कहा जाता है। इस स्क्रिप्ट को चलाने से जीआई ओसीआर और वोटिंग डिस्क से जुड़ जाएगा और क्लस्टरवेयर स्टैक सामने आएगा। हालांकि, आगे बढ़ने से पहले मुझे host02 पर रूट के रूप में एक और क्लीनअप रूटीन चलाने की जरूरत है।

[root@host02]# cd $GRID_HOME/crs/install
[root@host02]# ./rootcrs.sh -verbose -deconfig -force

यह संभव है कि नोड की सफाई करते समय मैं उपरोक्त को पहले चला सकता था। लेकिन यहीं पर मैंने इसे इस समय अंजाम दिया। अब मैं अनुरोध के अनुसार root.sh स्क्रिप्ट चलाता हूं।

[root@host02]# cd $GRID_HOME
[root@host02]# ./root.sh

इस बिंदु पर, host02 अब क्लस्टर का हिस्सा है और GI ऊपर और चल रहा है। मैं "crs_stat -t" और "olsnodes -n" से सत्यापित करता हूं। मैं वीआईपी की भी जांच करता हूं।

[root@host02]# srvctl status vip -vip host02-vip
VIP host02-vip is enabled
VIP host02-vip is running on node: host02

अब वापस host01 पर, आरडीबीएमएस सॉफ्टवेयर को क्लोन करने का समय आ गया है।

[oracle@host01]$ cd $RDBMS_HOME/addnode
[oracle@host01]$ ./addnode.sh "CLUSTER_NEW_NODES={host02}"

यह ओयूआई शुरू करेगा। क्लोन प्रक्रिया को पूरा करने के लिए विज़ार्ड के माध्यम से चलें।

अब मैं उस नोड पर इंस्टेंस को वापस जोड़ दूंगा।

[oracle@host01]$ srvctl add instance -db orcl -instance orcl2 -node host02

अगर सब कुछ ठीक रहा, तो इंस्टेंस ठीक से शुरू हो जाएगा।

[oracle@host01]$ srvctl start instance -db orcl -instance orcl2
[oracle@host01]$ srvctl status database -d orcl
Instance orcl1 is running on node host01
Instance orcl2 is running on node host02
SQL> select inst_id,status from gv$instance;
INST_ID STATUS
---------- ------------
 1 OPEN
 2 OPEN

विस्मयकारी! जो कुछ बचा है वह सभी आवश्यक सेवाओं को फिर से कॉन्फ़िगर करना और शुरू करना है। मेरे पास एक है।

srvctl modify service -db orcl -service hr_svc -modifyconfig -preferred "orcl1,orcl2"
srvctl start service -db orcl -service hr_svc -node host02
srvctl status service -db orcl

इतना ही। मेरे पास अब सब कुछ चालू है।

उम्मीद है कि इस ब्लॉग पोस्ट ने दिखाया है कि क्लस्टर से "खराब" नोड लेना और इसे वापस जोड़ना कितना आसान है। इस पूरी प्रक्रिया को पूरा करने में मुझे लगभग 2 घंटे लगे। एमओएस से मुझे मिले किसी भी संकल्प से बहुत तेज।

मैं अपने मूल मुद्दे के मूल कारण तक कभी नहीं पहुंचा। नोड को क्लस्टर से बाहर निकालना और इसे वापस जोड़ना मुझे बैक अप और रनिंग मिला। यदि मेरी समस्या का मूल कारण हार्डवेयर या OS से संबंधित था तो यह प्रक्रिया काम नहीं करेगी।

और इस सब में मेरे लिए सबसे अच्छा हिस्सा? क्योंकि host01 के पास पहले से ही GI और RDBMS दोनों घरों में PSU लागू था, उन्हें host02 पर क्लोन करने का मतलब है कि मुझे host02 पर OPatch चलाने की आवश्यकता नहीं थी। उस मेजबान को पीएसयू पैच मिला। पैचिंग को पूरा करने के लिए मुझे केवल डेटाबेस के विरुद्ध डेटापैच चलाना था।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. tnsnames.ora फ़ाइल के बिना Oracle कनेक्शन स्ट्रिंग

  2. ओराटोप

  3. Oracle SQL डेवलपर में csv को क्वेरी परिणाम कैसे निर्यात करें?

  4. SQL Oracle काउंटिंग क्लस्टर्स

  5. के साथ Rownum फ़ंक्शन का उपयोग करना> oracle में साइन इन करें