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

Oracle में ORA_ROWSCN व्यवहार को समझना

डिफ़ॉल्ट रूप से, ORA_ROWSCN ब्लॉक स्तर पर संग्रहित किया जाता है, पंक्ति स्तर पर नहीं। यह केवल पंक्ति स्तर पर संग्रहीत होता है यदि तालिका मूल रूप से ROWDEPENDENCIES के साथ बनाई गई थी सक्षम। यह मानते हुए कि आप अपनी तालिका की कई पंक्तियों को एक ही ब्लॉक में फ़िट कर सकते हैं और आप APPEND का उपयोग नहीं कर रहे हैं तालिका के मौजूदा उच्च जल चिह्न के ऊपर नया डेटा सम्मिलित करने का संकेत, आप संभवतः उन ब्लॉकों में नया डेटा सम्मिलित कर रहे हैं जिनमें पहले से ही कुछ मौजूदा डेटा है। डिफ़ॉल्ट रूप से, यह ORA_ROWSCN . को बदलने वाला है ब्लॉक में प्रत्येक पंक्ति के कारण आपकी क्वेरी वास्तव में डाली गई पंक्तियों की तुलना में अधिक पंक्तियों की गणना करती है।

चूंकि ORA_ROWSCN पिछली बार एक पंक्ति में डीएमएल होने पर केवल ऊपरी-बाउंड होने की गारंटी दी जाती है, यह निर्धारित करना अधिक सामान्य होगा कि आज CREATE_DATE जोड़कर कितनी पंक्तियां डाली गईं तालिका में कॉलम जो डिफ़ॉल्ट रूप से SYSDATE . पर है या SQL%ROWCOUNT . पर भरोसा करने के लिए आपके INSERT . के बाद भाग गया (यह मानते हुए, कि आप एक ही INSERT . का उपयोग कर रहे हैं सभी पंक्तियों को सम्मिलित करने के लिए कथन)।

आम तौर पर, ORA_ROWSCN . का उपयोग करते हुए और SCN_TO_TIMESTAMP फ़ंक्शन एक समस्यात्मक तरीका होने जा रहा है जब एक पंक्ति डाली गई थी, भले ही तालिका ROWDEPENDENCIES के साथ बनाई गई हो . ORA_ROWSCN एक Oracle SCN देता है जो एक सिस्टम चेंज नंबर है। यह किसी विशेष परिवर्तन (यानी लेन-देन) के लिए एक विशिष्ट पहचानकर्ता है। जैसे, एक SCN और एक समय के बीच कोई सीधा संबंध नहीं है-- मेरा डेटाबेस आपके SCN को आपकी तुलना में एक लाख गुना अधिक तेज़ी से उत्पन्न कर सकता है और मेरा SCN 1 आपके SCN 1 से अलग हो सकता है। Oracle पृष्ठभूमि प्रक्रिया SMON एक तालिका रखता है जो एससीएन मानों को अनुमानित टाइमस्टैम्प पर मैप करता है लेकिन यह केवल उस डेटा को सीमित समय के लिए बनाए रखता है-- अन्यथा, आपका डेटाबेस एक बहु-अरब पंक्ति तालिका के साथ समाप्त हो जाएगा जो एससीएन को टाइमस्टैम्प मैपिंग में संग्रहीत कर रहा था। यदि पंक्ति एक सप्ताह पहले (और सटीक सीमा डेटाबेस और डेटाबेस संस्करण पर निर्भर करती है) से अधिक डाली गई थी, SCN_TO_TIMESTAMP SCN को टाइमस्टैम्प में बदलने में सक्षम नहीं होगा और एक त्रुटि लौटाएगा।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. क्या कोई डेटाबेस इंजन है जो RegEx द्वारा निर्दिष्ट क्वेरी करने योग्य फ़ील्ड बाधा की अनुमति देता है?

  2. Oracle PL/SQL में INR मुद्रा (भारतीय रुपये) के लिए अंकों/संख्याओं को शब्दों में बदलना

  3. मैं Oracle SQL क्वेरी में त्रुटि की स्थिति कैसे प्राप्त कर सकता हूं?

  4. एक कर्सर को सशर्त रूप से परिभाषित करें

  5. पीएल/एसक्यूएल में स्ट्रिंग विभाजन