2010-12-07 13 views
10

Ich frage mich, wie ich den Plan mit Hilfe von Java erklären holen kann. Grund Ich brauche dies, weil wir einen Rahmen haben, wo besondere Anwender Berichte basteln können. Diese Berichte bauen manchmal große Abfragen, in denen wir im laufenden Betrieb erklären wollen und speichern Sie die Kosten. Auf diese Weise können wir später die kostenintensiven Abfragen analysieren und optimieren.JDBC Oracle - Holt Plan für Abfrage erklären

Beispiel-Code, der mir illegal Spalte Ausnahme gibt:

ResultSet rs = null; 
    try { 
     oracle = ConnectionManager.getConnection(ConnectionManager.Test); 
     pstmt = oracle.prepareStatement("begin execute immediate 
     'explain plan for SELECT 1 from Dual'; end;"); 
     rs = pstmt.executeQuery(); 
     while (rs.next()) { 
      System.out.println(rs.getString(1)); 
     } 

Antwort

14

verwenden:

 
oracle = ConnectionManager.getConnection(ConnectionManager.Test); 
stmt = oracle.createStatement() 
stmt.execute("explain plan for SELECT 1 from Dual"); 
rs = stmt.executeQuery("select plan_table_output from table(dbms_xplan.display())"); 
while (rs.next()) 
{ 
    System.out.println(rs.getString(1)); 
} 
+0

Vielen Dank! Das funktioniert. Wissen Sie, wie Sie nur die Kosten anstelle der gesamten Plantabelle abrufen können? Haben –

+3

einen Blick auf die Dokumentation von dbms_xplan.display(). Sie können Parameter übergeben, um genau die Informationen auszuwählen, die Sie benötigen –

Verwandte Themen