最新 追記

これ日記なん?


2005-02-07(Mon) [長年日記] この日を編集

_ 定期券

今日、警察から連絡があった。やっぱり落としてたらしい。明日とりに行く。


2005-02-08(Tue) [長年日記] この日を編集

_ 定期券再び

警視庁遺失物センターにて受領。どうも帰りの新幹線の中で落としたらしい。てことはそれまではちゃんと持ってたのか。やっぱり目視じゅーよー。

_ [ORA]マテリアライズド・ビューのマスタ表再編成時の注意。

DBMS_MVIEW.BEGIN_REORGANIZATION を最初に実行。終わったらDBMS_MVIEW.END_REORGANIZATION を実行。つか、PL/SQLパッケージリファレンス読んだらわかるように書いててちょーだい>おらくる。

_ 再編成した後の効果測定。

V$SYSSTAT の table scan continued rows で連鎖行へのアクセスが発生しているかどうかはわかる。ANALYZEでも確認はできる。

じゃなくて、読込みブロック数が減ってるとか、CPU消費が減ってるとか、レスポンスがよくなってるとか、なにか指標に使えるものないのかな?


2005-02-09(Wed) [長年日記] この日を編集

_ 最終予選第1戦

一点とられたときはどうなることかと思った。なかなか点がとれない...。

んがっ。最後の最後で大黒がくるっと反転してゴール!よくやった!


2005-02-11(Fri) [長年日記] この日を編集

_ ズバリ自動化

を買ってみた。達人プログラマーに曰く「普段CUIの人はGUIを、GUIの人はCUIを使ってみるべし」

で、ORACLEパフォチュー調査ってことで、dba_tables とか v$sqlarea とか、タブ区切りで落っことしたファイルをこね回す作業をやってみた。あたりまえだが、SQLと違ってアクセスパスを明示しなきゃいけないわけで面倒といえば面倒。ていうかちょっと前はJCLやらシェルやらでこういうの書きまくっていたんだがすっかりなまってしまっている。いかんな。

ツールそのものは悪くはないと思うが、PersonalEditionというわりには機能がちょっと固め。Server版とは微妙に互換がないらしいが、それならもうちょっとデスクトップユーザ向けに機能をふってもいいと思う。たとえばビューでわざわざ精度をいれないといけないのだが(データから推測してくれる機能はもちろんあるが)適当に定義して動くモード(項目長未定)があってもいいんじゃないかと。できっちり定義すること”も”できると。

後、ビュー=ファイルなので、複数ファイルを一気に処理したい場合はそれなりに数定義しないといけないのが面倒。ついついcat か grep で粗加工して持ち込んでしまうのだが、このツールの中からは起動できないんだよねー。Serverならできるんだが。差別化とはいえもうちょっとユーザが拡張できるようにしてくれてたら盛り上がると思うんだけどねー。だってServer高すぎだし。

_ [ORA]ORACLEハイパフォーマンスチューニングSQL編

ついつい買ってしまったんだが、やはり奥が深い。ストアドアウトラインがかなり使えそう。使いこなせれば、だが。

あとCTAS(create table as select)はあたりまえっちゃああたりまえだが意外と盲点。今回は alter table ... move で済ませたつもりだったんだがよくよく考えてみたら物理順は変わらん(はず)だから、インデックス再構築による不要ブロック消去分しか効果がなかったわけだ。ということはまだ再構築だけで効果がだせる余地があるってことだな。しかしTRUNCATEするだけで権限落ちちゃうから、スクリプト生成とチェックツールを準備しなくては。

_ 昨日は

出向元の本社で説明会があったし、午前中は予定があったんで会社はお休みにした。で、意外とはやく予定が終わったので、アキバとかをぶらぶら。上2つはラオックスで。

丸の内の丸善でまた違う本を2冊。ポストイットをひとつ。久々の本屋さんだったので財布の紐がゆるんじゃったかな。

[ORA]

本日のツッコミ(全3件) [ツッコミを入れる]

_ play online poker [Definitely you understand the plot's central nature, you c..]

_ online casino [The one competition has a protracted life of making head b..]

_ cialis [Une liste des sites de casino en ligne francais parmi les ..]


2005-02-13(Sun) [長年日記] この日を編集

_ [ORA] dba_indexes.clustering_factor

テーブルのブロック数に近いとインデックスのならびに近いから、複数行を処理するとして、テーブル側のROWIDを引くとき、ブロックがすでに読まれてる確率が高くなる。テーブルの行数に近いとバラバラだからブロック読み直しまくりかも、ということらしい。

その観点で見直すと...だめだこりゃ(ちょーさん風)。ORACLEの気持ちになれば「んなインデックスつかってられっかい!テーブルフルスキャンしたほうがリソース少ないんじゃ!」てな感じかも。


2005-02-19(Sat) [長年日記] この日を編集

_ 未踏ユース報告会

行ってきた。雨降ってたし、仕事に行くか迷っていたので結局Rubyセッションだけ。自分は使うだけのユーザなんだが、たまにこういうの行くと面白いな。

つか、初めて早稲田大学に行った。入試だかなんだかでえらいものものしかったが。とにかく寒かった。

_ [ORA]廃棄インスタンス復活

以前テストで使ってて削除もしないでほったらかしのインスタンスがあるので、それを復活させる予定。これを使って、データベースリンク越しに本番からデータを持ち込んでテスト環境をもう一個作る。 うまくいったら、本番データベースを再編成するときに使えるか?

  • スナップショット反映を事前実行。マテリアライズドビューログを空にする。
  • 本番側データベースを物理バックアップ。ノンアーカイブログモードに。
  • データベースリンク越しにコピー。そのときに既存INDEXをヒントで指定して物理的に並び替える。
  • 本番側INDEXをUNUSABLEにするとか、DBMS_MVIEW.BEGIN_REORGANIZEしたりとか。
  • 本番側をTRUNCATE。
  • コピーを書き戻す。当然 appendヒントつき。
  • INDEX REBUILD。
  • 高速スナップショットを実行してみて確認。
  • 全部終わったら物理バックアップ&アーカイブログモードに戻す

imp/expでもいいわけだけど、impするときにダイレクト書き込みとかなさげだしな。

ていうか廃棄データベースを復活させられるかどうかが分かれ道なんだが、できるんかいな。


2005-02-26(Sat) [長年日記] この日を編集

_ [Ruby][ORA]Ruby/OCI8 バイナリ(mswin/mingw) http://rubyforge.org/frs/?group_id=256

があったとはしらなんだ。

$ c:/usr/local/bin/ruby -v
ruby 1.8.1 (2003-12-25) [i386-mingw32]
$ c:/usr/local/bin/ruby ruby-oci8-0.1.9-mswin.rb
Installing Ruby/OCI8 win32 binary 0.1.9
Copy OCI8.rb to c:/usr/local/lib/ruby/site_ruby/1.8/DBD/OCI8
Copy oci8.rb to c:/usr/local/lib/ruby/site_ruby/1.8/.
Copy oci8lib.so to c:/usr/local/lib/ruby/site_ruby/1.8/i386-msvcrt/.
OK?
Enter Yes/No: yes
ERROR:
Copying OCI8.rb to c:/usr/local/lib/ruby/site_ruby/1.8/DBD/OCI8 ...
uninitialized constant Installer::Base64

$ (修正)

$ c:/usr/local/bin/ruby ruby-oci8-0.1.9-mswin.rb
Installing Ruby/OCI8 win32 binary 0.1.9
Copy OCI8.rb to c:/usr/local/lib/ruby/site_ruby/1.8/DBD/OCI8
Copy oci8.rb to c:/usr/local/lib/ruby/site_ruby/1.8/.
Copy oci8lib.so to c:/usr/local/lib/ruby/site_ruby/1.8/i386-msvcrt/.
OK?
Enter Yes/No: yes
Copying OCI8.rb to c:/usr/local/lib/ruby/site_ruby/1.8/DBD/OCI8 ... done
Copying oci8.rb to c:/usr/local/lib/ruby/site_ruby/1.8/. ... done
Copying oci8lib.so to c:/usr/local/lib/ruby/site_ruby/1.8/i386-msvcrt/. ... done

OK

こけちゃったので簡単に修正。

$ diff ruby-oci8-0.1.9-mswin.rb.orig ruby-oci8-0.1.9-mswin.rb
96c96
<         str = Base64.decode64(content)
---
>         str = decode64(content)

会社では Oracle9i 9.0.1.4.0 につながりました。select * from v$instance をちゃんと検索できましたよん。感謝。

これで oo4o 一辺倒から選択肢が増えたわけだ。本当は、Oracle9iの走ってるSolaris上でも使えるようにしたいんだけど。で、WindowsとSolarisでスクリプトを使いまわしたい。スクリプトはCVSに入れて同期して。

それからやりたいのはdruby、っていうかTuppleSpaceをSolarisにあげといて、OracleとTuppleSpaceにつなげるスクリプトを書きたい。それをWebとかから参照してみたり。

_ msvcr71.dll

やはり手元のマシンには入ってなかったようなんでぐぐってもらってきたわけですが。

http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vclib/html/_crt_c_run.2d.time_libraries.asp

では、システムディレクトリには「入れんといてくれ」と書いているのに、他の配布サイトには windows/system32 に入れろっていう記述の多いことよ。

ちなみに Ruby/OCI8のインストーラは ruby と同じディレクトリをチェックしてたんでそこに入れました。

つか、なんでマイクロソフトは自社サイトで配布しないんでしょうね。

_ [Ruby] Hiki 0.7-devel-20050214

手元のhikiをcurrentに。元々そんなに遅くはなかったからはやいという気はしないけど(^^;、管理画面でプラグイン選択できるようになってるのは便利だ。会社のも上げるか。如何にイントラ&クローズ運用とはいえ、0.5を使い続けてるのは気がひける。

_ [Ruby] mingwで日付がおかしい

ので手元で修正。

--- view.html.orig	2005-02-27 00:45:23.000000000 +0900
+++ view.html	2005-02-27 00:44:35.000000000 +0900
@@ -17,7 +17,7 @@
   <div class="day">
     <div class="comment">
       <div class="caption">
-        <%=@conf.msg_last_modified%>:<%= @contents[:last_modified] %><br>
+        <%=@conf.msg_last_modified%>:<%= @contents[:last_modified].strftime("%Y/%m/%d(%a) %H:%M:%S") %><br>
         <%=@conf.msg_keyword%>:<%= @contents[:keyword] %><br>
         <%=@conf.msg_reference%>:<%= @contents[:references] %><br>
         <div><%= @contents[:page_attribute] %></div>

ViewがMODELから分離されているのって素晴らしい。

ちなみにこんなRuby。

$ c:/usr/local/bin/ruby -ve 'puts Time.now.strftime("%Z")'
ruby 1.8.1 (2003-12-25) [i386-mingw32]
東京 (標準時)