यह ब्लॉग Microsoft® SQL Server® में डेटाबेस स्तर पर होने वाली भ्रष्टाचार का वर्णन करता है, उनका पता कैसे लगाया जाए, और उन्नत पुनर्स्थापना और मरम्मत तकनीकों का उपयोग करके उन्हें कैसे ठीक किया जाए।
परिचय
वर्तमान में, SQL Server अपनी उन्नत आंतरिक संरचना और उच्च विश्वसनीयता के कारण सबसे लोकप्रिय और व्यापक रूप से उपयोग किए जाने वाले रिलेशनल डेटाबेस प्रबंधन प्रणालियों में से एक है। कई संगठनों ने महत्वपूर्ण व्यावसायिक डेटा को बनाए रखने और सहेजने के लिए SQL Server डेटाबेस को चुना है।
कंपनियां डेटाबेस प्रशासकों (DBAs) से लगातार डेटाबेस प्रदर्शन, रखरखाव और सुरक्षा में सुधार की अपेक्षा करती हैं। जब कोई डेटाबेस भ्रष्ट होता है और डेटा अप्राप्य होता है, तो आप विभिन्न कारणों पर संदेह कर सकते हैं जैसे हार्डवेयर भ्रष्टाचार, डिस्क समस्याएं, वायरस हमला, या ऑपरेटिंग सिस्टम (OS) विफलताएं। भ्रष्ट डेटाबेस की मरम्मत तब तक आसान काम नहीं है जब तक आप सर्वोत्तम तकनीक नहीं जानते।
यह पोस्ट डेटाबेस भ्रष्टाचार के कुछ कारणों पर चर्चा करती है, पेज भ्रष्टाचार की पहचान करने में मदद करती है, डेटाबेस कंसिस्टेंसी चेकर (DBCC) CHECKDB कमांड का पता लगाती है, और उन्नत पुनर्स्थापना और मरम्मत तकनीकों को प्रदर्शित करती है।
डेटाबेस भ्रष्टाचार
SQL Server उपयोगकर्ता डेटा को पेजों के रूप में संग्रहीत करता है। वे पेज .MDF (प्राथमिक) डेटा फ़ाइलों में रहते हैं। .MDF फ़ाइल का भ्रष्टाचार पूरे डेटाबेस के भ्रष्टाचार का कारण बन सकता है। डेटा फ़ाइल पेज तब अच्छी होती है जब वह SQL Server की मेमोरी से बाहर लिखी जाती है (यानी डिस्क पर) लेकिन मेमोरी में वापस पढ़े जाने पर खराब होती है, जैसा कि निम्न छवि में दिखाया गया है:
डेटाबेस भ्रष्टाचार के कारण:
डेटाबेस भ्रष्टाचार के प्रकारों में निम्नलिखित शामिल हैं:
- I/O सबसिस्टम (यह डेटाबेस भ्रष्टाचार के सबसे सामान्य कारणों में से एक है।)
- Windows ऑपरेटिंग सिस्टम
- फाइल सिस्टम ड्राइवर जैसे एन्क्रिप्शन या एंटीवायरस
- SAN या RAID कंट्रोलर
- डिस्क
- मेमोरी
- फाइल हेडर
- SQL Server बग
- मानवीय त्रुटियां
त्रुटि संदेश:
जब आप एक भ्रष्ट डेटाबेस तक पहुंचते हैं, तो आपको निम्न त्रुटि संदेश दिखाई दे सकते हैं:
- SQL Server में Msg 823
- SQL Server में Msg 824
- SQL Server में Msg 825 (रीड रीट्राई)
- Error 9004 SQL Server
- मेटाडेटा भ्रष्टाचार त्रुटि
- पेज स्तर भ्रष्टाचार त्रुटि
पेज भ्रष्टाचार का पता लगाना
SQL Server में एक अंतर्निहित तंत्र होता है जो I/O ऑपरेशन के दौरान भ्रष्टाचार होने पर स्वचालित रूप से पहचान करता है और आपको अलर्ट करता है, जैसे डिस्क पर पेज पढ़ना और लिखना।
SQL Server पर निम्नलिखित विभिन्न प्रकार के पेज-स्तरीय सत्यापन विकल्प उपलब्ध हैं जो डिस्क पर पेजों की सुरक्षा में मदद करते हैं:
- TORN_PAGE_DETECTION
- चेकसम
जब TORN_PAGE_DETECTION निर्दिष्ट किया जाता है, तो 8 KB डेटा फ़ाइल पेज के लिए 16 x 512-बाइट डिस्क सेक्टर के लिए एक बिट फ़्लिप किया जाता है जब भी पेज डिस्क पर लिखा जाता है। बाद में पेज को मेमोरी में पढ़े जाने पर, इन मूल्यों की तुलना की जाती है। यदि बिट्स गलत स्थिति में पाए जाते हैं, तो पेज संभवतः गलत तरीके से लिखा गया था। इस मामले में, सिस्टम त्रुटि संदेश 824 उत्पन्न करता है (टॉर्न-पेज त्रुटि दर्शाता है)।
जब चेकसम निर्दिष्ट किया जाता है, तो सिस्टम पेज की सामग्री पर चेकसम मान की गणना करता है और पेज को डिस्क पर लिखते समय उस मान को पेज हेडर में संग्रहीत करता है। बाद में पेज को डिस्क से लोड करने पर, चेकसम की पुनर्गणना की जाती है और पेज हेडर पर संग्रहीत मान के साथ तुलना की जाती है। यदि मान मेल नहीं खाता, तो सिस्टम त्रुटि संदेश 824 उत्पन्न करता है (चेकसम विफलता दर्शाता है)।
दोनों त्रुटियां, 823 हार्ड I/O और 824 सॉफ्ट I/O, गंभीरता 24 की त्रुटियां हैं और msdb.dbo. suspect_pagestable में लॉग की जाती हैं।
टेबल msdb.dbo. suspect_pagestable का उपयोग सिंगल पेज पुनर्स्थापना ऑपरेशन के लिए किया जाता है और इसे SQL Server त्रुटि लॉग और Windows® इवेंट लॉग में लॉग किया जा सकता है।
DBCC CHECKDB
DBCC CHECKDB एक डेटाबेस में सभी ऑब्जेक्ट्स की भौतिक और तार्किक अखंडता की जांच करता है।
यह एक संसाधन-गहन ऑपरेशन है और समानांतर प्रसंस्करण का उपयोग करता है, लेकिन आप इसे ट्रेस फ्लैग 2528 का उपयोग करके सिंगल थ्रेड में चला सकते हैं।
मूलभूत महत्वपूर्ण सिस्टम टेबल जांच
मूलभूत जांच को स्टोरेज इंजन मेटाडेटा रखने वाली महत्वपूर्ण सिस्टम टेबल और आवंटन पथ पर जांच करने के लिए डिज़ाइन किया गया है जहां डेटा MDF फ़ाइलों में संग्रहीत होता है।
मूलभूत जांच निम्न सूची में दिखाई जाती है:
DBCC CHECKALLOC: एक डेटाबेस में आवंटन संरचना स्थिरता की जांच करता है। यह जांचता है कि आवंटन संरचना मान्य है और कोई भी सिंगल डेटा फ़ाइल पेज दो टेबल को आवंटित नहीं हैं।
DBCC CHECKTABLE: टेबल और इंडेक्स की स्थिरता की जांच करता है। यह टेबल और उसके संबंधित इंडेक्स की संरचना को मान्य करता है। यह निर्धारित करता है कि इंडेक्स डेटा में टेबल में मिलान वाली पंक्तियाँ हैं और इंडेक्स ऑर्डर कुंजियों की जांच करता है। यदि टेबल में कोई FILESTREAM उपयोग किया जाता है, तो यह लिंक के अस्तित्व को मान्य करता है।
DBCC CHECKCATALOG: सिस्टम कैटलॉग के बीच स्थिरता की जांच करता है।
DBCC CHECKFILEGROUP: DBCC CHECKDB के समान, यह जांच एक फ़ाइल समूह के लिए स्थिरता जांच और डेटाबेस के लिए आवंटन जांच करता है।
नमूना कोड
DBCC CHECKDB [ ( database_name | database_id | 0 [ , NOINDEX | , { REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILD } ] ) ] [ WITH { [ ALL_ERRORMSGS ] [ , EXTENDED_LOGICAL_CHECKS ] [ , NO_INFOMSGS ] [ , TABLOCK ] [ , ESTIMATEONLY ] [ , { PHYSICAL_ONLY | DATA_PURITY } ] [ , MAXDOP = number_of_processors ] } ] ]
आंतरिक डेटाबेस स्नैपशॉट
CHECKDB के साथ आंतरिक डेटाबेस स्नैपशॉट का उपयोग करके जांच करने और लेनदेन संबंधी स्थिरता बनाए रखने से ब्लॉकिंग और समवर्ती समस्याएं रोकी जाती हैं। यदि आप डेटाबेस स्नैपशॉट नहीं बना सकते, तो सुनिश्चित करें कि आपके पास डेटाबेस के लिए विशेष लॉक और शेयर्ड टेबल लॉक हैं क्योंकि टेबल स्तर की जांच करने के लिए यह आवश्यक है। यदि कोई स्नैपशॉट नहीं बनाया गया तो CHECKDB मास्टर पर विफल हो जाता है।
निम्न सूची में DBCC CHECKDB द्वारा किए गए आंतरिक जांच शामिल हैं:
- महत्वपूर्ण सिस्टम टेबल जांच।
- महत्वपूर्ण सिस्टम टेबल तार्किक जांच।
- अन्य टेबल तार्किक जांच।
- आवंटन जांच।
- मेटाडेटा जांच।
- सर्विस ब्रोकर सत्यापन जांच।
- इंडेक्स्ड व्यू, स्थानिक इंडेक्स जांच।
CHECKDB त्रुटियां
निम्न तालिका कुछ DBCC CHECKDB त्रुटियों को दिखाती है:
सर्वोत्तम अभ्यास
यदि डेटाबेस VLDB में CHECKDB के लिए रनटाइम समस्याएं हैं, तो आपको VLDB उत्पादन डेटाबेस के लिए CHECKDB के रनटाइम को कम करने के लिए अक्सर PHYSICAL_ONLY विकल्प का उपयोग करना चाहिए। हालांकि, आपको आमतौर पर बिना किसी विकल्प के DBCC CHECKDB चलाना चाहिए। अपने व्यक्तिगत उत्पादन वातावरण के आधार पर अपने CHECKDB रन को शेड्यूल करें।
उन्नत पुनर्स्थापना विकल्प
जबकि अधिकांश लोग भ्रष्टाचार के मुद्दों के लिए सरल डेटाबेस पुनर्स्थापना तकनीक का उपयोग करते हैं, निम्नलिखित उन्नत पुनर्स्थापना तकनीकें उपलब्ध हैं:
पेज पुनर्स्थापना
आप इस तकनीक से एक या अधिक पेज पुनर्स्थापित कर सकते हैं। पेज-स्तरीय पुनर्स्थापना डेटाबेस एंटरप्राइज संस्करण के लिए एक ऑनलाइन ऑपरेशन है, और आप अन्य संस्करणों के लिए ऑफ़लाइन ऑपरेशन का उपयोग कर सकते हैं, जिसका अर्थ है कि पुनर्स्थापना प्रक्रिया के दौरान डेटाबेस ऑफ़लाइन हो सकता है।
T-SQL स्क्रिप्ट
RESTORE DATABASE <database_name> PAGE = '<file: page> [ ,... n ] ' [ ,... n ] FROM <backup_device> [ ,... n ] WITH NORECOVERY
पेज आईडी प्राप्त करने के लिए, त्रुटि लॉग, इवेंट ट्रेस, DBCC, और msdb..suspectpages टेबल रिकॉर्ड जैसे विभिन्न स्रोतों का उपयोग करें जो भ्रष्ट पेज और उनकी आईडी सूचीबद्ध करते हैं।
नोट: आप बूट पेज, फाइल हेडर पेज, महत्वपूर्ण सिस्टम टेबल में कुछ पेज, और आवंटन बिटमैप को पेज पुनर्स्थापना के रूप में पुनर्स्थापित नहीं कर सकते।
पीसमील और आंशिक पुनर्स्थापना
पेज पुनर्स्थापना के समान, आप एंटरप्राइज संस्करण के लिए ऑनलाइन और कई फ़ाइलों या फ़ाइलग्रुप वाले अन्य संस्करणों के लिए ऑफ़लाइन पीसमील और आंशिक पुनर्स्थापना कर सकते हैं।
प्रत्येक पीसमील पुनर्स्थापना एक आंशिक पुनर्स्थापना अनुक्रम RESTORE DATABASE स्टेटमेंट से शुरू होती है जो PARTIAL विकल्प के साथ पूर्ण बैकअप को पुनर्स्थापित करती है। जब यह पुनर्स्थापना पूरी होती है, तो डेटाबेस आंशिक रूप से ऑनलाइन होना चाहिए, जिसका अर्थ है कि शेष फ़ाइलें रिकवरी पेंडिंग मोड में हैं क्योंकि रिकवरी स्थगित कर दी गई है।
पिसमील पुनर्स्थापना डेटाबेस के रिकवरी मॉडल और उसके रिकवरी के क्रम पर निर्भर करती है।
पुनर्स्थापना अनुक्रम
फाइलग्रुप X और Z और प्राथमिक फाइलग्रुप की आंशिक पुनर्स्थापना करने के लिए, निम्न कोड चलाएं:
RESTORE DATABASE DB_XYZ FILEGROUP='X',FILEGROUP='Z' FROM partial_backup WITH PARTIAL, RECOVERY;
उपरोक्त बिंदु X पर, निम्न सत्य है:
- फाइलग्रुप Z और प्राथमिक फाइलग्रुप ऑनलाइन हैं।
- फाइलग्रुप Y में फ़ाइलें रिकवरी पेंडिंग हैं।
- फाइलग्रुप ऑफ़लाइन है।
चलाएं RESTORE DATABASE DB_XYZ FILEGROUP='Y' FROM backup WITH RECOVERY;
अब, सभी फाइलग्रुप ऑनलाइन हैं।
अन्य उन्नत मरम्मत तकनीकें
क्या मरम्मत हमेशा डेटा पुनर्प्राप्ति की गारंटी देती है? उत्तर है "नहीं।"
डेटा को भ्रष्ट करने वाले कई संभावित संयोजन हो सकते हैं, और सभी संयोजनों का परीक्षण करना असंभव है। उदाहरण के लिए, एक सिस्टम टेबल भ्रष्ट है, और बूट और PFS जैसे पेज पर मरम्मत काम नहीं करेगी।
निम्नलिखित कुछ मरम्मत विकल्प हैं:
REPAIR_REBUILD
यह विकल्प मरम्मत करता है, लेकिन क्षतिग्रस्त NC इंडेक्स को पुनर्निर्माण करते समय डेटा हानि हो सकती है।
REPAIR_ALLOW_DATA_LOSS
यह विकल्प मरम्मत करता है, लेकिन इससे डेटा हानि हो सकती है।
सिस्टम टेबल इंडेक्स पुनर्निर्माण
आप क्लस्टर्ड सिस्टम टेबल इंडेक्स की मरम्मत नहीं कर सकते, लेकिन आप DBCC CHECKTABLE विकल्प की जांच करके कुछ स्थितियों में नॉन-क्लस्टर्ड इंडेक्स की मरम्मत कर सकते हैं।
नोट: किसी भी प्रकार की उन्नत मरम्मत तकनीक को हमेशा डेटाबेस की एक प्रति पर करें, मूल डेटाबेस पर नहीं, ताकि गंभीर स्थितियों से बचा जा सके।
नॉन-क्लस्टर्ड इंडेक्स से डेटा पुनर्निर्माण:
यदि क्लस्टर्ड इंडेक्स या हीप क्षतिग्रस्त है, तो नॉन-क्लस्टर्ड (NC) इंडेक्स से डेटा पुनर्प्राप्त करने के लिए मरम्मत ही एकमात्र विकल्प है। हालांकि, कुछ मामलों में, मरम्मत काम नहीं करेगी यदि मेटाडेटा भ्रष्ट है।
आप नॉन-क्षतिग्रस्त NC इंडेक्स के चयन को बाध्य करने के लिए एक SELECT स्टेटमेंट का उपयोग कर सकते हैं, लेकिन यह NC इंडेक्स के कॉलम-स्तरीय कवरेज पर निर्भर हो सकता है।
DBCC पेज
DBCC PAGE … WITH TABLERESULTS का उपयोग करके कुंजी श्रेणियों की पहचान की जा सकती है। आप इसे नॉन-क्लस्टर्ड इंडेक्स से बना सकते हैं और भ्रष्ट पेज की जांच करके पेज से डेटा प्राप्त करने का प्रयास कर सकते हैं।
निष्कर्ष
इस पोस्ट को पढ़ने के बाद, आपको डेटाबेस भ्रष्टाचार और सरल और उन्नत दोनों तकनीकों का उपयोग करके अपने डेटाबेस को कैसे पुनर्प्राप्त करना है, इसकी बेहतर समझ होनी चाहिए। इसके अतिरिक्त, ये तकनीकें भ्रष्टाचार के बाद डेटाबेस को ऑनलाइन लाने में मदद करती हैं। आपके पास किसी भी भ्रष्टाचार आउटेज से बचने के लिए हमेशा एक मजबूत बैकअप योजना होनी चाहिए।
कोई भी टिप्पणी करने या प्रश्न पूछने के लिए फीडबैक टैब का उपयोग करें।
विशेषज्ञ प्रशासन, प्रबंधन और कॉन्फ़िगरेशन के साथ अपने वातावरण को अनुकूलित करें
Rackspace के एप्लिकेशन सेवाओं (RAS) विशेषज्ञ अनुप्रयोगों के एक व्यापक पोर्टफोलियो में निम्नलिखित पेशेवर और प्रबंधित सेवाएं प्रदान करते हैं:
- ईकॉमर्स और डिजिटल अनुभव प्लेटफॉर्म
- एंटरप्राइज रिसोर्स प्लानिंग (ERP)
- बिजनेस इंटेलिजेंस
- सेल्सफोर्स कस्टमर रिलेशनशिप मैनेजमेंट (CRM)
- डेटाबेस
- ईमेल होस्टिंग और उत्पादकता
हम प्रदान करते हैं:
- निष्पक्ष विशेषज्ञता: हम आपकी आधुनिकीकरण यात्रा को सरल बनाते हैं और मार्गदर्शन करते हैं, उन क्षमताओं पर ध्यान केंद्रित करते हैं जो तत्काल मूल्य प्रदान करती हैं।
- फैनेटिकल एक्सपीरियंस™: हम एक प्रोसेस फर्स्ट, टेक्नोलॉजी सेकंड® दृष्टिकोण को समर्पित तकनीकी सहायता के साथ जोड़कर व्यापक समाधान प्रदान करते हैं।
- अद्वितीय पोर्टफोलियो: हम आपको सही क्लाउड पर सही तकनीक चुनने और तैनात करने में मदद करने के लिए व्यापक क्लाउड अनुभव लागू करते हैं।
- चुस्त डिलीवरी: हम आपकी यात्रा में जहां आप हैं, वहां मिलते हैं और अपनी सफलता को आपके साथ संरेखित करते हैं।
अभी चैट करें शुरू करने के लिए।