ब्लॉग Microsoft® SQL Server® में डेटाबेस स्तर पर हो सकने वाले भ्रष्टाचारों का वर्णन करता है, उनका पता कैसे लगाएं, और उन्नत पुनर्स्थापना और मरम्मत तकनीकों का उपयोग करके उन्हें कैसे ठीक करें।
परिचय
वर्तमान में, SQL सर्वर अपनी उन्नत आंतरिक संरचना और अधिक विश्वसनीयता के कारण सबसे लोकप्रिय और व्यापक रूप से उपयोग किए जाने वाले रिलेशनल डेटाबेस प्रबंधन प्रणालियों में से एक है। कई संगठनों ने महत्वपूर्ण व्यावसायिक डेटा को बनाए रखने और सहेजने के लिए SQL सर्वर डेटाबेस का विकल्प चुना है।
कंपनियां उम्मीद करती हैं कि डेटाबेस एडमिनिस्ट्रेटर (डीबीए) डेटाबेस के प्रदर्शन, रखरखाव और सुरक्षा में लगातार सुधार करेंगे। जब एक डेटाबेस दूषित हो जाता है और डेटा पहुंच योग्य नहीं होता है, तो आपको हार्डवेयर भ्रष्टाचार, डिस्क समस्या, वायरस हमला, या ऑपरेटिंग सिस्टम (ओएस) विफलताओं जैसे कई कारणों पर संदेह हो सकता है। जब तक आप सबसे अच्छी तकनीक नहीं जानते, तब तक दूषित डेटाबेस को ठीक करना कोई आसान काम नहीं है।
यह पोस्ट डेटाबेस भ्रष्टाचार के कुछ कारणों पर चर्चा करता है, पृष्ठ भ्रष्टाचार की पहचान करने में आपकी सहायता करता है, डेटाबेस संगतता परीक्षक (डीबीसीसी) CHECKDB कमांड की पड़ताल करता है, और उन्नत पुनर्स्थापना और मरम्मत तकनीकों को प्रदर्शित करता है।
डेटाबेस भ्रष्टाचार
SQL सर्वर उपयोगकर्ता डेटा को पृष्ठों के रूप में संग्रहीत करता है। वे पृष्ठ.MDF . में रहते हैं (प्राथमिक) डेटा फ़ाइलें। एक .MDF . का भ्रष्टाचार फ़ाइल पूरे डेटाबेस के भ्रष्टाचार का कारण बन सकती है। डेटा फ़ाइल पृष्ठ SQL सर्वर की मेमोरी से बाहर लिखे जाने पर अच्छा होता है (अर्थात डिस्क पर) लेकिन मेमोरी में वापस पढ़ने पर खराब होता है, जैसा कि निम्न छवि में दिखाया गया है:
डेटाबेस भ्रष्टाचार के कारण:
डेटाबेस भ्रष्टाचार के प्रकारों में निम्नलिखित आइटम शामिल हैं:
- I/O सबसिस्टम (यह डेटाबेस भ्रष्टाचार के सबसे सामान्य कारणों में से एक है।)
- विंडोज ऑपरेटिंग सिस्टम
- फ़ाइल सिस्टम ड्राइवर जैसे एन्क्रिप्शन या एंटीवायरस
- सैन या RAID नियंत्रक
- डिस्क
- स्मृति
- फ़ाइल हेडर
- एसक्यूएल सर्वर बग्स
- मानवीय त्रुटियां
त्रुटि संदेश:
जब आप किसी दूषित डेटाबेस तक पहुँचते हैं, तो आपको निम्न त्रुटि संदेश दिखाई दे सकते हैं:
- एसक्यूएल सर्वर में संदेश 823
- एसक्यूएल सर्वर में संदेश 824 SQL सर्वर में
- संदेश 825 (पुनः प्रयास पढ़ें)
- त्रुटि 9004 SQL सर्वर
- मेटाडेटा भ्रष्टाचार त्रुटि
- पृष्ठ स्तरीय भ्रष्टाचार त्रुटि
पृष्ठ भ्रष्टाचार का पता लगाना
SQL सर्वर में एक अंतर्निहित तंत्र है जो डिस्क पर पृष्ठों को पढ़ने और लिखने जैसे I/0 संचालन के दौरान भ्रष्टाचार होने पर आपको स्वचालित रूप से पहचानने और सतर्क करने के लिए है।
निम्नलिखित विभिन्न प्रकार के पृष्ठ-स्तरीय सत्यापन विकल्प SQL सर्वर पर उपलब्ध हैं और डिस्क पर पृष्ठों को सुरक्षित रखने में मदद करते हैं:
- TORN_PAGE_DETECTION
- चेकसम
जब TORN_PAGE_DETECTION निर्दिष्ट किया गया है, जब भी पृष्ठ डिस्क पर लिखा जाता है, तो 8 केबी डेटा फ़ाइल पृष्ठ के लिए 16 x 512-बाइटडिस्क सेक्टर के लिए थोड़ा फ़्लिप किया जाता है। पृष्ठ को बाद में स्मृति में पढ़ने के बाद, इन मानों की तुलना की जाती है। यदि बिट्स में पाए जाते हैं गलत स्थिति, संभावित रूप से पृष्ठ गलत लिखा गया था। इस स्थिति में, सिस्टम एक त्रुटि संदेश 824 उत्पन्न करता है (एक फटे-पेज त्रुटि का संकेत)।
जब चेकसम निर्दिष्ट किया गया है, सिस्टम पृष्ठ की सामग्री पर चेकसम मान की गणना करता है और डिस्क पर पृष्ठ लिखते समय उस मान को पृष्ठ शीर्षलेख में संग्रहीत करता है। बाद में डिस्क से पेज लोड होने के बाद, चेकसम की पुनर्गणना की जाती है और पेज हेडर पर संग्रहीत मूल्य के साथ तुलना की जाती है। यदि मान मेल नहीं खाता है, तो सिस्टम एक त्रुटि संदेश 824 (चेकसम विफलता का संकेत) उत्पन्न करता है।
दोनों त्रुटियां, 823 कठिन I/O और 824 सॉफ्ट I/O , गंभीरता 24 त्रुटियां हैं और msdb.dbo. . में लॉग इन हैं संदिग्ध_पृष्ठस्थिर।
तालिका msdb.dbo. संदिग्ध_पृष्ठस्थिर एकल पृष्ठ पुनर्स्थापना संचालन के लिए उपयोग किया जाता है और इसे SQL सर्वर त्रुटि लॉग और Windows® ईवेंट लॉग में लॉग किया जा सकता है।
DBCC CHECKDB
DBCC CHECKDB डेटाबेस में सभी वस्तुओं की भौतिक और तार्किक अखंडता की जाँच करता है।
यह एक संसाधन-गहन ऑपरेशन है और समानांतर प्रसंस्करण का उपयोग करता है, लेकिन आप ध्वज 2528 को ट्रेस करके इसे एक ही थ्रेड में चला सकते हैं।
आदिम महत्वपूर्ण सिस्टम तालिका जांच
आदिम जांच को महत्वपूर्ण सिस्टम टेबल पर जांच करने के लिए डिज़ाइन किया गया है जो स्टोरेज इंजन मेटाडेटा और आवंटन पथ पर है जहां डेटा MDF में संग्रहीत है। फ़ाइलें.
आदिम जाँच निम्न सूची में दिखाए गए हैं:
-
डीबीसीसी चेकअलोक :डेटाबेस में आवंटन संरचना स्थिरता की जाँच करता है। यह जाँचता है कि आवंटन संरचना मान्य है और दो तालिकाओं के लिए कोई एकल डेटा फ़ाइल पृष्ठ आवंटित नहीं किया गया है।
-
डीबीसीसी चेकटेबल :टेबल और इंडेक्स की स्थिरता की जाँच करता है। यह तालिका की संरचना और उससे संबंधित अनुक्रमणिका को मान्य करता है। यह निर्धारित करता है कि क्या अनुक्रमणिका डेटा में तालिका में मेल खाने वाली पंक्तियाँ हैं और अनुक्रमणिका क्रम कुंजियों की जाँच करता है। यदि तालिका में किसी FILESTREAM का उपयोग किया गया है, तो यह लिंक के अस्तित्व की पुष्टि करता है।
-
डीबीसीसी चेककैटलॉग :सिस्टम कैटलॉग के बीच एकरूपता की जाँच करता है।
-
डीबीसीसी चेकफाइलग्रुप :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 के लिए रन टाइम समस्याएं हैं, आपको PHYSICAL_ONLY . का उपयोग करना चाहिए VLDB . के रन टाइम को कम करने के लिए अक्सर विकल्प उत्पादन डेटाबेस। हालांकि, आपको आम तौर पर बिना किसी विकल्प के DBCC CHECKDB चलाना चाहिए। अपने CHECKDB रन को शेड्यूल करना आपके व्यक्तिगत उत्पादन वातावरण पर निर्भर करता है।
उन्नत पुनर्स्थापना विकल्प
जबकि अधिकांश लोग भ्रष्टाचार के मुद्दों के लिए सरल डेटाबेस पुनर्स्थापना तकनीक का उपयोग करते हैं, निम्नलिखित उन्नत पुनर्स्थापना तकनीकें उपलब्ध हैं:
पृष्ठ पुनर्स्थापना
आप इस तकनीक से एक या अधिक पृष्ठों को पुनर्स्थापित कर सकते हैं। पृष्ठ-स्तरीय पुनर्स्थापना डेटाबेस एंटरप्राइज़ संस्करण के लिए एक ऑनलाइन कार्रवाई है, और आप अन्य संस्करणों के लिए ऑफ़लाइन संचालन का उपयोग कर सकते हैं, जिसका अर्थ है कि पुनर्स्थापना प्रक्रिया के दौरान डेटाबेस ऑफ़लाइन हो सकता है।
T-SQL स्क्रिप्ट
RESTORE DATABASE <database_name>
PAGE = '<file: page> [ ,... n ] ' [ ,... n ]
FROM <backup_device> [ ,... n ]
WITH NORECOVERY
पेज आईडी प्राप्त करने के लिए, उपलब्ध विभिन्न स्रोतों का उपयोग करें जैसे त्रुटि लॉग, इवेंटट्रेस, डीबीसीसी, और 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;
अब, सभी फ़ाइल समूह ऑनलाइन हैं।
अन्य उन्नत मरम्मत तकनीकें
क्या मरम्मत हमेशा डेटा रिकवरी की गारंटी देती है? जवाब "नहीं" है।
ऐसे कई संभावित संयोजन हो सकते हैं जो डेटा को दूषित कर सकते हैं, और सभी संयोजनों का परीक्षण करना असंभव है। उदाहरण के लिए, एक सिस्टम तालिका दूषित है, और मरम्मत बूट जैसे पृष्ठों पर काम नहीं करेगी और पीएफएस ।
मरम्मत के कुछ विकल्प निम्नलिखित हैं:
REPAIR_REBUILD
यह विकल्प मरम्मत करता है, लेकिन क्षतिग्रस्त NCindexes का पुनर्निर्माण करते समय यह डेटा हानि का कारण बन सकता है।
REPAIR_ALLOW_DATA_LOSS
यह विकल्प मरम्मत करता है, लेकिन इससे डेटा हानि हो सकती है।
सिस्टम टेबल इंडेक्स का पुनर्निर्माण
आप संकुल सिस्टम तालिका अनुक्रमणिका की मरम्मत नहीं कर सकते हैं, लेकिन आप कुछ स्थितियों में DBCC CHECKTABLE विकल्प की जाँच करके गैर-संकुल अनुक्रमणिका की मरम्मत कर सकते हैं।
नोट: हमेशा किसी भी प्रकार की उन्नत मरम्मत तकनीकों को डेटाबेस की एक प्रति पर निष्पादित करें, न कि मूल डेटाबेस पर विकट परिस्थितियों से बचने के लिए।
गैर-क्लस्टर किए गए इंडेक्स से तारीख फिर से बनाएं:
यदि क्लस्टर्ड इंडेक्स या हीप क्षतिग्रस्त है, तो नॉन-क्लस्टर्ड (NC) इंडेक्स से डेटा रिकवर करने के लिए रिपेयर ही एकमात्र विकल्प है। हालांकि, कुछ मामलों में, मेटाडेटा दूषित होने पर मरम्मत काम नहीं करेगी।
आप गैर-क्षतिग्रस्त एनसी इंडेक्स के चयन को मजबूर करने के लिए एक चयन कथन का उपयोग कर सकते हैं, लेकिन यह एनसी इंडेक्स के कॉलम-स्तरीय कवरेज पर निर्भर हो सकता है।
डीबीसीसी पेज
DBCC PAGE … WITH TABLERESULTS
प्रमुख श्रेणियों की पहचान कर सकते हैं। आप इसे गैर-संकुल अनुक्रमणिका से बना सकते हैं और पृष्ठों से डेटा प्राप्त करने का प्रयास करने के लिए भ्रष्ट पृष्ठों की जांच कर सकते हैं।
निष्कर्ष
इस पोस्ट को पढ़ने के बाद, आपको डेटाबेस भ्रष्टाचार की बेहतर समझ होनी चाहिए और सरल और उन्नत दोनों तकनीकों का उपयोग करके अपने डेटाबेस को कैसे पुनर्प्राप्त करना है। इसके अतिरिक्त, ये तकनीक भ्रष्टाचार के बाद डेटाबेस को ऑनलाइन लाने में मदद करती हैं। भ्रष्टाचार के किसी भी नुकसान से बचने के लिए आपके पास हमेशा एक मजबूत बैकअप योजना होनी चाहिए।
कोई टिप्पणी करने या प्रश्न पूछने के लिए फ़ीडबैक टैब का उपयोग करें।
विशेषज्ञ प्रशासन, प्रबंधन और कॉन्फ़िगरेशन के साथ अपने परिवेश को अनुकूलित करें
रैकस्पेस की एप्लिकेशन सेवाएं(RAS) विशेषज्ञ अनुप्रयोगों के व्यापक पोर्टफोलियो में निम्नलिखित पेशेवर और प्रबंधित सेवाएं प्रदान करते हैं:
- ईकामर्स और डिजिटल अनुभव प्लेटफॉर्म
- एंटरप्राइज रिसोर्स प्लानिंग (ईआरपी)
- बिजनेस इंटेलिजेंस
- बिक्री बल ग्राहक संबंध प्रबंधन (सीआरएम)
- डेटाबेस
- ईमेल होस्टिंग और उत्पादकता
हम वितरित करते हैं:
- निष्पक्ष विशेषज्ञता :हम तत्काल मूल्य प्रदान करने वाली क्षमताओं पर ध्यान केंद्रित करते हुए आपकी आधुनिकीकरण यात्रा को सरल और मार्गदर्शन करते हैं।
- कट्टर अनुभव ™:हम पहले एक प्रक्रिया को जोड़ते हैं। प्रौद्योगिकी दूसरा। व्यापक समाधान प्रदान करने के लिए समर्पित तकनीकी सहायता के साथ दृष्टिकोण।
- बेजोड़ पोर्टफोलियो :हम व्यापक क्लाउड अनुभव लागू करते हैं ताकि आपको सही क्लाउड पर सही तकनीक को चुनने और परिनियोजित करने में मदद मिल सके।
- फुर्तीली डिलीवरी :हम आपसे मिलते हैं जहां आप अपनी यात्रा में हैं और सफलता को अपने साथ संरेखित करते हैं।
आरंभ करने के लिए अभी चैट करें।