ORACLEでバインド変数付SQLをトレースする

oracle 10.0.2.4
oracle 9.2.0.1

テキストファイルに保存して、sqlplusから実行すると幸せになれるカモ

prompt '======================================================================'
prompt 'SQLトレース取得スクリプト'
prompt '----------------------------------------------------'
prompt 'SYSじゃないとエラーで落ちるよ'
prompt '======================================================================'
set line 200
set pages 1000
col SID          format '999999'
col SERIAL#      format '999999'
col USERNAME     format a10
col PROGRAM      format a20
col MACHINE      format a20
col STATUS       format a10


  select SID
        ,SERIAL#
        ,USERNAME
        ,PROGRAM
        ,MACHINE
        ,STATUS
    from V$SESSION 
   where USERNAME = UPPER('&&USERNAME')
order by SID,SERIAL#
/
--トレースの開始
EXECUTE DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION(&&SID,&&SERIAL,TRUE);
--バインド変数出力の為のトレースレベルの設定(4 or 12)
EXECUTE DBMS_SYSTEM.SET_EV(&&SID,&&SERIAL,10046,4,'');

prompt '=================================================='
prompt 'トレースしたいSQLを実行してください。'
prompt '終了後、下記SQLを実行してください。'
prompt '--------------------------------------'
prompt 'EXECUTE DBMS_SYSTEM.SET_EV(&&SID,&&SERIAL,10046,0,'');'
prompt 'EXECUTE DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION(&&SID,&&SERIAL,FALSE);'
prompt '=================================================='

col "ファイル出力先" format a100
select VALUE as "ファイル出力先"
  from V$PARAMETER
 where NAME = 'user_dump_dest'
/

--セッション変数のクリア
UNDEFINE SID
UNDEFINE SERIAL

tkprofで整形できないのが痛いかなぁ

虐殺器官(伊藤計劃)読んでみた

友人のオススメで読んだ1冊。
文章はとても読みやすく、
書いてあることが容易に想像できるように書かれていると思う。
リズムも良くて、出来れば一気読みしたかったなぁと。

ただ、物語の結幕は僕は完全に的外れモードで読んでしまったので、
読み終わった今となってはそっちかぁと、、、
もう一度読んでみるのもいいかもしれない。

で、どうして的外れモードだったのかというと、
主人公が優秀すぎじゃないのだろうか。
あの終わりにするには賢すぎるし、
結局は母親なのに、途中ルツィアの影響を受けすぎてたのではないか、
っていう。


なんか友人的には「ハーモニー」の方がオススメとの事。
そのうち見てみるかぁ

僕がピンと来た「そこまでやるか!文具王高畑正幸の最強アイテム完全批判」掲載アイテム6選

日経トレンディのムック「そこまでやるか!文具王高畑正幸の最強アイテム完全批判」を同ポッドキャストで知り、早速読んでみた。
(本誌は残念ながら大して読んでいないのですが。。。)

僕的ピンと来たアイテム6選を紹介したいと思います。

ジェットストリーム(三菱鉛筆)

http://www.mpuni.co.jp/product/category/ball_pen/jetstream/
今までは4年位ゼブラのサラサZEBRA | ゼブラ株式会社 | サラサを使っていたのだけれど、
今回記事をみてこれは!!と思い移行を決意。
ブッキ提唱者古川耕氏も絶賛。
その書き味のスピード感はクセになるそう。
ただし、なぜか4色in1のラインナップが無いのが残念。
(4色+シャープペンはあるのに。。。)

アブラサス(バリューイノベーション)

保存するメモ帳 abrAsus(アブラサス) | 薄くてポケットに楽々入る小さい手帳 - abrAsus(アブラサス)
なんとなく質感がかっこいい1品なのに、テーマがズボラというその存在が光る1品
みんな大好きScanSnapとの連携に長けているそう。
ただ、少しお高め。同誌の付録に紙Verがあるので、気になるかたはまず試してみるのがいいかも。

カラーストライプ(リラ)

【文具王】250年ぶりの大変革!“天むす”色鉛筆「カラーストライプ」 - 日経トレンディネット
(メーカーサイト見つけられず)
見た目にかっこいい色鉛筆。
僕は絵心とか皆無なので自分用にはう〜んですが、
絵を描く人に是非プレゼントしたい一品

万能M型(オルファ)

【オルファ】万能M厚型
カッターってついペラペラのを使って、ヘニャってなってクソって思うことが多かった。
でもL型を置いておくのもでかすぎてなんだかなぁと思ってました。
そんなニーズにぴったりらしい1品

しめしめ45(仁礼工業)

オリジナル製品の案内:仁礼工業株式会社|
キターーーと思わせる1品
結束バンドってキチキチに締めるのって意外と難しい。
後、2ミリってところが気持ち悪いなぁと感じてました。
もうこれで気持ちよく縛れますね。

ダンパー(キリンジャカード)

Kirin Jacquard Co., Ltd.
正直一般性はう〜んと言わざるを得ないけど、
(自宅でダンボール重ねますか?的な)

本誌に掲載されている写真でヤラレてしまった1品
あぁ無性に積み上げたい。
ダンパーしたい。

その衝動だけカモだけど1度は使ってみたいなぁ

終わりに

最近文房具ブームらしいですね。
文房具ってお気に入りの1品で仕事(勉強)してると、
なんとなく捗ったりする気分が素敵だと思います。

もし文房具興味のある方は下記もチェック!!
TBS RADIO ライムスター宇多丸のウィークエンド・シャッフル
ポッドキャストがあるので、是非聞いてみてください。

今更ながら更新可能なビューを知った

Update文って分かり難いところありません?

単純なUpdateならいいんですけどね、
Update-Selectって言われるようなサブクエリ使うようなUpdate文って
たま〜に落とし穴が在りますよね。

良くある落とし穴

先日も先輩がこれにハマってた。
【WK_986_T003】

COLUMN1(PK) COLUMN2
1 a
2 b
3 c
4 d
5 e

【WK_986_T004】

COLUMN1(PK) COLUMN2
3
5
7

こんな時表があった時、【WK_986_T003】のCOLUMN2をCOLUMN1の等しい【WK_986_T004】のCOLUMN2で上書きしたい場合。
ちょっと油断すると↓のようなSQLを書いてしまったり、しまわな。。。

update WK_986_T003 A
   set A.COLUMN2 = (select B.COLUMN2
                      from WK_986_T004 B
                     where B.COLUMN1 = A.COLUMN1)

なんとなく「where B.COLUMN1 = A.COLUMN1」のせいで"WK_986_T003"にも"WK_986_T004"にもある行だけ更新される気がするけども、
そんなことは無く結果は下記
【WK_986_T003】

COLUMN1(PK) COLUMN2
1 NULL
2 NULL
3
4 NULL
5

WK_986_T004が無い行はselectの結果が無いのでNullになってしまう。
で、COLUMN1 in (3,5)の行だけ更新する場合は↓のようにしてた。

update WK_986_T003 A
   set A.COLUMN2 = (select B.COLUMN2
                      from WK_986_T004 B
                     where B.COLUMN1 = A.COLUMN1)
where exists(
    select B.COLUMN2
      from WK_986_T004 B
     where B.COLUMN1 = A.COLUMN1)

でも、ビューアップデート?更新可能なビュー?的なしくみを使うと下記のようにも書ける。

update (
       select A.COLUMN1 as A_COLUMN1
             ,A.COLUMN2 as A_COLUMN2
             ,B.COLUMN2 as B_COLUMN2
         from WK_986_T003 A
   inner join WK_986_T004 B
           on B.COLUMN1 = A.COLUMN1
) UPD
set UPD.A_COLUMN2 = UPD.B_COLUMN2

僕的感覚では下のやり口が読みやすいし直感的かなぁと思う。

隣の席の後輩が教えてくれました。
ありがとう。

2/13までに読む

1時間でツイッターサービスを作ろう! | KRAY Inc
Func09.com
Life is beautiful: Ruby on Railsの「えせMVC」の弊害
とあるアプリの開発運用(トラブルシュート)
Rubyの魔術 − @IT
http://blog.champierre.com/archives/897
ニュース - IPAが「Ruby研修用コンテンツ」を無償公開、活用法やプログラミング技術を遠隔から実習:ITpro
Rails3でどう書けばいいかわからない時、参考になる7つのURL | KRAY Inc
Twitterの大規模システム運用技術、あるいはクジラの腹の中(後編)~Twitterのサブシステム「Unicorn」「Kestrel」「Flock DB」 - Publickey
えせMVCについてそろそろ一言言っておくか - yvsu pron. yas
Git+Redmineな人におすすめのフックスクリプト集 - みずぴー日記
クックパッドのデータ処理、たった5万円:日経ビジネスオンライン
http://projects.netlab.jp/masaru/
Life is beautiful: O/Rマッピング技術の進化が皮肉にも助長している「えせMVC症候群」
Amazonクラウド、ついにJava対応PaaSの「Beanstalk」発表。Ruby on Rails対応も準備中 - Publickey
2010-09-10 - 最速配信研究会(@yamaz)
RubyKaigi 2009 の 不完全ustリンク集 - kawaguti の日記 (id:wayaguchi)
DOAはRailsの銀の弾丸か - 書評:エンタープライズRails - yvsu pron. yas
Railsプログラマが知っておくべき97のこと

1月の人気エントリーをタグ別にランキングしてみた

1月ももう終わりますね

さすがに正月ボケも抜けきりましたか?
2011年1月の人気エントリーをタグ別でまとめて見たいと思います。
タグトップ10とそのタグの中でよりブックマークを集めたエントリートップ10
計100エントリー(長すぎたかなぁ)を一挙に紹介!!
※注意※
ブックマーク数の順になっていないのは、
そのエントリーについたタグの数で並べているからです。
わかりにくいか・・・

ん〜長いლ(╹◡╹ლ)

こんなに下まで見てくれた方ありがとう
いつかはここにあがるようなエントリーが書きたいなぁ(☄ฺ◣д◢)☄ฺワシャー

あ、ブックマークしてくれるととても喜びます
このエントリーをはてなブックマークに追加