Wie in meinem vorherigen Blog-Beitrag „Lizenzverstößen richtig vorbeugen“ beschrieben, ist man als DBA gut beraten, die Verwendung der lizenzpflichtigen Features der Oracle Datenbanken regelmäßig zu prüfen, um Lizenzverstößen zeitnah auf die Spur zu kommen. Sehr schnell passiert es, dass die Anwender und Entwickler unwissentlich ein Feature nutzen, welches im Unternehmen nicht lizenziert ist. Derlei Möglichkeiten gibt es hier viele: Ein unerfahrener DBA generiert z.B. ein AWR Report, um einem Performanceproblem auf den Grund zu gehen und nutzt somit das Diagnostic Pack. Ein neuer Entwickler legt eine partitionierte Tabelle an und nutzt somit die Partitioning Option. Ein Anwender aus einer Fachabteilung exportiert seine Tabelle komprimiert, um Platz zu sparen und nutzt dabei die Advanced Compression Option. Usw.
Eine gute Möglichkeit Lizenzverstößen auf die Spur zu kommen, ist eine scriptbasierte, regelmäßige Prüfung der tatsächlichen Nutzung der lizenzpflichtigen Features. In welchem Intervall eine solche Lizenz-Usage-Prüfung durchgeführt wird, ist dabei unerheblich. Hauptsache der DBA kennt seine vorhandenen Lizenzen und wird über unrechtmäßige Nutzungen zeitnah informiert, damit er die Verwendung unterbinden oder erforderliche Lizenzen erwerben kann. Von großem Nutzen ist darüber hinaus, wenn eine scriptbasierte Prüfung nicht nur den Ist-Zustand berücksichtigt, sondern auch die vorhandenen Lizenzen.
SQL-Script
Ich möchte hier das SQL-Script check_database_license_violation.sql
vorstellen, welches man nutzen kann, um eine unrechtmäßige Verwendung von lizenzpflichtigen Features zu ermitteln. Es verifiziert nicht nur die Verwendung von Management Packs und Optionen, sondern prüft ebenfalls, ob die richtige Edition installiert ist und ob die Anzahl der CPU Sockel den Lizenzbestimmungen entspricht. Die Prüfung der Anzahl CPU Sockel ist dabei natürlich nur aussagekräftig, sofern die Datenbank auf physikalischer Hardware läuft und es sich nicht um eine virtuelle Maschine handelt. Das Script besteht aus 80 Einzelchecks und ist aus Wartbarkeitsgründen modular aufgebaut, sodass Änderungen oder Ergänzungen einfach umgesetzt werden können.
Konfiguration
Vor der Ausführung des SQL-Scripts, muss man im Header über im Script existierend Variablen Angaben zu den vorhandenen Lizenzen machen. Wenn man keine Konfiguration vornimmt, geht das Script davon aus, dass keine Optionen und Packs lizenziert sind und dass nur eine Lizenz der kleinsten Edition „Standard Edition One“ vorhanden ist. Gibt es jedoch Lizenzen für Management-Packs, Optionen oder für die Enterprise Edition, die für die zu prüfende Datenbank eingesetzt werden, so müssen diese im Script eingetragen werden. Dies passiert, indem man TRUE an der entsprechenden Stelle im Script-Header einträgt.
Konfigurations-Beispiel: Lizenzen für die Enterprise Edition Lizenz und RAC Option sind vorhanden und es sollen nur Lizenzverstöße angezeigt werden.
v_show_only_warnings boolean := TRUE; -- Angabe zu lizenzierter Oracle Edition --------------------------------------- v_oracle_edition_license varchar2(3) := 'EE'; -- Default = seo. Moeglichkeiten: seo, se2, se, ee -- Angabe zu lizenzierten EE OPTIONEN --------------------------------------- -- Real Application Clusters Lizenz v_rac_license boolean := TRUE;
Ausführung
Nach der Konfiguration wird das SQL-Script als SYSDBA User gegen die zu testende(n) Datenbank(en) ausgeführt.
sqlplus / as sysdba SQL> @check_database_license_violation.sql
Ergebnisbericht
Nach Ausführung des SQL-Scripts wird ein Ergebnisbericht als Textfile dlv_<instance_name>_<host_name>_<timestamp>.txt erzeugt und die Lizenzverstöße werden als WARNUNG markiert. Features, die nicht genutzt wurden oder für die Lizenzen vorhanden sind, werden mit OK markiert. Da ich zuvor im Script über den Wert der Variable v_show_only_warnings auf TRUE gesetzt habe, werden im u.a. Report nur die potenziellen Lizenzverstöße aufgelistet
Beispiel Report v_show_only_warnings = TRUE:
======================================================================================================================== DATABASE LICENSE VIOLATION REPORT ======================================================================================================================== Edition Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production Version 12.1.0.2.0 Instance orcl1 DB Name ORCL1 Timestamp 28.10.2016 10:49 ======================================================================================================================== EDITION / PACK / OPTION RESULT USAGE ======================================================================================================================== Diagnostic Pack: WARNUNG - Nutzung Diagnostic Pack durch Parameter aktiviert Diagnostic Pack: WARNUNG - Die EM Performance Seite wurde genutzt Tuning Pack: WARNUNG - Nutzung Tuning Pack durch Parameter aktiviert Tuning Pack: WARNUNG - Die EM SQL Monitoring and Tuning Seiten wurden genutzt Tuning Pack: WARNUNG - Automatic Maintenance - SQL Tuning Advisor wurde genutzt Tuning Pack: WARNUNG - Der Automatic SQL Tuning Advisor wurde genutzt Tuning Pack: WARNUNG - Der SQL Access Advisor wurde genutzt Tuning Pack: WARNUNG - Der SQL Tuning Advisor wurde genutzt Lifecyle Mangement Pack: WARNUNG - DDL Logging durch Parameter aktiviert Partitioning Option: WARNUNG - Partitioning wurde genutzt Advanced Compression Option: WARNUNG - Datapump Compression (Export) wurde genutzt Advanced Security Option: WARNUNG - Encrypted Tablespaces wurden genutzt ======================================================================================================================== Sollen alle Ergebnisse im Report angezeigt werden, wird die Variable v_show_only_warnings auf den Wert FALSE gesetzt (Default). Beispiel Report v_show_only_warnings = FALSE: ======================================================================================================================== DATABASE LICENSE VIOLATION REPORT ======================================================================================================================== Edition Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production Version 12.1.0.2.0 Instance orcl1 DB Name ORCL1 Timestamp 28.10.2016 10:49 ======================================================================================================================== EDITION / PACK / OPTION RESULT USAGE ======================================================================================================================== Enterprise Edition Lizenz: OK - Enterprise Edition installiert und laut Angabe lizenziert Edition CPU Socket Count: OK - Fuer die installierte Enterprise Edition gibt es keine CPU Beschraenkung Change Management Pack: OK - Das Change Management Pack wurde nie genutzt Configuration Management Pack: OK - Das EM Config Management Pack wurde nie genutzt Data Masking Pack: OK - Das Data Masking Pack wurde nie genutzt Diagnostic Pack: WARNUNG - Nutzung Diagnostic Pack durch Parameter aktiviert Diagnostic Pack: WARNUNG - Die EM Performance Seite wurde genutzt Diagnostic Pack: OK - Der Automatic Database Diagnostic Monitor wurde nie genutzt Diagnostic Pack: OK - AWR Baselines wurden nie genutzt Diagnostic Pack: OK - AWR Baseline Templates wurde nie genutzt Diagnostic Pack: OK - AWR (Automatic Workload Repository) wurde nie genutzt Diagnostic Pack: OK - AWR Reports wurden nie generiert Diagnostic Pack: OK - AWR Baseline Adaptive Thresholds wurden nie genutzt Diagnostic Pack: OK - AWR Baseline Static Computations wurden nie genutzt Tuning Pack: WARNUNG - Nutzung Tuning Pack durch Parameter aktiviert Tuning Pack: WARNUNG - Die EM SQL Monitoring and Tuning Seiten wurden genutzt Tuning Pack: WARNUNG - Automatic Maintenance - SQL Tuning Advisor wurde genutzt Tuning Pack: OK - Der Automatic SQL Tuning Advisor wurde nie genutzt Tuning Pack: OK - Das Real-Time SQL Monitoring wurde nie genutzt Tuning Pack: WARNUNG - Der SQL Access Advisor wurde genutzt Tuning Pack: OK - SQL Profile wurden nie genutzt Tuning Pack: WARNUNG - Der SQL Tuning Advisor wurde genutzt Tuning Pack: OK - SQL Tuning Sets wurden nie genutzt Lifecyle Mangement Pack: OK - Das EM Database Provisioning and Patch Automation Pack wurde nie genutzt Lifecyle Mangement Pack: OK - Das EM Standalone Provisioning and Patch Automation Pack wurde nie genutzt Lifecyle Mangement Pack: WARNUNG - DDL Logging durch Parameter aktiviert WLS Mangement Pack EE OK - Das EM AS Provisioning and Patch Automation Pack wurde nie genutzt Active Data Guard Option: OK - Active Data Guard - Real-Time Query on Physical Standby wurde nie genutzt Active Data Guard Option: OK - Global Data Services wurden nie genutzt Advanced Analytics Option: OK - Data Mining wurde nie genutzt Advanced Compression Option: OK - Datapump Compression (Import) wurde nie genutzt Advanced Compression Option: WARNUNG - Datapump Compression (Export) wurde genutzt Advanced Compression Option: OK - Backup HIGH Compression wurde nie genutzt Advanced Compression Option: OK - Backup LOW Compression wurde nie genutzt Advanced Compression Option: OK - Backup MEDIUM Compression wurde nie genutzt Advanced Compression Option: OK - Backup ZLIB Compression wurde nie genutzt Advanced Compression Option: OK - SecureFile Deduplication wurde nie genutzt Advanced Compression Option: OK - SecureFile Compression wurde nie genutzt Advanced Compression Option: OK - Advanced Index Compression wurde nie genutzt Advanced Compression Option: OK - Advanced Network Compression Service wurde nie genutzt Advanced Compression Option: OK - Information Lifecycle Management (ILM) wurde nie genutzt Advanced Compression Option: OK - Hybrid Columnar Compression wurde nie genutzt Advanced Compression Option: OK - Flashback Data Archive wurde nie genutzt Advanced Compression Option: OK - Heat Map (Automatic Data Optimization) wurde nie genutzt Advanced Compression Option: OK - Data Guard Network Compression wurde nie genutzt Advanced Security Option: OK - Data Redaction wurde nie genutzt Advanced Security Option: WARNUNG - Encrypted Tablespaces wurden genutzt Advanced Security Option: OK - SecureFile Encryption wurde nie genutzt Advanced Security Option: OK - Backup Encryption wurde nie genutzt Advanced Security Option: OK - Backup Encryption in Version 11g wurde nie genutzt Advanced Security Option: OK - Transparent Data Encryption wurde nie genutzt Advanced Security Option: OK - Datapump Encryption (Import) wurde nie genutzt Advanced Security Option: OK - Datapump Encryption (Export) wurde nie genutzt Database Gateway Option: OK - Lizenzpflichtige Gateways wurden nie genutzt Database Gateway Option: OK - Transparent Gateway wurde nie genutzt Database In-Memory Option: OK - In-Memory Aggregation wurde nie genutzt Database In-Memory Option: OK - In-Memory Column Store wurde nie genutzt Database Vault Option: OK - Oracle Database Vault wurde nie genutzt Database Vault Option: OK - Privilege Capture wurde nie genutzt Golden Gate: OK - Golden Gate wurde nie genutzt Label Security Option: OK - Privilege Capture wurde nie genutzt Multitenant Option: OK - Oracle Multitenant wurde nie genutzt Multitenant Option: OK - Oracle Pluggable Databases wurden nie genutzt OLAP Option: OK - Oracle Analytic Workspaces wurden nie genutzt OLAP Option: OK - OLAP - Cubes wurden nie genutzt Partitioning Option: WARNUNG - Partitioning wurde genutzt Partitioning Option: OK - Zone Maps wurden nie genutzt RAC Option: OK - Real Application Cluster (RAC) wurde genutzt - Lizenz vorhanden RAC oder RAC One Node Option: OK - Quality of Service Management wurde nie genutzt RAC One Node Option: OK - Real Application Cluster One Node wurde nie genutzt Real Application Testing Option: OK - Database Replay (Workload Capture) wurde nie genutzt Real Application Testing Option: OK - Database Replay (Workload Replay) wurde nie genutzt Real Application Testing Option: OK - SQL Performance Analyzer wurde nie genutzt Secure Backup Option: OK - Oracle Secure Backup wurde nie genutzt Spatial und Graph Option: OK - Oracle Spatial wurde nie genutzt ========================================================================================================================
Automatisierung
Wenn man das SQL-Script regelmäßig und automatisiert gegen die Datenbank ausführen und nur über Lizenzverstöße informiert werden möchte, so wäre es denkbar, hier nach der Zeichenkette „WARNUNG“ zu suchen und sich bei einem Finding eine Mail schicken zu lassen.
Download
Das Script check_database_license_violation.sql
kann mit folgendem Button herunterladen werden.