Inhaltsverzeichnis

LOB und Oracle Secure Files

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


Globale DB Einstellungen prüfen

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

LOB Speicher Parameter

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
		                    ) 

Speicher Möglichkeiten

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

Überwachung mit

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

Quellen

Oracle:

Andere: