2009年12月31日木曜日

groovyとPostgreSQLで指定したユーザをログイン不可にする

groovyとPostgreSQLで指定したユーザをログイン不可にするには、以下のコードを実行します。

import groovy.sql.Sql

sql = Sql.newInstance(
"jdbc:postgresql://localhost:5432/test1",
"postgres",
"postgres",
"org.postgresql.Driver")

// 指定したユーザをログイン不可能にする
sql.execute("alter user emp2 nologin")


動作環境
Groovy 1.6.3, JDK6 Update16, Postgres 8.4.0,
8.4-701JDBC4

関連情報
ALTER USER
http://www.postgresql.org/docs/8.4/interactive/sql-alteruser.html

2009年12月30日水曜日

groovyとPostgreSQLでロールのメンバーを一覧表示する

groovyとPostgreSQLでロールのメンバーを一覧表示するには、以下のコードを実行します。


import groovy.sql.Sql

sql = Sql.newInstance(
"jdbc:postgresql://localhost:5432/test1",
"postgres",
"postgres",
"org.postgresql.Driver")

roleName = "employee"
query = """
select
rl.rolname as role_name, mrl.rolname as member, grl.rolname as grantor, admin_option
from
pg_auth_members mem
join pg_authid rl
on (mem.roleid = rl.oid)
join pg_authid mrl
on (mem.member = mrl.oid)
join pg_authid grl
on (mem.grantor = grl.oid)
where rl.rolname = ${roleName}
"""
// ロールのメンバーを一覧表示
sql.eachRow(query){
// ロール名
println "role_name:${it.role_name}"
// メンバー
println "member:${it.member}"
// 付与者
println "grantor:${it.grantor}"
// アドミンオプション
println "admin_option:${it.admin_option}"
println "----"
}


動作環境
Groovy 1.6.3, JDK6 Update16, Postgres 8.4.0,
8.4-701JDBC4

関連情報
pg_auth_members
http://www.postgresql.org/docs/8.4/interactive/catalog-pg-auth-members.html

2009年12月29日火曜日

groovyとPostgreSQLでネームスペースを一覧表示する

groovyとPostgreSQLでネームスペースを一覧表示するには、以下のコードを実行します。


import groovy.sql.Sql

sql = Sql.newInstance(
"jdbc:postgresql://localhost:5432/test1",
"postgres",
"postgres",
"org.postgresql.Driver")

query = """
select * from pg_namespace
"""
// ネームスペース一覧表示
sql.eachRow(query){
// ネームスペース名
println "nspname:${it.nspname}"
println "----"
}


動作環境
Groovy 1.6.3, JDK6 Update16, Postgres 8.4.0,
8.4-701JDBC4

関連情報
pg_namespace
http://www.postgresql.org/docs/8.4/interactive/catalog-pg-namespace.html

2009年12月28日月曜日

groovyとPostgreSQLでログイン不可能なロールを一覧表示する

groovyとPostgreSQLでログイン不可能なロールを一覧表示するには、以下のコードを実行します。


import groovy.sql.Sql

sql = Sql.newInstance(
"jdbc:postgresql://localhost:5432/test1",
"postgres",
"postgres",
"org.postgresql.Driver")

query = """
select * from pg_roles where rolcanlogin = false
"""
// ログイン不可能なロール一覧表示
sql.eachRow(query){
// ロール名
println "rolname:${it.rolname}"
println "----"
}


動作環境
Groovy 1.6.3, JDK6 Update16, Postgres 8.4.0,
8.4-701JDBC4

関連情報
pg_roles
http://www.postgresql.org/docs/8.4/interactive/view-pg-roles.html

2009年12月27日日曜日

groovyとPostgreSQLでファンクションを一覧表示する

groovyとPostgreSQLでファンクションを一覧表示するには、以下のコードを実行します。


import groovy.sql.Sql

sql = Sql.newInstance(
"jdbc:postgresql://localhost:5432/test1",
"postgres",
"postgres",
"org.postgresql.Driver")

schemaName = "public"
query = """
select proc.proname, auth.rolname, lang.lanname, ns.nspname
from pg_proc proc
join pg_authid auth
on (proc.proowner = auth.oid)
join pg_language lang
on (proc.prolang = lang.oid)
join pg_namespace ns
on (proc.pronamespace = ns.oid)
where ns.nspname = ${schemaName}
"""
// ファンクション一覧表示
sql.eachRow(query){
// ファンクション名
println "proname:${it.proname}"
// 所有者
println "rolname:${it.rolname}"
// 言語
println "lanname:${it.lanname}"
// 名前空間
println "nspname:${it.nspname}"
println "----"
}


動作環境
Groovy 1.6.3, JDK6 Update16, Postgres 8.4.0,
8.4-701JDBC4

関連情報
pg_proc
http://www.postgresql.org/docs/8.4/interactive/catalog-pg-proc.html

2009年12月26日土曜日

groovyとPostgreSQLでシーケンスオブジェクトを一覧表示する

groovyとPostgreSQLでシーケンスオブジェクトを一覧表示するには、以下のコードを実行します。


import groovy.sql.Sql

sql = Sql.newInstance(
"jdbc:postgresql://localhost:5432/test1",
"postgres",
"postgres",
"org.postgresql.Driver")

query = """
select relname from pg_class where relkind = 'S'
"""
// シーケンスオブジェクト一覧表示
sql.eachRow(query){
// シーケンス名
println "relname:${it.relname}"
println "----"
}


動作環境
Groovy 1.6.3, JDK6 Update16, Postgres 8.4.0,
8.4-701JDBC4

関連情報
pg_class
http://www.postgresql.org/docs/8.4/interactive/catalog-pg-class.html

2009年12月25日金曜日

groovyとPostgreSQLで統計が取られているテーブルを一覧表示する

groovyとPostgreSQLで統計が取られているテーブルを一覧表示するには、以下のコードを実行します。


import groovy.sql.Sql

sql = Sql.newInstance(
"jdbc:postgresql://localhost:5432/test1",
"postgres",
"postgres",
"org.postgresql.Driver")

query = """
select schemaname, tablename
from pg_stats
where schemaname = 'public'
group by schemaname, tablename
"""
// publicスキーマ内で統計が取られているテーブルを一覧表示
sql.eachRow(query){
// スキーマ名
println "schemaname:${it.schemaname}"
// テーブル名
println "tablename:${it.tablename}"
println "----"
}


動作環境
Groovy 1.6.3, JDK6 Update16, Postgres 8.4.0,
8.4-701JDBC4

関連情報
pg_stats
http://www.postgresql.org/docs/8.4/interactive/view-pg-stats.html

2009年12月24日木曜日

groovyとSQL Serverでオブジェクトが参照しているオブジェクトを一覧表示する

groovyとSQL Serverでオブジェクトが参照しているオブジェクトを一覧表示するには、以下のコードを実行します。

import groovy.sql.Sql

sql = Sql.newInstance(
"jdbc:sqlserver://localhost;databaseName=test1",
"sa",
"sa",
"com.microsoft.sqlserver.jdbc.SQLServerDriver")

objname = "dbo.comp_dept"
query = """
select referenced_server_name, referenced_database_name, referenced_schema_name, referenced_entity_name
from sys.dm_sql_referenced_entities(${objname},'OBJECT')
group by referenced_server_name, referenced_database_name, referenced_schema_name, referenced_entity_name
"""
// オブジェクトが参照しているオブジェクトの一覧
// (ビューが参照しているテーブルなど)
sql.eachRow(query){
// 参照先サーバ
println("referenced_server_name:${it.referenced_server_name}")
// 参照先DB
println("referenced_database_name:${it.referenced_database_name}")
// 参照先スキーマ
println("referenced_schema_name:${it.referenced_schema_name}")
// 参照先エンティティ
println("referenced_entity_name:${it.referenced_entity_name}")
println "----"
}


動作環境
Groovy 1.6.3, JDK6 Update14, SQL Server JDBC Driver 2.0,
SQL Server 2008 Express

関連情報
sys.dm_sql_referenced_entities (Transact-SQL)
http://msdn.microsoft.com/ja-jp/library/bb677185.aspx

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

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


import groovy.sql.Sql

sql = Sql.newInstance(
"jdbc:postgresql://localhost:5432/test1",
"postgres",
"postgres",
"org.postgresql.Driver")

query = """
analyze employee
"""
// テーブルの統計を取得
sql.execute(query)


動作環境
Groovy 1.6.3, JDK6 Update16, Postgres 8.4.0,
8.4-701JDBC4

関連情報
ANALYZE
http://www.postgresql.org/docs/8.4/interactive/sql-analyze.html

2009年12月23日水曜日

groovyとSQL Serverでデータベースをデタッチする

groovyとSQL Serverでデータベースをデタッチするには、以下のコードを実行します。

import groovy.sql.Sql

sql = Sql.newInstance(
"jdbc:sqlserver://localhost;databaseName=master",
"sa",
"sa",
"com.microsoft.sqlserver.jdbc.SQLServerDriver")

// DBのデタッチ
query = """
exec sp_detach_db 'test2'
"""
sql.execute(query)


動作環境
Groovy 1.6.3, JDK6 Update14, SQL Server JDBC Driver 2.0,
SQL Server 2008 Express

関連情報
sp_detach_db (Transact-SQL)
http://msdn.microsoft.com/ja-jp/library/ms188031.aspx

2009年12月22日火曜日

groovyとSQL Serverで完全バックアップセットとログバックアップセットを使用してリカバリする

groovyとSQL Serverで完全バックアップセットとログバックアップセットを使用してリカバリするには、以下のコードを実行します。

import groovy.sql.Sql

sql = Sql.newInstance(
"jdbc:sqlserver://localhost;databaseName=master",
"sa",
"sa",
"com.microsoft.sqlserver.jdbc.SQLServerDriver")

// 完全バックアップセットとログバックアップセットで
// データベースをリカバリ

// 完全バックアップセット
query = """
restore database test3 from bakupdev1 with file=10, norecovery
"""
sql.execute(query)

// ログバックアップセット
query = """
restore log test3 from bakupdev1 with file=14
"""
sql.execute(query)


動作環境
Groovy 1.6.3, JDK6 Update14, SQL Server JDBC Driver 2.0,
SQL Server 2008 Express

関連情報
RESTORE の引数 (Transact-SQL)
http://msdn.microsoft.com/ja-jp/library/ms178615.aspx

2009年12月21日月曜日

groovyとSQL Serverで完全バックアップセットと差分バックアップセットを使用してデータベースをリカバリする

groovyとSQL Serverで完全バックアップセットと差分バックアップセットを使用してデータベースをリカバリするには、以下のコードを実行します。

import groovy.sql.Sql

sql = Sql.newInstance(
"jdbc:sqlserver://localhost;databaseName=master",
"sa",
"sa",
"com.microsoft.sqlserver.jdbc.SQLServerDriver")

// 完全バックアップセットと差分バックアップセットで
// データベースをリカバリ

// 完全バックアップセット
query = """
restore database test2 from bakupdev1 with file=12, norecovery
"""
sql.execute(query)

// 差分バックアップセット
query = """
restore database test2 from bakupdev1 with file=13
"""
sql.execute(query)


動作環境
Groovy 1.6.3, JDK6 Update14, SQL Server JDBC Driver 2.0,
SQL Server 2008 Express

関連情報
RESTORE の引数 (Transact-SQL)
http://msdn.microsoft.com/ja-jp/library/ms178615.aspx

2009年12月20日日曜日

groovyとSQL Serverで完全バックアップセットからデータベースをリカバリする - その2

groovyとSQL Serverで完全バックアップセットから存在するデータベースをリカバリする場合は、以下のコードを実行します。

import groovy.sql.Sql

sql = Sql.newInstance(
"jdbc:sqlserver://localhost;databaseName=master",
"sa",
"sa",
"com.microsoft.sqlserver.jdbc.SQLServerDriver")

query = """
restore database test1 from bakupdev1 with file=1, replace, recovery
"""
// 完全バックアップセットでデータベースをリカバリ
// (データベースが存在する場合)
sql.execute(query)


動作環境
Groovy 1.6.3, JDK6 Update14, SQL Server JDBC Driver 2.0,
SQL Server 2008 Express

関連情報
RESTORE の引数 (Transact-SQL)
http://msdn.microsoft.com/ja-jp/library/ms178615.aspx

2009年12月19日土曜日

groovyとSQL Serverで完全バックアップセットからデータベースをリカバリする

groovyとSQL Serverで完全バックアップセットからデータベースをリカバリするには、以下のコードを実行します。


import groovy.sql.Sql

sql = Sql.newInstance(
"jdbc:sqlserver://localhost;databaseName=master",
"sa",
"sa",
"com.microsoft.sqlserver.jdbc.SQLServerDriver")

query = """
restore database test1 from bakupdev1 with file=1, recovery
"""
// 完全バックアップセットでデータベースをリカバリ
// (データベースが存在しない場合)
sql.execute(query)


動作環境
Groovy 1.6.3, JDK6 Update14, SQL Server JDBC Driver 2.0,
SQL Server 2008 Express

関連情報
RESTORE の引数 (Transact-SQL)
http://msdn.microsoft.com/ja-jp/library/ms178615.aspx

2009年12月18日金曜日

groovyとSQL Serverでデータベースを削除する

groovyとSQL Serverでデータベースを削除するには、以下のコードを実行します。


import groovy.sql.Sql

sql = Sql.newInstance(
"jdbc:sqlserver://localhost;databaseName=master",
"sa",
"sa",
"com.microsoft.sqlserver.jdbc.SQLServerDriver")

query = """
drop database test1
"""
// データベースを削除
sql.execute(query)


動作環境
Groovy 1.6.3, JDK6 Update14, SQL Server JDBC Driver 2.0,
SQL Server 2008 Express

関連情報
DROP DATABASE (Transact-SQL)
http://msdn.microsoft.com/ja-jp/library/ms178613.aspx

2009年12月17日木曜日

groovyとSQL Serverでデータベースの復旧モデルをシンプル復旧モデルに変更する

groovyとSQL Serverでデータベースの復旧モデルをシンプル復旧モデルに変更するには、以下のコードを実行します。


import groovy.sql.Sql

sql = Sql.newInstance(
"jdbc:sqlserver://localhost;databaseName=master",
"sa",
"sa",
"com.microsoft.sqlserver.jdbc.SQLServerDriver")

query = """
alter database test2 SET recovery simple
"""
// データベースをシンプル復旧モデルに変更
sql.execute(query)


動作環境
Groovy 1.6.3, JDK6 Update14, SQL Server JDBC Driver 2.0,
SQL Server 2008 Express

関連情報
ALTER DATABASE の SET オプション (Transact-SQL)
http://msdn.microsoft.com/ja-jp/library/bb522682.aspx

2009年12月16日水曜日

groovyとSQL Serverでデータベースの復旧モデルを完全復旧モデルに変更する

groovyとSQL Serverでデータベースの復旧モデルを完全復旧モデルに変更するには、以下のコードを実行します。


import groovy.sql.Sql

sql = Sql.newInstance(
"jdbc:sqlserver://localhost;databaseName=master",
"sa",
"sa",
"com.microsoft.sqlserver.jdbc.SQLServerDriver")

query = """
alter database test2 SET recovery full
"""
// データベースを完全復旧モデルに変更
sql.execute(query)


動作環境
Groovy 1.6.3, JDK6 Update14, SQL Server JDBC Driver 2.0,
SQL Server 2008 Express

関連情報
ALTER DATABASE の SET オプション (Transact-SQL)
http://msdn.microsoft.com/ja-jp/library/bb522682.aspx

2009年12月15日火曜日

groovyとSQL Serverでトランザクションログをバックアップする

groovyとSQL Serverでトランザクションログをバックアップするには、以下のコードを実行します。


import groovy.sql.Sql

sql = Sql.newInstance(
"jdbc:sqlserver://localhost;databaseName=master",
"sa",
"sa",
"com.microsoft.sqlserver.jdbc.SQLServerDriver")

query = """
BACKUP LOG test3 TO bakupdev1 WITH NAME='log backup'
"""
// トランザクションログをバックアップする
sql.execute(query)


動作環境
Groovy 1.6.3, JDK6 Update14, SQL Server JDBC Driver 2.0,
SQL Server 2008 Express

関連情報
BACKUP (Transact-SQL)
http://msdn.microsoft.com/ja-jp/library/ms186865.aspx

2009年12月14日月曜日

groovyとSQL Serverでデータベースごとの復旧モデルを調べる

groovyとSQL Serverでデータベースごとの復旧モデルを調べるには、以下のコードを実行します。


import groovy.sql.Sql

sql = Sql.newInstance(
"jdbc:sqlserver://localhost;databaseName=master",
"sa",
"sa",
"com.microsoft.sqlserver.jdbc.SQLServerDriver")

query = """
select name, recovery_model_desc
from sys.databases
order by 1
"""

// データベースごとの復旧モデルを調べる
sql.eachRow(query) {
// データベース名
print "name:${it.name} , "
// 復旧モデルの説明
println "recovery_model_desc:${it.recovery_model_desc}"
}


動作環境
Groovy 1.6.3, JDK6 Update14, SQL Server JDBC Driver 2.0,
SQL Server 2008 Express

関連情報
sys.databases (Transact-SQL)
http://msdn.microsoft.com/ja-jp/library/ms178534.aspx

2009年12月13日日曜日

groovyとSQL Serverでデータベースを差分バックアップする

groovyとSQL Serverでデータベースを差分バックアップするには、以下のコードを実行します。


import groovy.sql.Sql

sql = Sql.newInstance(
"jdbc:sqlserver://localhost;databaseName=test2",
"sa",
"sa",
"com.microsoft.sqlserver.jdbc.SQLServerDriver")

query = """
BACKUP DATABASE test1 TO bakupdev1 WITH DIFFERENTIAL,NAME='differential backup'
"""
// データベースを差分バックアップする
sql.execute(query)


動作環境
Groovy 1.6.3, JDK6 Update14, SQL Server JDBC Driver 2.0,
SQL Server 2008 Express

関連情報
BACKUP (Transact-SQL)
http://msdn.microsoft.com/ja-jp/library/ms186865.aspx

2009年12月12日土曜日

groovyとSQL Serverでデータベースを完全バックアップする

groovyとSQL Serverでデータベースを完全バックアップするには、以下のコードを実行します。


import groovy.sql.Sql

sql = Sql.newInstance(
"jdbc:sqlserver://localhost;databaseName=test2",
"sa",
"sa",
"com.microsoft.sqlserver.jdbc.SQLServerDriver")

query = """
BACKUP DATABASE test1 TO bakupdev1 WITH NAME='full backup'
"""
// データベースを完全バックアップする
sql.execute(query)


動作環境
Groovy 1.6.3, JDK6 Update14, SQL Server JDBC Driver 2.0,
SQL Server 2008 Express

関連情報
BACKUP (Transact-SQL)
http://msdn.microsoft.com/ja-jp/library/ms186865.aspx

2009年12月11日金曜日

groovyとSQL Serverでバックアップセットを一覧表示する

groovyとSQL Serverでバックアップセットを一覧表示するには、以下のコードを実行します。


import groovy.sql.Sql

sql = Sql.newInstance(
"jdbc:sqlserver://localhost;databaseName=master",
"sa",
"sa",
"com.microsoft.sqlserver.jdbc.SQLServerDriver")

query = """
RESTORE HEADERONLY FROM bakupdev1
"""
// バックアップセットの一覧表示
sql.eachRow(query){
// バックアップセット名
println("BackupName:${it.BackupName}")
// データアップセットの説明
println("BackupDescription:${it.BackupDescription}")
// バックアップタイプ
println("BackupType:${it.BackupType}")
// バックアップセットの位置
println("Postition:${it.Position}")
// データベースの名前
println("DatabaseName:${it.DatabaseName}")
// バックアップ終了日時
println("BackupFinishDate:${it.BackupFinishDate}")
println "----"
}


動作環境
Groovy 1.6.3, JDK6 Update14, SQL Server JDBC Driver 2.0,
SQL Server 2008 Express

関連情報
RESTORE HEADERONLY (Transact-SQL)
http://msdn.microsoft.com/ja-jp/library/ms178536.aspx

2009年12月10日木曜日

groovyとoracleでジョブを一覧表示する

groovyとoracleでジョブを一覧表示するには、以下のコードを実行します。


import groovy.sql.Sql

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

query = """
select job,priv_user,schema_user,next_date,what
from dba_jobs
"""
sql.eachRow(query){
// ジョブのID
println("job:${it.job}")
// ジョブに適用される権限のユーザ
println("priv_user:${it.priv_user}")
// ジョブのパースに使用されるスキーマのユーザ
println("schema_user:${it.schema_user}")
// 次にジョブが実行される日
println("next_date:${it.next_date}")
// ジョブの実行内容
println("what:${it.what}")
println "----"
}


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

関連情報
DBA_JOBS
http://download.oracle.com/docs/cd/B28359_01/server.111/b28320/statviews_4093.htm#sthref1972

2009年12月9日水曜日

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.unlock_table_stats('SCOTT', 'EMP'); end;")

// 全行走査で統計取得
sql.execute("begin dbms_stats.gather_table_stats('SCOTT', 'EMP'); end;")


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

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

2009年12月8日火曜日

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.lock_table_stats('SCOTT', 'EMP'); end;")

// 全行走査で統計取得->ロックしているのでエラー
sql.execute("begin dbms_stats.gather_table_stats('SCOTT', 'EMP'); end;")


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

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

2009年12月7日月曜日

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_schema_stats('SCOTT'); end;")


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

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

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