Ab der Version 11g kann ein Lob in der Datenbank auch als „Secure File“ abgelegt werden. Das Standard Lob Handling wurde erweitert, ein Eintrag in ein Lob kann ähnlich einer Datei behandelt werden.
D.h. es können erweiterte Sicherheitseinstellungen getätigt und ein Komprimierung auf das gesamte Lob kann verwendet werden. Doppelte Daten können bei Bedarf auch nur einmal gespeichert werden.
Update ( 07.10.2017):
According to Oracle Database documentation and Oracle Database Licensing information you need license only for:
see http://ivan.kartik.sk/index.php?controller=post&action=view&id_post=54
Mit dem DB Parameter db_securefile, wird eingestellt, ob ein Lob per default klassisch oder als Secure File angelegt werden soll.
SHOW parameter db_securefile NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_securefile string PERMITTED
siehe ⇒ https://docs.oracle.com/database/121/REFRN/GUID-6F7C5E21-3929-4AB1-9C72-1BB9BDDB011F.htm#REFRN10290
Beispiel der Storage Klausel beim Anlegen eines Secure Files (falls Advanced Compression option vorliegt .-) ):
CREATE TABLE documents ( id NUMBER(11) , TEXT_FELD BLOB ) LOB (TEXT_FELD) STORE AS SECUREFILE (CHUNK 4096 CACHE DISABLE STORAGE IN ROW COMPRESS HIGH TABLESPACE GPI_DATA_FILES KEEP_DUPLICATES )
Inline Lob: (ENABLE STORAGE IN ROW)
External Lob: (DISABLE STORAGE IN ROW)
Chunk size
Default = Blockgröße ( auch falls kleiner angegeben) - bzw. dann auf mehrfaches der Blockgröße setzen.
Idealle Chunk Size über die Bestandsdaten ermitteln:
SELECT MIN(dbms_lob.getlength(my_text))"min" ,MAX(dbms_lob.getlength(my_text))"max" ,avg(dbms_lob.getlength(my_text))"avg" FROM GPI.MY_SEC_LOB_TEST_TAB /
Logging / Cache Einstellung
Inline Lob (ENABLE STORAGE IN ROW) Cache Parameter wird nicht angewandt
CACHE
NOCACHE
LOGGING
NOLOGGING
Deduplizierung
KEEP_DUPLICATES
DEDUPLICATE
Welche Lob Typen gibt es unter dem User?
SELECT l.table_name , l.column_name , l.tablespace_name , l.segment_name , substr(s.PARTITION_NAME,1,6)||'..' AS PARTITION_NAME , round(decode(nvl(s.bytes,0),0,0,(s.bytes/1024/1024)),2) AS mb , l.in_row , l.securefile FROM dba_lobs l , dba_segments s WHERE l.segment_name = s.segment_name(+) AND UPPER(l.owner)=UPPER('&&OWNER.') ORDER BY l.table_name /
Vollständiges Script siehe hier
Oracle:
Andere: