एक परिदृश्य जहां आप user_objects
. में LOB देख सकते हैं लेकिन user_lobs
में शामिल हों यदि तालिका पहले ही गिरा दी गई है, तो कुछ भी नहीं मिलता है, लेकिन रीसायकल बिन में है
।
create table t42 (my_clob clob);
table T42 created.
जैसा अपेक्षित था, जस्टिन की क्वेरी आपको कॉलम दिखाती है:
select l.table_name,
l.column_name,
l.segment_name lob_name
from user_lobs l
join user_objects o
on( o.object_name = l.segment_name );
TABLE_NAME COLUMN_NAME LOB_NAME
----------- ----------- ------------------------------
T42 MY_CLOB SYS_LOB0000133310C00001$$
drop table t42;
table T42 dropped.
अब जस्टिन की क्वेरी में कुछ नहीं मिलता:
select l.table_name,
l.column_name,
l.segment_name lob_name
from user_lobs l
join user_objects o
on( o.object_name = l.segment_name );
no rows selected
लेकिन यह अभी भी user_objects
में है :
select object_name, object_type, status from user_objects
where object_type like 'LOB%';
OBJECT_NAME OBJECT_TYPE STATUS
------------------------------ ------------------- -------
SYS_LOB0000133328C00001$$ LOB VALID
और आप इसे रीसायकल बिन में देख सकते हैं:
select * from user_recyclebin;
OBJECT_NAME ORIGINAL_NAME OPERATION TYPE TS_NAME CREATETIME DROPTIME DROPSCN PARTITION_NAME CAN_UNDROP CAN_PURGE RELATED BASE_OBJECT PURGE_OBJECT SPACE
------------------------------ -------------------------------- --------- ------------------------- ------------------------------ ------------------- ------------------- ---------- -------------------------------- ---------- --------- ---------- ----------- ------------ ----------
SYS_IL0000133310C00001$$ SYS_IL0000133310C00001$$ DROP LOB INDEX USERS 2013-08-22:08:33:21 2013-08-22:08:33:21 1.0E+13 NO NO 133310 133310 133310 0
SYS_LOB0000133310C00001$$ SYS_LOB0000133310C00001$$ DROP LOB USERS 2013-08-22:08:33:21 2013-08-22:08:33:21 1.0E+13 NO NO 133310 133310 133310 0
BIN$5IUNXtWkUXLgQwEAAH9TlQ==$0 T42 DROP TABLE USERS 2013-08-22:08:33:21 2013-08-22:08:33:21 1.0E+13 YES YES 133310 133310 133310 0
LOB अभी भी डिस्क पर मौजूद है और स्टोरेज का उपयोग कर रहा है, जो मुझे लगता है कि आप इसके बारे में चिंतित हैं। तो अपने प्रश्न का उत्तर देने के लिए, LOB को वास्तव में छोड़ने और इसके संग्रहण को जारी करने के लिए आपको पूरी तालिका को शुद्ध करने की आवश्यकता है:
purge table t42;
table purged.
select object_name, object_type, status from user_objects
where object_type like 'LOB%';
no rows selected
दिलचस्प बात यह है कि यदि आप LOB खंड का नाम रखते हैं तो आपको यह प्रभाव दिखाई नहीं देता:
create table t42 (my_clob clob)
lob (my_clob) store as my_clob_segment;
उपरोक्त चरणों को दोहराते हुए, प्रविष्टि user_objects
. से चली गई है drop
. के बाद ।
drop table t42;
table T42 dropped.
select object_name, object_type, status from user_objects
where object_type like 'LOB%';
no rows selected
select * from user_recyclebin;
OBJECT_NAME ORIGINAL_NAME OPERATION TYPE TS_NAME CREATETIME DROPTIME DROPSCN PARTITION_NAME CAN_UNDROP CAN_PURGE RELATED BASE_OBJECT PURGE_OBJECT SPACE
------------------------------ -------------------------------- --------- ------------------------- ------------------------------ ------------------- ------------------- ---------- -------------------------------- ---------- --------- ---------- ----------- ------------ ----------
BIN$5IUNXtWnUXLgQwEAAH9TlQ==$0 MY_CLOB_SEGMENT DROP LOB USERS 2013-08-22:08:36:41 2013-08-22:08:36:41 1.0E+13 NO NO 133316 133316 133316 0
BIN$5IUNXtWoUXLgQwEAAH9TlQ==$0 T42 DROP TABLE USERS 2013-08-22:08:36:41 2013-08-22:08:36:41 1.0E+13 YES YES 133316 133316 133316 0
SYS_IL0000133316C00001$$ SYS_IL0000133316C00001$$ DROP LOB INDEX USERS 2013-08-22:08:36:41 2013-08-22:08:36:41 1.0E+13 NO NO 133316 133316 133316 0
भंडारण अभी भी निश्चित रूप से उपयोग किया जा रहा है और आपको इसे मुक्त करने के लिए अभी भी शुद्ध करने की आवश्यकता है, यह डेटा डिक्शनरी में थोड़ा अधिक सुसंगत दिखता है। तो यह एक (बहुत मामूली) बग की तरह दिखता है, शायद, अधिक से अधिक। यह समर्थन नोट 394442.1 में निर्दिष्ट व्यवहार से संबंधित हो सकता है।