こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

oracleのシーケンスについて

こんにちは。oracleのシーケンスについて教えてください。
次のようなシーケンスを作成します。

CREATE SEQUENCE SQC_TEST
INCREMENT BY 1
START WITH 1
MAXVALUE 999999
MINVALUE 1
CASHE 20
CYCLE
/

この時、キャッシュ分の20という値は、いつどこでクリア?されるのか知りたいのです。
一番最初はシーケンスをクリエイトした時にキャッシュが20確保されると思うのですが、次にキャッシュが確保されるタイミングっていつなんでしょう?
最初の20を使い果たした時?それともシーケンスを作成してあるインスタンスをリブートした時??
というのは、設定したシーケンスが、実際発番していないのに一日ごとに20ずつカウントされていってるので原因をつきとめたいのです。
とりあえずはNOCACHEに設定してありますが、原因がわかれば、と思い質問させていただきました。
何かアドバイスいただけたらと思います。宜しくお願いいたします。

投稿日時 - 2002-03-06 13:19:38

QNo.230132

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

No.1で回答した misoka ですが、
No.1の回答は、全然正確ではなかったようです。
失礼いたしました。

参考URLを参照してみてください。
キャッシュは、最初の要求で確保され、次回の確保は
「CACHE要求」があったときのようです。
システム障害が発生すると、キャッシュされた番号が
失われる可能性がある、と書かれています。

参考URL:http://www.sqlpowerpage.co.jp/Sqlcmd/createsequence.htm

投稿日時 - 2002-03-07 02:49:45

補足

こんにちは。回答ありがとうございます。
参考URL拝見しました。大変勉強になりました。
しかし、まさしくその、「次にCACHE要求がある」タイミングが
いつなのか、というのを知りたいのです。
また何かわかりましたら教えてください。
宜しくお願いします。

投稿日時 - 2002-03-07 12:31:22

お礼

遅くなりましたが、これ以上待っても他のアドバイスをいただけないようなのでこの辺で締め切らせていただきます。
misokaさん、アドバイスありがとうございました。
勉強になりました。
また何かありましたらよろしくお願いしますね。

投稿日時 - 2002-04-01 00:33:50

ANo.1

ご存知のことかもしれませんので、恐縮ですが、
CACHE は、次回の採番を高速に行うために、
あらかじめメモリ上に展開しておく順序番号の量のことです。
ですから、20を指定しているなら、常に20分確保されている
のではないか、と思います。
振り出される番号がおかしいのなら、試しに ORDER を指定
してみるというのも手かもしれません。

投稿日時 - 2002-03-07 02:37:22

あなたにオススメの質問