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

खाली लेकिन विशाल LOB कॉलम से कैसे छुटकारा पाएं?

कॉलम को छोड़ने और फिर से जोड़ने के विकल्प के रूप में आप shrink space खंड :

ALTER TABLE t MODIFY LOB (c) (SHRINK SPACE);

db<>fiddle , जो 18c है लेकिन 11g में भी काम करना चाहिए। (बाद में:हाँ, यह 11gR2 में retention none . के साथ करता है वैसे भी छोड़ा गया; SQL Fiddle हालांकि इसे पसंद नहीं करता है।)

उस विवरण को याद किया, लेकिन यह अभी भी काम करता है; XMLType कॉलम का बैकअप लेने वाले छिपे हुए BLOB कॉलम को खोजने के लिए आपको बस एक अतिरिक्त चरण की आवश्यकता है, जैसा कि यहां दिखाया गया है ए> . मैंने alter बना दिया है गतिशील बस इसे मक्खी पर लेने के लिए, लेकिन अगर आप इसे मैन्युअल रूप से पा सकते हैं तो आप इसे स्पष्ट रूप से स्वयं कथन में प्लग कर सकते हैं:

DECLARE
  l_name USER_TAB_COLUMNS.COLUMN_NAME%TYPE;
  l_stmt VARCHAR2(100);
BEGIN
  select column_name
  into l_name
  from user_tab_cols 
  where 
    table_name = 'T' and hidden_column = 'YES'
    and
    column_id = (
        select column_id 
        from user_tab_cols 
        where table_name = 'T' and column_name = 'X'
    );

  l_stmt := 'ALTER TABLE t MODIFY LOB ("' || l_name || '") (SHRINK SPACE)';
  dbms_output.put_line(l_stmt);
  execute immediate l_stmt;
END;
/

db<>fiddle

शायद यह ध्यान देने योग्य है कि यह basicfile . के साथ काम करता है संग्रहण, जैसा कि आपके न्यूनतम डेमो में दिखाया गया है, लेकिन securefile . के साथ काम नहीं कर सकता है भंडारण - कम से कम कुछ समय जो ORA-10635 फेंकता है:अमान्य खंड या टेबलस्पेस प्रकार।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle.DataAccess का रिटर्न मान गैर-क्वेरी निष्पादित करें (संग्रहीत खरीद)

  2. एसक्यूएल में अमान्य पहचानकर्ता त्रुटि के साथ सबक्वेरी

  3. आप 'HH24:MI:SSxFF6' के प्रारूप में एक varchar2 फ़ील्ड को इंटरवल आवर टू सेकेंड (6) के रूप में कैसे चुनते हैं?

  4. Oracle संग्रहित प्रक्रिया और कस्टम डेटा प्रकार

  5. आदेश के साथ Oracle सम्मिलित करें