===== 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