2010年8月23日月曜日

groovyとOracleでインデックスの使用状況を調べる

groovyとOracleでインデックスの使用状況を調べるには、以下のコードを実行します。

import groovy.sql.Sql

sql = Sql.newInstance(
"jdbc:oracle:thin:@localhost:1521:orcl",
"scott",
"tiger",
"oracle.jdbc.driver.OracleDriver")

// モニタリングをオンにする
sql.eachRow("select index_name from user_indexes where index_type <> 'LOB'"){
sql.execute("alter index " + it.index_name + " monitoring usage")
}

// クエリ実行
query = """
select * from emp where empno = 7788
"""
sql.eachRow(query){
}

// モニタリングをオフにする
sql.eachRow("select index_name from user_indexes where index_type <> 'LOB'"){
sql.execute("alter index " + it.index_name + " nomonitoring usage")
}

// 使用状況
sql.eachRow("select index_name, table_name, used from v\$object_usage"){
println("${it.index_name},${it.table_name},${it.used}")
}


動作環境
groovy 1.7.4, JDK6 Update21, Oracle11g R2

0 件のコメント:

コメントを投稿