Oracle8iから一時表というものが使えるようになっている。
一時表とは、一時的にデータを格納しておく表のこと。これを使用すると他のセッションから
独立して、プライベートデータを扱うことができる。
この一時表はCREATE GLOBAL TEMPORARY TABLEで作成できる。
ON COMMIT PRESERVE でセッション固有の一時表。
ON COMMIT DELETE でトランザクション固有の一時表。
これで問題なく一時表として使用できるのだが、問題はここから発生した。
後輩:ツッパリさん、一時表作成したんですけど、参照している表領域がここで問題ないですか?
後輩はOracle Enterprise Manager Console(以下OEM)で作成した一時表の詳細を見ていた。
一時表なのに、なぜか永続表領域に結びついている。
ツッパリ:表領域は一時表領域で作成した?
後輩:しました。
デフォルトの一時表領域が小さかったので新たに作成したのだが、一時表領域は問題なく
作成できている。
ツッパリ:CREATE GLOBAL TEMPORARY TABLEで一時表領域なんて指定しなかったよな?
後輩:しなかったはずです。
一応マニュアルを確認。
・・・・・
やはりCREATE TABLEのようにTABLESPACEは指定していない。
ツッパリ:指定しないし、一時表として作成しているんだから、問題なく一時表領域に作成
されるはずやけど、原因が分からないから調べてみようか。
後輩:はい。
・・・
・・・
十数分後。
後輩:詳しい人は誰かいないんですか?
ツッパリ:・・・、何人かいるけど、もう少し調べた後でな。
後輩:・・・。
俺は直ぐに誰かに聞くのは嫌いなので、少し表情が変わったのかもしれない。
だから、後輩は黙ったのかもしれない(-_-)反省。
でも、トラブル時ならいざ知らず、殆ど何も調べずに人にものを尋ねるのは好きではない。
・・・
・・・
時間が過ぎていく。
ツッパリ:マニュアルにもネットにも載ってないなぁ。
後輩:有りませんね。
ツッパリ:でも、これって8iの途中から使用できるようになっているみたいやから、使用してる
人いるかなぁ。まぁ、聞いてみるよ。
・・・
管理者数人、PL/SQLを鬼のように作成している人などに直接または電話で聞いてみるが
使用している人はいなかった。
ツッパリ:誰も知らなかったよ。
後輩:私も聞いてみましたが、駄目でした。
ツッパリ:調べてて思ったんだけど、多分一時表領域に出来るよ。
後輩:でも、通常の表領域を参照してますよ。
ツッパリ:見た目はな。OEMが怪しいような気がするんだよなぁ。
後輩:なぜですか?
ツッパリ:なんとなく。
後輩:・・・(疑わしい目つきで俺を見ている)
経験上のなんとなくなんだけど、まぁ、納得しないのも分かる。
でも、当たるのよ、このなんとなくが。
ツッパリ:このままテストして一時表領域が使用されているか確認してみよう。
後輩:えっ、どうやって確認するんですか?
ツッパリ:動かした時に一時表領域の大きさが増加しているかどうか見れば分かるよ。
後輩:あ、そうですね。
テストを行ってみると、予想通り一時表領域が増加した。
ツッパリ:んー、OEMに騙されたな。
後輩:でも、なぜなんでしょうね?
ツッパリ:GUIを信じ過ぎてはいけないってことやな。
後輩:なぜですか?
ツッパリ:本来CUIだけで作業できるんやけど、GUI使った方が楽に出来るやろ。でも、GUI
にするってことはそこに複雑なプログラムが介在することになるからバグも発生し
てくる。そういうこと。
後輩:・・・。(複雑な表情)
経験が浅いのとWidows以外知らない後輩なので、納得行かないのもわかる。
これが、Unix互換のOSの管理を行ったことがあればCUIを使いまくるので、理解し易いのだが。
今回は、私のOracleの知識が未熟な所為と一時表という特殊なもののため解決に時間が掛
かってしまったが、私にも後輩にも良い経験になった。
さぁ、基本から勉強しよう(^_^;