===== Mit den JE Klassen die Datendateien / Transaktionslogs analysieren der Oracle NoSQL auswerten =====
Mit den Tools der Berkely Java DB in .\lib\je.jar können die Store Node Datenbanken ausgewertet werden.
Damit diese Klassen verwendet werden können, müssen aber die KV Jar’s mit in den Klassenpfad aufgenommen werden.
**Nicht für produktive Umgebungen! \\
Seiteneffekte im laufenden Betrieb können nicht ausgeschlossen werden! Nicht supported!**
=== Die Log Einträge auswerten/ ausgeben ===
Mit Hilfe der Original Berkeley DB Management Methoden kann auf das Transaktionslog zugegriffen werden:
Statistik der Log's ausgeben:
REM in das Sofware Verzeichnis wechseln:
cd D:\entwicklung\kv-2.1.8
java -jar .\lib\je.jar DbPrintLog -h D:\entwicklung\kv-2.1.8\kvroot\kvstore\sn1\rg1-rn1\env -S
REM Note that DbPrintLog -S gives the average record size under Log statistics, in the LN (leaf node) row, at the avg bytes column.
Alle Inhalte der Logs ohne den Schalter s
java -classpath ".\lib\kvclient.jar;.\lib\kvstore.jar;.\lib\je.jar" com.sleepycat.je.util.DbVerifyLog -h D:\entwicklung\kv-2.1.8\kvroot\kvstore\sn1\rg1-rn1\env
Tipp:In der MS Powershell nicht vergessen mit "" den Klassenpfad zu escapen!
=== Datenbank Größe / Partitionen und Anzahl Datensätze pro Partition ausgeben===
Füllgrad und Größe der Daten/Transaktionslog Dateien anzeigen mit **"com.sleepycat.je.util.DbSpace"**:
java -classpath ".\lib\kvclient.jar;.\lib\kvstore.jar;.\lib\je.jar" com.sleepycat.je.util.DbSpace -h D:\entwicklung\kv-2.1.8\kvroot\kvstore\sn1\rg1-rn1\env
File Size (KB) % Used
-------- --------- ------
00000001 1048575 1
00000002 511706 13
TOTALS 1560282 5
(LN size correction factor: 0.9585644)
**LN** steht für Leaf Node.
Datenbanken anzeigen lassen (Damit werden auch die Partitionen sichtbar!) mit **"com.sleepycat.je.util.DbDump"** :
java -classpath ".\lib\kvclient.jar;.\lib\kvstore.jar;.\lib\je.jar" com.sleepycat.je.util.DbDump -h D:\entwicklung\kv-2.1.8\kvroot\kvstore\sn1\rg1-rn1\env -l
Anzahl der Einträge in den Partitionen anzeigen lassen mit **"com.sleepycat.je.rep.utilint.DbDumpGroup"**:
java -classpath .\lib\kvclient.jar;.\lib\kvstore.jar;.\lib\je.jar com.sleepycat.je.rep.utilint.DbDumpGroup -h D:\entwicklung\kv-2.1.8\kvroot\kvstore\sn1\rg1-rn1\env -dumpCount
Die Details der Partitionen anzeigen lassen **"com.sleepycat.je.util.DbVerify"**:
java -classpath ".\lib\kvclient.jar;.\lib\kvstore.jar;.\lib\je.jar" com.sleepycat.je.util.DbVerify -h D:\entwicklung\kv-2.1.8\kvroot\kvstore\sn1\rg1-rn1\env
=== DB Statistik mit DbFilterStats auslesen ===
Mit Unterstützung der Klasse **“ DbFilterStats“** kann auch einfacher die Performance CSV Datei ausgewertet werden.
Dazu wird angegeben welche Spalte(n) (Namen der Spalten durch Komma getrennt) ausgelesen werden soll.
java -classpath .\lib\kvclient.jar;.\lib\kvstore.jar;.\lib\je.jar com.sleepycat.je.util.DbFilterStats -p Cleaning:cleanerBackLog,Cleaning:nCleanerDeletions D:\entwicklung\kv-2.1.8\kvroot\kvstore\sn1\rg1-rn1\env\je.stat.csv
siehe [[http://docs.oracle.com/cd/E17277_02/html/java/com/sleepycat/je/util/DbFilterStats.html|DbFilterStats]]
=== Group Metadata ausgeben ===
# Get the group metadata from each member of the group, directly off their persistent copy
java -classpath ".\lib\kvclient.jar;.\lib\kvstore.jar;.\lib\je.jar" com.sleepycat.je.rep.utilint.DbDumpGroup -h D:\entwicklung\kv-2.1.8\kvroot\kvstore\sn1\rg1-rn1\env
Von obiger Ausgabe den Host und Port eintrag in der Zeile Node: verwenden um direkt dem Node Cache abzufragen:
# Get the group metadata from the current master in a running group
java -classpath ".\lib\kvclient.jar;.\lib\kvstore.jar;.\lib\je.jar" com.sleepycat.je.rep.util.DbGroupAdmin -roupName rg1 -helperHosts jupiter:5006 -dumpGroup
=== Zusammenfassung für Linux - wichtigste Befehle ===
# set enviroment
export KVLIB=/opt/oracle/kv-2.1.8/lib
export KVCLASS=$KVLIB/kvclient.jar:$KVLIB/kvstore.jar:KVLIB/je.jar
export JEENV=/opt/oracle/kvdata/NODE01/KVStore/KVStore/sn1/rg1-rn1/env
#Füllgrad und Größe der Daten/Transaktionslog Dateien anzeigen mit:
java -classpath $KVCLASS com.sleepycat.je.util.DbSpace -h $JEENV
#Anzahl der Einträge in den Partitionen anzeigen lassen:
java -classpath $KVCLASS com.sleepycat.je.rep.utilint.DbDumpGroup -h $JEENV -dumpCount
#Statisik auswerten
#Mögliche Spalten:
head $JEENV/je.stat.csv
#Cleaner Werte anzeigen lassen:
java -classpath $KVCLASS com.sleepycat.je.util.DbFilterStats -p time,Cleaning:cleanerBackLog,Cleaning:nCleanerDeletions,Cleaning:totalLogSize $JEENV/je.stat.csv
#JE logfile anzeigen lassen
tail -f $JEENV/je.info.0
==== Quellen ====
* http://www.oracle.com/technetwork/products/berkeleydb/learnmore/bdb-je-architecture-whitepaper-366830.pdf
* http://docs.oracle.com/cd/E17277_02/html/GettingStartedGuide/BerkeleyDB-JE-GSG.pdf
* http://docs.oracle.com/cd/E17277_02/html/GettingStartedGuide/logfilesrevealed.html
* http://docs.oracle.com/cd/E17277_02/html/GettingStartedGuide/backgroundthreads.html#cleaner
* http://docs.oracle.com/cd/E17277_02/html/GettingStartedGuide/administration.html#propertyfile
* http://docs.oracle.com/cd/E17277_02/html/java/com/sleepycat/je/util/DbDump.html
* http://docs.oracle.com/cd/E17277_02/html/java/com/sleepycat/je/EnvironmentConfig.html
* http://freenet.googlecode.com/svn/trunk/contrib/bdb/test/com/sleepycat/je/cleaner/CleanerTest.java
* https://blogs.oracle.com/charlesLamb/entry/berkeley_db_java_edition_clean
Nachfragen im Forum
* https://forums.oracle.com/thread/2583684