2011/7/25 月曜日

一時表

カテゴリー: ORACLE, SQL — mori @ 19:23:47

社内のDBが別のDBに移行され、かなり使い勝手が悪くなったがいろいろエラーが出るのでそれを解消していくのが勉強になる。

そこで今回は【一時表】について。

アーカイブログを出力しないと言うことで一時表を使うことになりました。
黒本にはCREATEしか載ってなく、INDEXとかVIEWも普通のテーブルと同じように作れるとしか書いてない。
で何にてこずったかというと、セッション内保有の一時表を作って最後にいらなくなった時点でDROPしようとしたらエラーになった。

ORA-14452:
すでに使用されている一時表で索引を作成、変更または削除しようとしました

なんだそれ。と調べてみると、一時表内にデータがあると削除することができないようで。多分ね。で対処方法はDROPの前にTRUNCATE するとDROPが出来ると。
テーブル作成時はCREATE GLOBAL TEMPORARY TABLE ~ AS SELECT~で作成と同時にデータを作成。これをトランザクション保有で作成したところ枠しか作られなかった。ddlだからだ。。。(アホなことした)
基本的にはCREATEしてINSERTしてCOMMITせず使って、不要な時点でCOMMITしてDROPみたいな感じか。
でもやっぱややこしいのでTRUNCATE分をいやだが入れてDROPすることにする。

続いて、INDEX。

これも同じエラーが出た。普通のテーブルとちゃうやんけと調べる。
この場合は、テーブル作成は枠を作った後にちゃんとINSERTしてる。でCREATE INDEX。この順番がダメみたい。
INDEXをINSERTの前に作れば正常に作成される。ややこし。まぁここは順番入れ替えるだけなんで採用!

ふーっ、ちょっとしたスキルアップしたぞぉ。

そうそう、試験を7月に延期したといいましたが、もっと遅らせます。。。

2011/5/29 日曜日

ネームスペース

カテゴリー: ORACLE — mori @ 9:16:22

久しぶりです。
Silverやっててなんじゃそれと思ったこと。

同一のスキーマで同じ名前のオブジェクトなんてのはタブーなのだが、ここが完全に思い込んでいた。
テーブルをクリエイトしてそのテーブルのカラム1に対しテーブル名と同じ名前のインデックスを作成できるか?という問いでできるはずがないと思っていたが、ここでのインデックスは作成できる。
なぜならオラクルにはネームスペース(スキーマごと?)というものが存在し、その中では同じオブジェクト名をつけることができないとのこと。このネームスペースが2つあり、テーブルとインデックスのネームスペースが別だからだ。

ネームスペース①
・テーブル
・ビュー
・マテビュー
・シーケンス
・プライベートシノニム
・プロシージャ
・ファンクション
・パッケージ

ネームスペース②
・インデックス
・制約
・トリガー
・データベースリンク
・クラスタ
・ディメンション

①は覚えるのが面倒なので②だけ覚えた。
そして実際にやってみたが出来た。
実際に各オブジェクトを作成するとくはプレフィックスなんかを決めて作成しますがね。

パブリックシノニムは?と思ったがグローバルに使用されるのでここには入らず、
非スキーマオブジェクトとして以下
・ユーザー
・ロール
・パブリックシノニム
・パブリックデータベースリンク
・表領域
・プロファイル
など

パブリックデータベースリンク?ってことはネームスペース②のはプライベートデータベースリンクのこと。

 

黒本以外の問題集をやっていると、黒本に書いてないことがたくさんあると実感。
ここにも書いてないこともありそうなのでまだまだ合格レベルでなさそうだ。
当初6月と言っていたが、7月に変更する。

2011/1/27 木曜日

だんだん

カテゴリー: その他 — mori @ 20:26:32

Silverの黒本に慣れてきました。
基本的に電車内での話ですが。

ちょっと前にBronzeの内容を見たく黒本出したところ、なんじゃこの薄さはと、びっくりしました。
慣れた証拠ですね。

内容も慣れてきたかな。まどまだ『?』がたくさんあるけど、順に理解していく。その繰り返しで力をつけていこうと思います。

次ページへ »

HTML convert time: 0.093 sec. Powered by WordPress ME