Heat Map (ADO mittels ILM)

26.
August
2013
Veröffentlicht von: Marco Patzwahl

Die Heat Map zeichnet auf Blockebene den Datenzugriff und die Veränderungshäufigkeit auf.

Mit diesem Wissen kann man Daten, die selten verwendet oder verändert werden, an Ort und Stelle komprimieren und auf einen anderen Tablespace (auf ein langsameres und billigeres Medium) verschieben.

Die Heat Map zeichnet auf Blockebene den Datenzugriff und die Veränderungshäufigkeit auf.

Mit diesem Wissen kann man Daten, die selten verwendet oder verändert werden, an Ort und Stelle komprimieren und auf einen anderen Tablespace (auf ein langsameres und billigeres Medium) verschieben.

Für die Funktionen der Heat Map, der ADO (Advanced Data Optimization) und ILM (Information Lifecycle Management) benötigen Sie die Enterprise Edition + Advanced Compression Option.

All diejenigen unter Ihnen, die das lizenziert haben, dürfen hier weiterlesen :-)

Sie können die Heat Map ein- oder ausschalten:

ALTER SYSTEM SET heat_map = ON|OFF;

Wenn Sie Heat Maps nicht eingeschaltet haben und versuchen darauf zuzugreifen, erhalten Sie:

ORA-38342: Wärmebild nicht aktiviert ?

Im Englischen klingt das etws besser:

ORA-38342: heat map not enabled

Die Heat Map kann über folgende V$*, ALL*, DBA* und USER* Views angezeigt werden.

Heat Map für die Top 1000 Objekte:

SELECT * FROM dba_heatmap_top_objects;

Heat Map für die Top 100 Tablespaces:

SELECT * FROM dba_heatmap_top_tablespaces;

Zeitpunkt des letzten Segmentzugriffs:

USER_/ ALL_/ DBA_HEAT_MAP_SEGMENT

Segmentzugriffsinformationen für (alle) Segmente:

USER_/ ALL_/ DBA_HEAT_MAP_SEG_HISTOGRAM

Ausgabe des Lese- bzw. Schreibzugriffs auf Objekte sowie des Zeitstempels des Auftretens:

SELECT object_name, track_time, segment_write, 
       segment_read, full_scan, lookup_scan 
  FROM v$heat_map_segment;

Erklärung der Spalten:

  • Segment Write: Segment wurde verändert (INS/UPD/DEL)
  • Segment Read: Segment wurde gelesen
  • Full Scan: Objekt wurde durch Full Scan gelesen
  • Lookup Scan: Objekt wurde über Index gelesen

ADO kümmert sich um ein automatisches Komprimieren oder Verschieben von "Alt" Daten (gesteuert über Policies), die wenig genutzt wurden.

Mehrere Policies können additiv auf das Objekt gesetzt werden. Policynamen werden automatisch vergeben (p1, p2, ...pn)

Voraussetzung ist aktiviertes Heat Map und keine CDB (Container DB).

Mögliche Komprimierungstechniken (nur pro Segment einstellbar):

  • COMPRESS ADVANCED
  • COMPRESS FOR LOW|HIGH QUERY
  • COMPRESS FOR ARCHIVE LOW|HIGH

ILM Syntax:

ALTER TABLE [<owner>.]<table_name> ILM { ADD POLICY ilm_policy_clause |
{ DELETE | ENABLE | DISABLE } POLICY ilm_policy_name |
DELETE_ALL |
ENABLE_ALL |
DISABLE_ALL }
ilm_policy_clause:
{ table_compression | tiering_clause }
{ SEGMENT | GROUP | ROW }
{{ AFTER number {
{ DAY | DAYS } |
{ MONTH | MONTHS } |
{ YEAR | YEARS } }
OF {
{ LOW ACCESS } |
{ NO ACCESS } |
{ NO MODIFICATION } |
CREATION } } |
ON function_name }
tiering_clause:
TIER TO tablespace [ READ ONLY ]

Hinweis: Sie können die ILM Klausel auch bei einem CREATE TABLE verwenden.

Policies können gesetzt werden auf:

  • Zeilenebene (ROW) => Wenn alle Zeilen des Blocks nicht angefasst wurden
  • Segmentebene (SEGMENT) => Komplette Tabelle
  • Gruppe (GROUP) => Leider steht dazu (derzeit) nichts in der Dokumentation

Zeitspannen für Aktivierung der Policy:

  • Tage
  • Monate
  • Jahre

Zugriffsformen für Aktivierung der Policy:

  • LOW ACCESS (Wenig Zugriffe auf das Objekt)
  • NO ACCESS (Kein Zugriff auf Objekt)
  • NO MODIFICATION (Keine schreibender Zugriff)
  • CREATION (Erstellungszeitpunkt des Objekts)

Hinweis: Die Policies werden im Wartungsfenster geprüft und ggf. ausgeführt.

Sie können wenig benutzte Partitionen einer part. Tabelle  auf einen anderen Tablespace verschieben, wenn der lokale Tablespace beginnt voll zu laufen:

ALTER TABLE emp_part ILM ADD POLICY TIER TO TABLESPACE tbs_on_sata_hdd;

Weitere Beispiele zum Einsatz von ILM:

Partition DEPT_2012 komprimieren, wenn 6 Monate kein (Lese-, Schreib-) Zugriff darauf erfolgte:

ALTER TABLE scott.emp_part
 MODIFY PARTITION dept_2012 ILM ADD 
 POLICY COMPRESS FOR ARCHIVE HIGH SEGMENT
 AFTER 6 MONTHS OF NO ACCESS;

Tabelle EMP blockweise komprimieren, wenn auf Zeilen 30 Tage nicht schreibend zugegriffen wurde:

ALTER TABLE scott.emp ILM ADD 
 POLICY ROW STORE COMPRESS ADVANCED ROW
 AFTER 30 DAYS OF NO MODIFICATION;

Partition dept_2014 der Tabelle deptp komprimieren, wenn auf Zeilen 12 Monate nicht (lesen/schreibend) zugegriffen wurde:

ALTER TABLE scott.deptp MODIFY PARTITION 
 dept_2014 ILM ADD POLICY COMPRESS FOR 
 ARCHIVE HIGH SEGMENT 
 AFTER 12 MONTHS OF NO ACCESS;

Policy, um die Partition dept_10 der Tabelle emp_part auf günstigeren Tablespace zu verschieben:

ALTER TABLE scott.emp_part MODIFY PARTITION dept_10 ILM ADD POLICY 
 TIER TO tablespace_auf_sata_platte;

Heat Maps sind praktisch, wenn Sie ihr teures SAN nur für die Daten verwenden möchten, die auch wirklich häufig gelesen/geschrieben werden.

Weitere 299 Neuerungen erfahren Sie in unseren Opens internal link in current windowOracle 12c Kurs (ab September 2013 bei uns in München-Unterhaching, oder als Inhouse Kurs bei Ihnen ab sofort)

SQL Oracle Datenbank 12c

Jede Menge Know-how für Sie!

In unserer Know-How Datenbank finden Sie mehr als 300 ausführliche Beiträge zu den Oracle-Themen wie DBA, SQL, PL/SQL, APEX und vielem mehr.
Hier erhalten Sie Antworten auf Ihre Fragen.