2009年12月6日日曜日

groovyとoracleでインデックス統計を削除する

groovyとoracleでインデックス統計を削除するには、以下のコードを実行します。


import groovy.sql.Sql

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

// インデックス統計の削除
sql.execute("begin dbms_stats.delete_index_stats('SCOTT','PK_DEPT'); end;")


動作環境
Groovy 1.6.4, JDK6 Update16, Oracle11g R1

関連情報
DELETE_INDEX_STATS Procedure
http://download.oracle.com/docs/cd/B28359_01/appdev.111/b28419/d_stats.htm#i1035428

groovyとGmailアカウントでメールする

groovyとGmailアカウントでメールするには、以下のコードを実行します。

import java.security.*
import java.util.*
import javax.mail.*
import javax.mail.internet.*

smtpHost = "smtp.gmail.com"
smtpPort = "465"
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider())
Properties props = new Properties()
props.put("mail.smtp.host", smtpHost)
props.put("mail.smtp.port", smtpPort)
props.put("mail.smtp.auth", "true")
props.put("mail.smtp.socketFactory.port", smtpPort);
props.put("mail.smtp.socketFactory.class",
"javax.net.ssl.SSLSocketFactory")
props.put("mail.smtp.socketFactory.fallback", "false")

Session session = Session.getDefaultInstance(props,
[
getPasswordAuthentication: {
return new PasswordAuthentication("youraccount@gmail.com",
"yourpassword")
}
] as Authenticator
)
Message msg = new MimeMessage(session)
msg.setFrom(new InternetAddress(
"youraccount@gmail.com","your name","iso-2022-jp"))
msg.setRecipients(Message.RecipientType.TO, "xxxx@example.com")

msg.setSubject("test mail","iso-2022-jp")
msg.setText("test message.", "iso-2022-jp")
Transport.send(msg)

2009年12月5日土曜日

groovyとoracleでテーブル統計を削除する

groovyとoracleでテーブル統計を削除するには、以下のコードを実行します。


import groovy.sql.Sql

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

// テーブル統計の削除
sql.execute("begin dbms_stats.delete_table_stats('SCOTT','EMP'); end;")


動作環境
Groovy 1.6.4, JDK6 Update16, Oracle11g R1

関連情報
DELETE_TABLE_STATS Procedure
http://download.oracle.com/docs/cd/B28359_01/appdev.111/b28419/d_stats.htm#i1035962

2009年12月4日金曜日

groovyとoracleでスキーマ内の全オブジェクトの統計を取得する

groovyとoracleでスキーマ内の全オブジェクトの統計を取得するには、以下のコードを実行します。


import groovy.sql.Sql

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

// スキーマ内の全オブジェクトの統計取得
sql.execute("begin dbms_stats.gather_schema_stats('SCOTT'); end;")


動作環境
Groovy 1.6.4, JDK6 Update16, Oracle11g R1

関連情報
GATHER_SCHEMA_STATS Procedures
http://download.oracle.com/docs/cd/B28359_01/appdev.111/b28419/d_stats.htm#i1036456

2009年12月3日木曜日

groovyとoracleでテーブルの統計を取得する

groovyとoracleでテーブルの統計を取得するには、以下のコードを実行します。


import groovy.sql.Sql

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

// 全行走査で統計取得
sql.execute("begin dbms_stats.gather_table_stats('SCOTT', 'EMP'); end;")
// サンプリングで統計取得
sql.execute("begin dbms_stats.gather_table_stats('scott', 'dept', estimate_percent => 30); end;")


動作環境
Groovy 1.6.4, JDK6 Update16, Oracle11g R1

関連情報
DBMS_STATS
http://download.oracle.com/docs/cd/B28359_01/appdev.111/b28419/d_stats.htm#ARPLS059

2009年12月2日水曜日

groovyとoracleでテーブル統計を最後に取得した日付を表示する

groovyとoracleでテーブル統計を最後に取得した日付を表示するには、以下のコードを実行します。


import groovy.sql.Sql

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

query = """
select table_name, last_analyzed
from user_tables
order by 2
"""
sql.eachRow(query){
// テーブル名
println("table_name:${it.table_name}")
// 最後に統計を取得した日
println("last_analyzed:${it.last_analyzed}")
println "----"
}


動作環境
Groovy 1.6.4, JDK6 Update16, Oracle11g R1

関連情報
USER_TABLES
http://download.oracle.com/docs/cd/B28359_01/server.111/b28320/statviews_5443.htm#sthref2797

2009年12月1日火曜日

groovyとoracleでインデックス統計を最後に取得した日付を表示する

groovyとoracleでインデックス統計を最後に取得した日付を表示するには、以下のコードを実行します。


import groovy.sql.Sql

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

query = """
select index_name, last_analyzed
from user_indexes
order by 2
"""
sql.eachRow(query){
// インデックス名
println("index_name:${it.index_name}")
// 最後に統計を取得した日
println("last_analyzed:${it.last_analyzed}")
println "----"
}


動作環境
Groovy 1.6.4, JDK6 Update16, Oracle11g R1

関連情報
USER_INDEXES
http://download.oracle.com/docs/cd/B28359_01/server.111/b28320/statviews_5287.htm#sthref2607