private  int executeCallableStatement(final String aSql, final Integer fetchSize, QueryListener queryListener) throws SQLException {


if(isNotConnected()){

try{

queryListener.onError("DB연결을 먼저하세요!!");

}

finally{

queryListener.onFinished();

}

return 0;

}

final String sql = trimSqlErrorString(aSql);

int rownums=0;

ResultSet rset = null;

CallableStatement stmt = null;//ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);

try{

stmt = connMgr.prepareCall(sql);

stmt.execute();

queryListener.onEachQueryExecuting(stmt);

if(stmt.getMoreResults()){

rset = stmt.getResultSet();

rownums = queryListener.onEachResultSet(sql, rset, fetchSize);

}

else {

rownums = stmt.getUpdateCount();

queryListener.onUpdatedCount(rownums, sql);

}

}

finally{

connMgr.close(rset, stmt);

queryListener.onEachQueryClosed();

}

return rownums;

}

private String trimSqlErrorString(String aSql) {

//.replaceAll("--[^\n]+\n", "").replaceAll("/\\*[^/]+\\*/", "").replaceAll("\\?","'1'").trim();

return MyStringUtil.trim(aSql).replaceAll("/\\*\\s+", "/*");

}

Posted by stekilove
,

oracle tune

computer programming 2018. 1. 20. 01:27

https://oracle-base.com/articles/8i/explain-plan-usage


https://docs.oracle.com/cd/E11882_01/server.112/e41084/sql_elements006.htm#SQLRF51098


https://oracle-base.com/articles/9i/dbms_xplan



https://oracle-base.com/articles/11g/real-time-sql-monitoring-11gr1





select /*+MONITOR*/ from dual;


Posted by stekilove
,
EXPLAIN PLAN
   SET STATEMENT_ID = 'st1'
   INTO my_plan_table
 FOR
SELECT last_name FROM employees;
SELECT PLAN_TABLE_OUTPUT FROM TABLE(DBMS_XPLAN.DISPLAY());

SELECT PLAN_TABLE_OUTPUT 
  FROM TABLE(DBMS_XPLAN.DISPLAY('MY_PLAN_TABLE', 'st1','TYPICAL'));


https://docs.oracle.com/cd/B28359_01/server.111/b28274/ex_plan.htm#i16938


http://www.oracle.com/technetwork/database/bi-datawarehousing/twp-explain-the-explain-plan-052011-393674.pdf




https://blogs.oracle.com/sql/how-to-create-an-execution-plan


Posted by stekilove
,