Welche Oracle Datenbank Features nutzen Sie?

In einem anderen Blogeintrag ging es darum, wie man die Nutzung von Optionen und Packs – also der lizenzpflichtigen Add-ons zur Oracle Datenbank Enterprise Edition – aufdecken kann.

Darüber hinaus, stellt sich u.a. bei einem Downgrade der Enterprise Edition (EE) auf die Standard Edition (SE) die Frage, ob Funktionalität verwendet wird, die nur zur EE gehört.  Oracle LMS und divese Oracle Partner bieten Dienstleistungen an, um die Nutzung von Features zu auditieren und Ihnen Lizenz-Compliance zu bescheinigen. Ein solcher Service ist sinnvoll, denn die selbstständige Untersuchung ähnelt Detektivarbeit und hat keinen Anspruch auf Vollständigkeit und Verbindlichkeit. Warum, das werden wir hier beleuchten.

Der Startpunkt einer solchen Untersuchung ist die Data Dictionary View DBA_FEATURE_USAGE_STATISTICS. Sie gibt Auskunft über einen Teil der verwendeten Funktionalität.

sql> SELECT name, detected_usages, version, TO_CHAR(last_usage_date, 'dd-mm-yyyy hh12:mi:ss'), TO_CHAR(last_sample_date,'dd-mm-yyyy hh12:mi:ss') FROM dba_feature_usage_statistics WHERE detected_usages > 0  ORDER BY name;

Die Ausgabe ist eine Aufzählung von Funktionen, wie in der folgenden Tabelle:

NAME LAST_USAGE_DATE
Audit Options 23-04-2012 01:06:09
Automatic Maintenance – Optimizer Statistics Gathering 23-04-2012 01:06:09
Automatic Maintenance – Space Advisor 23-04-2012 01:06:09
Automatic SGA Tuning 23-04-2012 01:06:09
Automatic SQL Execution Memory 23-04-2012 01:06:09
Automatic Segment Space Management (system) 23-04-2012 01:06:09
Automatic Undo Management 23-04-2012 01:06:09
Character Set 23-04-2012 01:06:09
Deferred Segment Creation 23-04-2012 01:06:09
HeapCompression 23-04-2012 01:06:09
Locally Managed Tablespaces (system) 23-04-2012 01:06:09
Locally Managed Tablespaces (user) 23-04-2012 01:06:09
Oracle Java Virtual Machine (system) 23-04-2012 01:06:09
Oracle Utility Datapump (Import) 23-04-2012 01:06:09
Partitioning (system) 23-04-2012 01:06:09
Recovery Area 23-04-2012 01:06:09
SecureFiles (system) 23-04-2012 01:06:09
SecureFiles (user) 23-04-2012 01:06:09
Server Parameter File 23-04-2012 01:06:09
Virtual Private Database (VPD) 23-04-2012 01:06:09

Man sollte bei der Interpretation der Ausgabe Folgendes beachten:

  1.  Das Ergebnis ist potentiell veraltet. DBA_FEATURE_USAGE_STATISTICS wird einmal alle 7 Tage aktualisiert. Der dazugehörige Job wird von internen Datenbankprozessen angestoßen und kann nicht bei Bedarf (ohne weiteres) gestartet werden. Die Spalte last_sample_date zeigt, wann die letzte Statistikensammlung durchgeführt wurde, somit auch wie alt die Ergebnisse sind.
  2. Das Ergebnis ist nicht vollständig. Zur Abgrenzung zwischen den Editionen sollte man die Feature-Matrix aus der Oracle 11gR2 Dokumentation und dem Oracle Database 11gR2  Licensing Information Guide heranziehen, siehe dazu auch Blogeintrag. DBA_FEATURE_USAGE_STATISTICS berücksichtigt um die 150 Features. Das sind nicht alle EE-Features aus der Feature-Matrix. Ein einfaches Beispiel: Flashback Table wird von DBA_FEATURE_USAGE_STATISTICS nicht berücksichtigt.
  3. Das Ergebnis ist nicht immer relevant. DBA_FEATURE_USAGE_STATISTICS differenziert nicht immer, ob ein Feature von Datenbanknutzern oder intern, von Oracle, verwendet wird. z.B. Virtual Private Database ist in allen Datenbankeditionen aufgelistet, auch wenn es rein intern, für die Implementierung der XML Funktionalität in der Datenbank verwendet wird. Features, die von Standard Oracle Usern verwendet werden (z.B. XDB) fallen nicht unter der Lizenzpflicht. Eine solche Nutzung ist bei einigen Funktionen in Klammern angegeben (system). Wenn keine Kennzeichnung vorhanden und sollten Zweifel an der Nutzung einer Funktionalität bestehen,  sind weitere Untersuchungen notwendig. z.B. bei Virtual Private Database sollte man sich anzeigen lassen, welcher User die Policies angelegt hat und ob es ein Standard Oracle User ist oder nicht.
  4. Die Zuordnung eines Features aus DBA_FEATURE_USAGE_STATISTICS zu einer Edition ist nicht immer einfach. Die Feature-Namen in DBA_FEATURE_USAGE_STATISTICS und im Oracle Whitepaper sind leider nicht identisch.

Fazit: DBA_FEATURE_USAGE_STATISTICS ist ein hilfreiches Werkzeug bei der Ermittlung der eingesetzten Datenbankfeatures. Aus den o.g. Gründen sollte die Auskunft aus  DBA_FEATURE_USAGE_STATISTICS nicht als verbindlich angesehen werden. Weitere Untersuchungen und ergänzende Abfragen sind erforderlich.

Advertisements

Technische Abgrenzung zwischen der Oracle Datenbank Standard Edition und Enterprise Edition

Eine Frage, die mir immer wieder begegnet, ist ob sich  Oracles Datenbankeditionen Standard (SE) und Enterprise (EE) in der Basisfunktionalität, also abgesehen von den Enterprise Edition Erweiterungen (Management Packs und Datenbankoptionen), unterscheiden. Oder ob die Unterscheidung rein formell ist und der Lizenzierung dient, sprich die Funktionalität ist in beiden Editionen vorhanden. Dieser Frage soll in diesem Eintrag nachgegangen werden.

Ein Blick in den Database Installation Guide zeigt, dass man für eine Enterprise Edition Installation knapp 2% mehr Speicherplatz auf der Festplatte benötigt. Nicht nur die Oracle Homes sind unterschiedlich groß: das Data Dictionary einer Enterprise Edition Datenbank enthält Datenbankobjekte, die in der Standard Edition nicht vorhanden sind. Aus diesem Grund ist empfohlen, bei einem Downgrade von EE auf SE einen Export/Import vorzunehmen. Die SYS-Schemaobjekte werden nicht exportiert; somit wird man die EE-spezifischen Data Dictionary Objekte los (My Oracle Support > Support Note ID 139642.1). Die SE-Funktionalität hingegen ist in der EE gänzlich enthalten; deswegen ist der Konvertierungsprozess einer SE zu einer EE recht einfach (My Oracle Support > Support Note ID 117048.1).

Man kann sagen, dass die installierte Software für SE und EE fast identisch ist: es werden standardmäßig alle Features und Komponenten der EE installiert. So lässt sich prüfen, welche Komponenten installiert wurden:

sql> select comp_id, comp_name, status, schema from dba_registry order by comp_name;

Der DB-User in der Spalte schema ist der Eigentümer der  jeweiligen Datenbankkomponente und deren Objekte, z.B. MDSYS für Oracle Spatial. Die Abfrage liefert identische Ergebnisse in der SE und in der EE (Version 11gR2). Man sieht, dass EE  Optionen wie Spatial auch in der SE installiert werden.

Die EE-Funktionalität  steht in der SE jedoch nur bedingt zur Verfügung. Die kostenplichtigen Optionen der EE (wie Advanced Compression oder Partitioning) sind in der SE standardmäßig deaktiviert. So wird der Versuch eine Tabelle mit dem Zusatz compress for oltp anzulegen oder zu partitionieren scheitern, mit der Fehlermeldung ORA-00439: feature not enabled. Leider sind nicht alle EE-Funktionen gesperrt. Man kann in SE 11gR2 problemlos über flashback table to before drop gelöschte Tabellen aus dem Recyclebin wiederherstellen, obwohl dieses Feature der EE vorbehalten ist. Flashback Database ist wiederum gesperrt.

Es bleibt Aufgabe des Nutzers sicherzustellen, dass nur lizenzierte Features im Einsatz sind. Welche Features in welcher Datenbankedition erlaubt oder Teil der lizenzpflichtigen Optionen sind, beschreibt der Oracle Database 11gR2  Licensing Information Guide. Die Feature Matrix findet man auch auf My Oracle Support in der Support Note ID 1084132.1. Diese Dokumente sollten vor der Nutzung  einer Datenbankfunktionalität immer herangezogen werden.

Kann man Optionen der Oracle Datenbank Enterprise Edition deaktivieren?

Oracle Datenbankoptionen (wie Oracle Partitioning, Advanced Compression oder Real Application Testing) sind getrennt zu lizenzierende Produkte. Sie werden zusammen mit dem Oracle Datenbankserver installiert. In älteren Versionen der Oracle Datenbank konnte man einige Optionen von der Installation ausschließen. Seit Version 11gR2 werden jedoch alle Komponenten mit installiert (dies gilt auch für die Standard Edition).

Eine Option wird allein durch die Installation nicht zwingend lizenzpflichtig. Sie ist zu lizenzieren, wenn ihre Nutzung beabsichtigt ist.  In einem anderen Blog-Eintrag ist beschrieben worden, wie man feststellen kann, ob eine kostenpflichtige Funktionalität verwendet wurde. Die von Oracle Support angebotenen Skripte verfolgen die Nutzung der Produkte und nicht ihr Vorhandensein.

Um eine Nutzung kategorisch auszuschließen ist es möglich – nach der Installation der Oracle Datenbank 11gR2 – folgende 6 Optionen zu deaktivieren (siehe My Oracle Support > Support Note ID 1069015.1)

– Oracle Partitioning
– Oracle OLAP
– Oracle Label Security
– Oracle Data Mining
– Oracle Database Vault
– Oracle Real Application Testing

Wohlgemerkt man kann nicht alle Datenbankoptionen deaktivieren, die sich auf der Oracle Preisliste wiederfinden!

Unter Linux/UNIX kann man sich den Status der o.g. Komponenten (aktiv/nicht aktiv) mit folgendem Befehl anzeigen lassen:

[oracle@dbhost ~]$ ar -tv $ORACLE_HOME/rdbms/lib/libknlopt.a

Die Ausgabe ist nicht selbsterklärend. Man kann anhand der Module aus der Ausgabe und der Support Note ID 1069015.1 feststellen, ob eine Option aktiv ist oder nicht. Bei der Oracle Datenbank Standard Edition bekommt man – wie erwartet- folgendes Ergebnis:

...
rw-rw-r-- 94110/42424  22272 Sep 18 23:43 2011 xsnoolap.o --> OLAP Off
rw-rw-r-- 94110/42424   3968 Sep 18 23:45 2011 kzlnlbac.o --> Label Security Off
rw-rw-r-- 94110/42424   4112 Sep 18 23:46 2011 kzvndv.o --> Database Vault Off
...
rw-rw-r-- 94110/42424   3416 Sep 18 23:54 2011 kecnr.o --> Real Application Testing Off
rw-rw-r-- 94110/42424   3416 Sep 18 23:42 2011 dmndm.o --> Data Mining Off
rw-rw-r-- 94110/42424   3424 Sep 18 23:35 2011 ksnkkpo.o --> Partitioning Off

Nach der Installation der Oracle Datenbank Enterprise Edition ist die Ausgabe wie folgt:

...
rw-rw-r-- 94110/42424   3936 Sep  5 20:24 2010 kzlnlbac.o --> Label Security Off
rw-rw-r-- 94110/42424   4080 Sep  5 20:13 2010 kzvndv.o --> Database Vault Off
...
rw-rw-r-- 500/500   3424 Sep  5 20:14 2010 kecwr.o --> Real Application Testing On
rw-r--r-- 500/500   3432 Sep  5 20:08 2010 kkpoban.o  --> Partitioning On
rw-r--r-- 500/500   3424 Sep  5 20:20 2010 dmwdm.o --> Data Mining On
rw-r--r-- 500/500   4520 Sep  5 20:21 2010 xsyeolap.o --> OLAP On

Das Aktivieren/Deaktivieren einer Option kann sehr einfach mit dem Skript chopt durchgeführt werden (siehe My Oracle Support > Support Note ID 942406.1).  So deaktiviert man z.B. Partitioning:

[oracle@dbhost ~]$ $ORACLE_HOME/bin/chopt disable partitioning

chopt lässt es (leider) zu, auch in der Standard Edition Komponenten zu aktivieren. Ein Test bei Standard Edition 11.2.0.3 hat ergeben, dass trotz erfolgreicher Aktivierung von Oracle Partitioning,  das Anlegen einer partitinionierten Tabelle fehlschlägt. Der Fehler lautet:

ORA-00439: feature not enabled: Partitioning

Die Nutzung von Datenbankoptionen mit der Standard Edition ist ohnehin lizenztechnisch nicht erlaubt.

Welche Oracle Datenbankedition ist bei Ihnen im Einsatz?

Bei der Installation der Oracle Datenbanksoftware 11g gibt man die Edition (Enterprise Edition, Standard Edition oder Standard Edition One) an. Nachträgtlich hat man mehrere Möglichkeiten herauszufinden, welche Edition im Einsatz ist.

Eine Möglichkeit ist in die Global Inventory Logs  nachzuschauen (siehe My Oracle Support > Support Note ID 1341744.1). Den Pfad zur Global Inventory kann man je nach Plattform folgendermaßen finden:
– auf Linux und AIX in der Datei /etc/oraInst.loc (inventory_loc=<Pfad>)
– auf anderen UNIX Plattformen in der Datei /var/opt/oracle/oraInst.loc
– auf Windows als Wert des Registry Keys: HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\inst_loc
Die Installationslogs befinden sich im Unterverzeichnis logs der Global Inventory. Sie heißen auf allen Plattformen installActions<timestamp>.log. Meistens wird es mehrere Logdateien dieser Art geben; jede bezieht sich auf eine Installation oder ein Upgrade der Oracle Datenbanksoftware (eines Oracle Homes). Der Installationstyp ist im Abschnitt Global settings unter Database edition dokumentiert, z.B.:

--------------------------------------------------------------------------------
Global settings
--------------------------------------------------------------------------------
...
- Database edition : Standard Edition One (Install database software only)

Ein schneller Weg um herauszufinden ob man eine Enterprise Edition im Einsatz hat, ist sich einfach über SQL*Plus mit der Datenbank zu verbinden. Die SQL*Plus Ausgabe enthält im Regelfall einen Banner mit dem expliziten Hinweis auf die Enterprise Edition:

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

Bei Standard Edition und Standard Edition One sieht der SQL*Plus Banner gleich aus. Man kann leider auf diesem Weg zwischen den zwei Editionen nicht unterschieden:

Connected to:
Oracle Database 11g Release 11.2.0.3.0 - Production

Man kann sich die Information aus dem SQL*Plus Banner auch über folgende SQL-Abfrage ausgeben lassen:

select * from v$version;

Weitere Stellen, wo die Datenbankedition dokumentiert ist, listet die Die Support Note ID 735550.1 auf.