2009-02-10 14 views
17

अधिकांश तालिकाओं (यदि सभी नहीं हैं) में "ब्लॉब" फ़ील्ड है। तालिका में से एक जो उपयोगकर्ता की कार्रवाई के लॉग स्टोर करता है अब 8 जीबी (लगभग 5 मिलियन रिकॉर्ड) तक बढ़ गया है।ऑरैकल में लॉब सेगमेंट (SYS_LOB) को समझना?

और हमारे डीबीए ने देखा है कि यह स्कीमा अब अंतरिक्ष को तेजी से खा रही है। हमने थोड़ा सा जांच की और पाया कि इसमें से एक टेबल (SYS_LOB) है जिसमें लगभग 116 जीबी 140 जीबी डाटाबेस होता है।

हमारे डीबीए हमें बताया गया है कि इस तालिका तालिका उपयोगकर्ता क्रियाओं के लॉग बचाता है कि (जो 8GB है)

किसी को भी पता है कि इस SYS_LOB टेबल करता है से संबंधित है? क्या हमने बनाई गई तालिका में वास्तविक ब्लॉब बचाया है या ऑरैकल वास्तव में इन ब्लॉब को एक अलग तालिका में संग्रहीत करता है (यदि हां, तो SYS_LOB वह तालिका होगी)?

उत्तर

38

वहाँ Oracle डाटाबेस में कोई तालिका SYS_LOB (कम से कम, ऐसी कोई तालिका स्थापित एक बुनियादी डेटाबेस का हिस्सा है है। एक मेज DBA_LOBS कि डेटाबेस में सभी LOB स्तंभों बारे में जानकारी प्रदर्शित नहीं है, लेकिन यह वास्तव में किसी भी LOB डेटा, बस मेटाडाटा दुकान नहीं है। डेटाबेस में वास्तविक LOB खंडों सिस्टम-जनित ऐसे नाम हैं जो प्रपत्र SYS_LOB पहचानकर्ता $$ लेने की है।

मेरा अनुमान है कि आपके डीबीए नाम के एक खंड की पहचान की है है SYS_LOBपहचानकर्ता $$ जो 116 जीबी स्पेस का उपभोग कर रहा है। मान लीजिए कि यह सही है, आप यह पता लगा सकते हैं कि किस तालिका का कॉलम LOB स्तंभ DBA_LOBS तालिका का उपयोग करने के लिए नक्शे है, यानी

SELECT owner, table_name, column_name 
    FROM dba_lobs 
WHERE segment_name = 'SYS_LOB<<identifier>>$$' 
+2

यह व्यावहारिक है, धन्यवाद। यह स्वीकार्य उत्तर बीटीडब्ल्यू होना चाहिए .. –

संबंधित मुद्दे