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

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

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

A 回答 (2件)

No.1で回答した misoka ですが、


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

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

参考URL:http://www.sqlpowerpage.co.jp/Sqlcmd/createseque …

この回答への補足

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

補足日時:2002/03/07 12:31
    • good
    • 0
この回答へのお礼

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

お礼日時:2002/04/01 00:33

ご存知のことかもしれませんので、恐縮ですが、


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

このQ&Aに関連する最新のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


このカテゴリの人気Q&Aランキング

おすすめ情報

カテゴリ