कॉलम को छोड़ने और फिर से जोड़ने के विकल्प के रूप में आप 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;
/
शायद यह ध्यान देने योग्य है कि यह basicfile
. के साथ काम करता है संग्रहण, जैसा कि आपके न्यूनतम डेमो में दिखाया गया है, लेकिन securefile
. के साथ काम नहीं कर सकता है भंडारण - कम से कम कुछ समय जो ORA-10635 फेंकता है:अमान्य खंड या टेबलस्पेस प्रकार।