쿼리에 대한 실행 계획을 구문 분석하고 내 응용 프로그램에 대해 데이터를 추출해야합니다. 이 대답은 JDBC Oracle - Fetch explain plan for query이지만 jdbc를 통해 텍스트 실행 계획을 가져 오는 데 도움이되었지만 쿼리가 런타임 매개 변수이기 때문에 텍스트 출력을 구문 분석 할 수 없습니다. 아래의 샘플 쿼리는 "SQL Developer"에서는 xml을 반환하지만 jdbc에서는 반환하지 않습니다. ojdbc6.jar 드라이버와 함께 Oracle 11g XE를 사용하고 있습니다. 이 쿼리가 jdbc API를 통해 작동하지 않는 이유는 무엇입니까? 어떤 도움을 주시면 감사하겠습니다.jdbc를 통해 Oracle 실행 계획 XML을 얻는 방법
PLAN에게 조합을 설명 STATEMENT_ID = '123'FOR 선택 * 작업에서 어디 ROWNUM < DESC 작업 ID 3 순서
SELECT dbms_xplan.build_plan_xml (statement_id => '123') 이중 FROM XPLAN AS;
Driver d = (Driver) Class.forName("oracle.jdbc.OracleDriver").newInstance();
Connection conn = d.connect("jdbc:oracle:thin:username/[email protected]//localhost:1521/XE", new Properties());
Statement statement1 = conn.createStatement();
statement1.execute("explain plan set STATEMENT_ID = '"+ id + "' for " + query);
statement1.executeQuery("select dbms_xplan.build_plan_xml(statement_id => '"+ id + "') AS XPLAN FROM dual");
ResultSet resultSet = statement1.getResultSet();
while (resultSet.next()) {
executionPlan = resultSet.getSQLXML(1).getString();
}
getString (1)을 사용하면 null 값을 사용하는 동안 to_clob는 다음 문자를 제공합니다. jdbc 및 SQL Developer 모두에서 ror –
Snoopy
그러나이 오류 메시지는 기본적으로 작동하고 dbms_xplan.build_plan_xml을 실행하는 동안 다른 오류가 발생했음을 의미합니다. –
@ user812236, TO_CLOB 접근을 시도 할 때 사용한 정확한 문을 표시 할 수 있습니까? 'select to_clob (dbms_xplan.build_plan_xml (statement_id => '123')) AS XPLAN FROM dual은 SQL Developer에서 잘 작동했습니다. –