LOGGING/NOLOGGING REDO और UNDO की पीढ़ी को कम करने के लिए डायरेक्ट पाथ राइट्स को सक्षम करने के प्रबंधन में मदद करता है। यह पुनर्प्राप्ति और प्रदर्शन के बीच नाजुक संतुलन को नियंत्रित करने के कई तरीकों में से एक है।
Oracle आर्किटेक्चर पृष्ठभूमि की जानकारी
रेडो Oracle कैसे स्थायित्व प्रदान करता है, ACID में "D"। जब कोई लेन-देन किया जाता है तो परिवर्तन आवश्यक रूप से डेटाफ़ाइल्स में बड़े करीने से संग्रहीत नहीं होते हैं। यह चीजों को तेज रखता है और पृष्ठभूमि प्रक्रियाओं को कुछ काम संभालने देता है। REDO परिवर्तन का विवरण है। यह एक "गूंगा" लॉग में, कई डिस्क पर जल्दी से संग्रहीत किया जाता है। परिवर्तन तेजी से होते हैं और यदि प्रतिबद्धता वापस आने के बाद सर्वर एक माइक्रोसेकंड की शक्ति खो देता है, तो Oracle यह सुनिश्चित करने के लिए REDO लॉग के माध्यम से जा सकता है कि परिवर्तन खो नहीं गया है।
पूर्ववत करें Oracle को निरंतरता प्रदान करने में मदद करता है, ACID में "C"। यह परिवर्तन को उलटने के तरीके का विवरण संग्रहीत करता है। इस जानकारी की आवश्यकता किसी अन्य प्रक्रिया के लिए हो सकती है जो तालिका पढ़ रही है और यह जानना आवश्यक है कि उपयोग किया गया मान क्या है पुराने समय में होना।
प्रत्यक्ष पथ लिखता है REDO, UNDO, कैशे और कुछ अन्य सुविधाओं को छोड़ें और डेटा फ़ाइलों को सीधे संशोधित करें। यह कई वातावरणों में एक तेज़ लेकिन संभावित रूप से खतरनाक विकल्प है, यही वजह है कि इसे नियंत्रित करने के लिए बहुत सारे भ्रमित करने वाले विकल्प हैं। डायरेक्ट पाथ राइट केवल INSERTS पर लागू होता है, और केवल नीचे वर्णित परिदृश्यों में।
यदि आप कुछ नहीं करते हैं, तो डिफ़ॉल्ट विकल्प सबसे सुरक्षित, लॉगिंग है।
डायरेक्ट पाथ राइट्स को नियंत्रित करने के कई तरीके
सीधे पथ लिखने को नियंत्रित करने के लिए लॉगिंग/नोलॉगिंग कई विकल्पों में से एक है। इस तालिका को से देखें। आस्कटॉम यह समझने के लिए कि विभिन्न विकल्प सभी एक साथ कैसे काम करते हैं:
Table Mode Insert Mode ArchiveLog mode result
----------- ------------- ----------------- ----------
LOGGING APPEND ARCHIVE LOG redo generated
NOLOGGING APPEND ARCHIVE LOG no redo
LOGGING no append ARCHIVE LOG redo generated
NOLOGGING no append ARCHIVE LOG redo generated
LOGGING APPEND noarchive log mode no redo
NOLOGGING APPEND noarchive log mode no redo
LOGGING no append noarchive log mode redo generated
NOLOGGING no append noarchive log mode redo generated
बल लॉगिंग उन सभी सेटिंग्स को ओवरराइड कर सकता है। शायद कुछ अन्य स्विच हैं जिनके बारे में मुझे जानकारी नहीं है। और निश्चित रूप से कई सीमाएँ हैं जो प्रत्यक्ष पथ को रोकती हैं - ट्रिगर, विदेशी कुंजियाँ, क्लस्टर, अनुक्रमणिका संगठित तालिकाएँ, आदि।
अनुक्रमणिका के लिए नियम और भी अधिक प्रतिबंधात्मक हैं। एक इंडेक्स हमेशा होगा DML स्टेटमेंट के दौरान REDO जेनरेट करें। केवल DDL स्टेटमेंट, जैसे CREATE INDEX ... NOLOGGING
या ALTER INDEX ... REBUILD
NOLOGGING अनुक्रमणिका पर REDO उत्पन्न नहीं होगा।
इतने सारे तरीके क्यों हैं? क्योंकि पुनर्प्राप्ति क्षमता अविश्वसनीय रूप से महत्वपूर्ण है और विभिन्न भूमिकाओं के मामले पर अलग-अलग विचार हो सकते हैं। और कभी-कभी कुछ लोगों के निर्णयों को दूसरों को ओवरराइड करने की आवश्यकता होती है।
डेवलपर्स कथन स्तर पर निर्णय लें, "मोड डालें"। /*+ APPEND */
. के साथ कई अजीब चीजें हो सकती हैं संकेत और डेवलपर्स को इसका उपयोग करने के लिए सावधानी से चुनने की आवश्यकता है।
वास्तुकार वस्तु स्तर, "टेबल मोड" पर निर्णय लें। कुछ टेबल, इस बात पर ध्यान दिए बिना कि कोई डेवलपर कितनी तेज़ी से इसमें सम्मिलित करना चाहे, हमेशा पुनर्प्राप्त करने योग्य होना चाहिए।
डेटाबेस व्यवस्थापक डेटाबेस या टेबलस्पेस मोड, "आर्काइव लॉग" और फोर्स लॉगिंग पर निर्णय लें। हो सकता है कि संगठन किसी विशिष्ट डेटाबेस को पुनर्प्राप्त करने की परवाह नहीं करता है, इसलिए इसे NOARCHIVELOG मोड पर सेट करें। या हो सकता है कि संगठन का एक सख्त नियम है कि सब कुछ पुनर्प्राप्त करने योग्य होना चाहिए, इसलिए टेबलस्पेस को फोर्स लॉगिंग पर सेट करें।