書き込んだデータは別セッションからは参照できず、またREDOログを作成しないためINSERT処理が早いらしい。
これまで使ったことが無い機能なので試してみる。
環境
OS:Windows Server 2008 R2
DB:Oracle Database 11.2.0
DB:Oracle Database 11.2.0
一時表の作成
"CREATE GLOBAL TEMPORARY TABLE ~" という命令で作成できる。
なぜ "GLOBAL" が付くかであるが特に意味はない?ようで "そのようなもの" と思っておいた方が良い。
なお 18c以降は "CREATE PRIVATE TEMPORARY TABLE ~" というのが使えるそうで、このように指定するとテーブル自体もセッションまたはトランザクション終了時に削除されるらしい。
"ON COMMIT ~" は、登録したレコードを "コミット時に削除するか(DELETE ROWS)"、"セッション終了時に削除するか(PRESERVE ROWS)" のどちらかを指定する。
通常のテーブルと異なり、作成先の表領域は指定しない (一時表領域に作成されると思われる)
CREATE GLOBAL TEMPORARY TABLE スキーマ.テーブル名 ( 列名 データ型, 列名 データ型, : ) ON COMMIT [DELETE ROWS | PRESERVE ROWS] ;作成は通常のテーブル作成とほぼ同じで、"CREATE TABLE ~" のかわりに "CREATE GLOBAL TEMPORARY TABLE ~" を指定する。
なぜ "GLOBAL" が付くかであるが特に意味はない?ようで "そのようなもの" と思っておいた方が良い。
なお 18c以降は "CREATE PRIVATE TEMPORARY TABLE ~" というのが使えるそうで、このように指定するとテーブル自体もセッションまたはトランザクション終了時に削除されるらしい。
"ON COMMIT ~" は、登録したレコードを "コミット時に削除するか(DELETE ROWS)"、"セッション終了時に削除するか(PRESERVE ROWS)" のどちらかを指定する。
通常のテーブルと異なり、作成先の表領域は指定しない (一時表領域に作成されると思われる)
Oracle学習
0 件のコメント:
コメントを投稿