Seite 1 von 1

IBM DB2 Monitor per JDBC auslesen? Und ALTER TABLESPACE?

Verfasst: 03.02.2009, 22:57
von Andreas I.
Hallo, inzwischen habe ich mich erfolgreich mit der Datenbank verbunden: https://www.abakus-internet-marketing.d ... 67910.html

...Nun will ich aber auch Snapshot-Monitorelemente per Java/JDBC(?) auslesen und ALTER TABLESPACE Kommandos absetzen.

Per Konsole geht das ja ganz prima, aber über JDBC irgendwie nicht so wirklich. Die Befehle zum auslesen der Snapshot-Monitorelemente und zum verändern des Tablespace scheinen wohl irgendwie neben den SQL-Befehlen zu existieren und sich nicht so einfach über JDBC versenden lassen(?)

Weiß jemand, wie das gemacht wird?

Verfasst:
von
SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


Verfasst: 04.02.2009, 13:29
von everflux
Was heißt denn, geht nicht so wirklich? Gibts ne Fehlermeldung?
Zeig mal den Java Code...

Verfasst: 16.02.2009, 16:31
von Andreas I.
Hallo, hab das Thema ein paar Tage schleifen lassen. Hier der Code:

Code: Alles auswählen

...
          Connection con = null; 
          try 
          { 
         con = DriverManager.getConnection( "jdbc:db2:DS2", "**user**", "**pass**" );
         Statement stmt = con.createStatement(); 
         ResultSet rs = stmt.executeQuery( "get snapshot for all on ds2" );
...
ergibt die Fehlermeldung:
"com.ibm.db2.jcc.b.SqlException: [jcc][10103][10941][3.50.152] Die Methode executeQuery kann nicht zur Aktualisierung verwendet werden. ERRORCODE=-4476, SQLSTATE=null"

Wenn ich anstatt "get snapshot for all on ds2" irgendwelche SQL-Befehle wie SELECT oder UPDATE schreibe, funktioniert es fehlerlos!
Ich denke, es liegt daran, dass "get snapshot..." wohl ein DB2-Befehl ist, aber kein SQL-Befehl. Per Hand über die Konsole funktioniert es dagegen fehlerfrei.
Aber irgendwie muss man die DB2-Monitordaten doch auch per Software auslesen und überwachen können?
Und das nächste Problem ist dann wohl ALTER TABLESPACE (In Reaktion auf die gelesenen Werte...."

Verfasst: 16.02.2009, 16:35
von everflux
Teste doch mal mit
stmt.executeUpdate(...)

Verfasst: 16.02.2009, 16:45
von Andreas I.
Dann kommt:
"Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Type mismatch: cannot convert from int to ResultSet"

Anscheinend gibt stmt.executeUpdate(...) Integerwerte zurück, die wohl über Erfolg oder Misserfolg des Updates etwas sagen...?
Aber ich will ja gar keine Integerwerte über Erfolgsmeldungen haben, sondern die Monitordaten der Datenbank.
Irgendwie ist das wohl der falsche Ansatz?

Verfasst: 16.02.2009, 17:32
von everflux
Wenn ich das hier richtig sehe
https://publib.boulder.ibm.com/infocent ... 006003.htm

Kannst du auf die daten per kommandozeile oder per table space funktionen zugreifen.

Verfasst: 16.02.2009, 17:49
von Andreas I.
Per Kommandozeile?
Ich habe parallel mal etwas gegoogled und da tauchen Vorschläge auf, die Tochterprozesse mit einem DB2-Kommandofenster öffnen und dann per JAVA über das Tochter-DB2-Fenster Kommandos absetzen und die Ergebnisse auswerten....
Das scheint mir jetzt erstmal recht kompliziert und ziemlich von hinten durch die Brust ins Auge zu sein...

Kann man die table space funktionen mit JAVA ansprechen?
Klingt für mich erstmal einfacher.

Verfasst: 16.02.2009, 18:02
von everflux
Die Table Space funktionen gehen sicherlich über java...

Ich glaube das hier ist was du suchst
https://publib.boulder.ibm.com/infocent ... 010418.htm

Verfasst: 16.02.2009, 18:08
von Andreas I.
Ja, Danke! Das probiere ich jetzt erstmal aus.

Hoffentlich gibt es für ALTER TABLESPACE auch so eine Methode.