/** * 表分析,调用存储过程 */ public void analyzeTables(String tabName) throws Exception{ Connection conn = null; CallableStatement stmt = null; try { conn = DBConnection.getDestConnection(); stmt = conn.prepareCall("{call RHZX.ANALYTABLE(?)}"); stmt.setString(1, tabName); log(INFO, "analyzing table:"+tabName); stmt.execute(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); throw e; }finally{ if(stmt!=null){ stmt.close(); } DBConnection.closeDest(conn); } }
开发目的:月末日终进行大批量数据拷贝到另一个数据库中,同时为了性能而进行表分析(oracle不使用analyze而是dbms分析)
存储过程:
CREATE OR REPLACE PROCEDURE ANALYTABLE(PARA1 IN VARCHAR2) IS BEGIN DBMS_STATS.GATHER_TABLE_STATS('RHZX',PARA1,CASCADE=> TRUE,ESTIMATE_PERCENT => 100); END ANALYTABLE;
浙公网安备 33010602011771号