

I forbindelse med en idriftsættelse - var en af de nye ting bl.a. at gemme nogen data som xml i databasen - mere specifikt i et såkaldt LOB segment (det var biletter indkøbt via internet). Man bliver dog hurtigt træt af LOB segmenter - sagen er at man ikke rigtigt kan måle f.eks maxextents - 10, på samme måde som ved tabeller, og det gør bl.a. at man skal finde andre metoder at være proaktiv på mht. overvågning. Oprettelsen af en tabel med en LOB gøres som følger;
CREATE TABLE LOBTEST (id number(6), lobxml NCLOB) TABLESPACE ..... LOB (lobxml) STORE AS (...)
Vær også opmærksom på følgende ved brug af LOB segmenter; When you create a table in logging mode and the table has LOBs, the LOB columns will take the logging mode of the TABLESPACE. That is right, not the table but the TABLESPACE. So if you have a tablespace that is NOLOGGING and you create the LOB segments of a table in the NOLOGGING tablespace, the LOBs will be created NOLOGGING.
Sagen med ovenstående tabel var den voksede som jeg ved ikke hvad - det skyldes dels man havde glemt at sige det var UTF16 og ikke UTF8 i forbindelse med de initielle beregninger - samt at den daglige vækst var meget større end antaget. En chef sagde engang; at beregninger hvor input kommer fra brugere ganges med 10, og fra udviklere med 5 - og det holder vist meget godt stik (jeg havde dog kun ganget med 2, og det gør man kun overfor en anden DBA).
Tilbage til vores initielle antagelser, kunne jeg huske noget med at der tidligere var problemmer med at frigive LOB segment plads - hvilket fik mig til lige at besøge Metalink, hvor jeg fandt denne artikel - gældende for version 9, 10G som vi kører skulle ikke have disse problemmer;
Free Space in LOB Tablespace Not Reused When Using Auto Segment Space Management
This issue, reported as Bug 2944866, only affects LOB segments that have been created in locally managed tablespaces that make use of Auto Segment Space Management (ASSM).
The problem described here affects customers making use of LOB segments in tablespaces with Auto Segment Space Management (ASSM).
To verify if you have tablespaces that could be affected,execute the following select statement as a DBA user (system / sys ):
SQL> select tablespace_name,segment_space_management,decode(segment_space_management,'AUTO','AFFECTED','NOT AFFECTED') from dba_tablespaces
where extent_management='LOCAL' and exists (select 1 from dba_segments where segment_type in ('LOBINDEX','LOBSEGMENT') and dba_segments.tablespace_name = dba_tablespaces.tablespace_name);
Det videre interessante er naturligvis dels word around til ovenstående, men også hvis man som i mit tilfælde - senere øsnker at flytte LOB segmentet over i et isoleret tablespace vha. MOVE kommandoen;
- Create a tablespace with SEGMENT SPACE MANAGEMENT MANUAL and move/recreate the lobsegment in the new tablespace.
- Create or use a Dictionary-managed tablespace for the LOB segments.
NOTE: LOB segments can be moved to another tablespace using the following SQL syntax:
ALTER TABLE <name> MOVE LOB(<lob_name>) STORE AS (TABLESPACE <new_tablespace_name>
STORAGE (initial <new_initial_size> next <new_next_size>))