Scriptbasierter License Violation Check

By | 1. Dezember 2016

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.

Violation Check

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.

 

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert