Informationen zu SYS_LOBxxx$$ segmenten
Ausgangssituation:
Ein LOB segment, hier als Beispiel: SYS_LOB0000099847C00045$$
belegt das Ende eines Daten files, wodurch der tablespace nicht
verkleinert werden kann.
In diesem Beitrag soll geklärt werden, zu welchem Objekt das LOB segment gehört und wie es bereinigt/gelöscht werden kann.
Ziel ist die Verkleinerung des tablespace.
Info:
SYS_LOB*identifier*$$ => der identifier wird system generated
Vorgehen:
Im ersten Schritt finden wir heraus, zu welchen Datenbank Objekt das segment gehört, dazu kann folgende Query benutzt werden:
set linesize 120
col owner for a15
col table_name for a30
col index_name for a30
col column_name for a25
SELECT owner, table_name, index_name, column_name FROM dba_lobs WHERE segment_name = 'SYS_LOB0000099847C00045$$';
OWNER
TABLE_NAME
INDEX_NAME
COLUMN_NAME
--------- --------------------- ---------------------------- -----------
SYSTEM SYS_EXPORT_FULL_14 SYS_IL0000099847C00045$$ XML_CLOB
Aha, es handelt sich also um eine Tabelle, die durch den export datapump erzeugt wurde.
Nach Informationen von my oracle support entstehen diese Tabellen, wenn
der export abgebrochen wird, oder absichtlich mit STOP_JOB unterbrochen
wurde.
In beiden Fällen kann, wenn kein export Job mehr läuft oder kurzzeitig unterbrochen ist, diese Tabelle(n) gelöscht weden.
Ein Verschieben oder die Reorganisation ist nicht nötig.
Query zur Abfrage auf laufende export Prozesse:
col OWNER_NAME for a15
col JOB_NAME for a22
col OPERATION for a10
col JOB_MODE for a15
col STATE for a13
col ATTACHED_SESSIONS for 999
SELECT owner_name, job_name, operation, job_mode, state,
attached_sessions as ATT_SESS FROM dba_datapump_jobs WHERE job_name NOT
LIKE 'BIN$%';
Hier im Beispiel laufen keine export datapump Jobs:
OWNER_NAME
JOB_NAME
OPERATION JOB_MODE
STATE ATT_SESS
----------- -------------------- ---------- --------- ------------- --------
SYSTEM
SYS_EXPORT_FULL_09 EXPORT
FULL NOT RUNNING 0
SYSTEM
SYS_EXPORT_FULL_10 EXPORT
FULL NOT RUNNING 0
SYSTEM
SYS_EXPORT_FULL_16 EXPORT
FULL NOT RUNNING 0
SYSTEM
SYS_EXPORT_FULL_13 EXPORT
FULL NOT RUNNING 0
SYSTEM
SYS_EXPORT_FULL_07 EXPORT
FULL NOT RUNNING 0
SYSTEM
SYS_EXPORT_FULL_01 EXPORT
FULL NOT RUNNING 0
SYSTEM
SYS_EXPORT_FULL_15 EXPORT
FULL NOT RUNNING 0
SYSTEM
SYS_EXPORT_FULL_12 EXPORT
FULL NOT RUNNING 0
SYSTEM
SYS_EXPORT_FULL_14 EXPORT
FULL NOT RUNNING 0
SYSTEM
SYS_EXPORT_FULL_02 EXPORT
FULL NOT RUNNING 0
SYSTEM
SYS_EXPORT_FULL_06 EXPORT
FULL NOT RUNNING 0
SYSTEM
SYS_EXPORT_FULL_04 EXPORT
FULL NOT RUNNING 0
SYSTEM
SYS_EXPORT_FULL_05 EXPORT
FULL NOT RUNNING 0
SYSTEM
SYS_EXPORT_FULL_11 EXPORT
FULL NOT RUNNING 0
SYSTEM
SYS_EXPORT_FULL_17 EXPORT
FULL NOT RUNNING 0
SYSTEM
SYS_EXPORT_FULL_08 EXPORT
FULL NOT RUNNING 0
SYSTEM
SYS_EXPORT_FULL_03 EXPORT
FULL NOT RUNNING 0
17 rows selected.
Zur Identifizierung der Master Tabelle kann folgende Query benutzt werden:
col status for a10
col OBJECT_TYPE for a12
col OWNER.OBJECT for a30
SELECT o.status, o.object_id, o.object_type, o.owner||'.'||object_name
"OWNER.OBJECT" FROM dba_objects o, dba_datapump_jobs j WHERE
o.owner=j.owner_name AND o.object_name=j.job_name AND j.job_name NOT
LIKE 'BIN$%' ORDER BY 4,2;
STATUS OBJECT_ID OBJECT_TYPE OWNER.OBJECT
---------- ---------- ------------ ------------------------------
VALID 84117
TABLE
SYSTEM.SYS_EXPORT_FULL_01
VALID 87704
TABLE
SYSTEM.SYS_EXPORT_FULL_02
VALID 88243
TABLE
SYSTEM.SYS_EXPORT_FULL_03
VALID 90168
TABLE
SYSTEM.SYS_EXPORT_FULL_04
VALID 90625
TABLE
SYSTEM.SYS_EXPORT_FULL_05
VALID 91342
TABLE
SYSTEM.SYS_EXPORT_FULL_06
VALID 91803
TABLE
SYSTEM.SYS_EXPORT_FULL_07
VALID 93290
TABLE
SYSTEM.SYS_EXPORT_FULL_08
VALID 94643
TABLE
SYSTEM.SYS_EXPORT_FULL_09
VALID 95481
TABLE
SYSTEM.SYS_EXPORT_FULL_10
VALID 96641
TABLE
SYSTEM.SYS_EXPORT_FULL_11
VALID 97021
TABLE
SYSTEM.SYS_EXPORT_FULL_12
VALID 99157
TABLE
SYSTEM.SYS_EXPORT_FULL_13
VALID 99847
TABLE
SYSTEM.SYS_EXPORT_FULL_14
VALID 100989
TABLE
SYSTEM.SYS_EXPORT_FULL_15
VALID 102159
TABLE
SYSTEM.SYS_EXPORT_FULL_16
VALID 115807
TABLE
SYSTEM.SYS_EXPORT_FULL_17
17 rows selected.
Diese Master Tabellen können in der Datenbank gelöscht werden. Wer
wissen möchte, zu welchem Zeitpunkt diese Tabellen erstellt wurden,
kann folgende Query ausführen:
col OWNER for a15
col OBJECT_NAME for a30
select OWNER, OBJECT_NAME, CREATED from dba_objects where OBJECT_NAME like 'SYS_EXPORT_FULL_%' order by 3;
OWNER
OBJECT_NAME
CREATED
--------------- ------------------------------ ---------------
SYSTEM
SYS_EXPORT_FULL_01
30-NOV-11
SYSTEM
SYS_EXPORT_FULL_02
22-DEC-11
SYSTEM
SYS_EXPORT_FULL_03
25-DEC-11
SYSTEM
SYS_EXPORT_FULL_04
06-JAN-12
SYSTEM
SYS_EXPORT_FULL_05
09-JAN-12
SYSTEM
SYS_EXPORT_FULL_06
13-JAN-12
SYSTEM
SYS_EXPORT_FULL_07
16-JAN-12
SYSTEM
SYS_EXPORT_FULL_08
25-JAN-12
SYSTEM
SYS_EXPORT_FULL_09
02-FEB-12
SYSTEM
SYS_EXPORT_FULL_10
07-FEB-12
SYSTEM
SYS_EXPORT_FULL_11
14-FEB-12
SYSTEM
SYS_EXPORT_FULL_12
16-FEB-12
SYSTEM
SYS_EXPORT_FULL_13
29-FEB-12
SYSTEM
SYS_EXPORT_FULL_14
04-MAR-12
SYSTEM
SYS_EXPORT_FULL_15
11-MAR-12
SYSTEM
SYS_EXPORT_FULL_16
18-MAR-12
SYSTEM
SYS_EXPORT_FULL_17
13-JUN-12
17 rows selected.
Die Master Tabellen werden nun mit folgenden Statements gelöscht:
DROP TABLE SYSTEM.SYS_EXPORT_FULL_01;
DROP TABLE SYSTEM.SYS_EXPORT_FULL_02;
DROP TABLE SYSTEM.SYS_EXPORT_FULL_03;
DROP TABLE SYSTEM.SYS_EXPORT_FULL_04;
DROP TABLE SYSTEM.SYS_EXPORT_FULL_05;
DROP TABLE SYSTEM.SYS_EXPORT_FULL_06;
DROP TABLE SYSTEM.SYS_EXPORT_FULL_07;
DROP TABLE SYSTEM.SYS_EXPORT_FULL_08;
DROP TABLE SYSTEM.SYS_EXPORT_FULL_09;
DROP TABLE SYSTEM.SYS_EXPORT_FULL_10;
DROP TABLE SYSTEM.SYS_EXPORT_FULL_11;
DROP TABLE SYSTEM.SYS_EXPORT_FULL_12;
DROP TABLE SYSTEM.SYS_EXPORT_FULL_13;
DROP TABLE SYSTEM.SYS_EXPORT_FULL_14;
DROP TABLE SYSTEM.SYS_EXPORT_FULL_15;
DROP TABLE SYSTEM.SYS_EXPORT_FULL_16;
DROP TABLE SYSTEM.SYS_EXPORT_FULL_17;
In Datenbanken, die recycle bin Funktionalität verwenden, können die Sicherheitskopien noch gelöscht werden:
purge dba_recyclebin;
zurück zur Übersicht: Oracle Database Infos