↓うpひろいもの
(・∀・)カワイイ!
toritoriです。
エンジニア日記なのに、あんまりそれっぽいこと書いてないので、
ネタ切れたらORACLE話でもすることにしました。
そんなわけで第一回目。
こないだ仕事中、Fさんに
「この画面で連番振ってるんだけど、欠番出ちゃうんだよね~。調べてくれる?」
と頼まれました。
しゃーねーなー、と思いつつソース追っかけたら
案の定オラクルシーケンス使ってました。
さらに調べたらキャッシュも使ってるし。
実際のデータ見てみると、大体しばらくしてからシーケンスにアクセスすると
キャッシュに指定されてる「20」ずつ増えてるようなので、
キャッシュが破棄されて欠番が出来てる模様。
…、そういやシーケンスのキャッシュって
どこにされて、どのタイミングで破棄されるんだろう?
気になったので調べてみました。
とりあえずマニュアルを見てみると↓
格納先→SGA(データディクショナリキャッシュ)
破棄のタイミング→よくわからず
という感じでした。
というかわかりませんでした(泣)
まあ、実際登録されたデータ見ると一時間周期くらいで破棄されてるので
適当なとこで捨てられてるようです(解答になってないな…)
一応、V$ROWCACHEビューのdc_sequenceを見るとディスクから取得した回数がわかりますよ~
(多分…)