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

締切り済みの質問

オラクルエラー

ORA-01555
スナップショットが古すぎます
というエラーがでるのですがどう対処していいのか
わかりません、、、。

スナップショット??
ロールバック・セグメント??

って感じです。

宜しくお願いします。

投稿日時 - 2003-04-16 14:14:38

QNo.524229

困ってます

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

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

回答(5)

ANo.5

jkz

> ・ロールバックセグメントを増やす
> ・ロールバックセグメントサイズを大きくする
の他の対処として以下があります。

1.読込み処理のクエリが短時間でおわるようにする。
ロジックを見直すとか読み込み範囲を減らして
複数回に分けて処理するなど。
2.読込み処理中に大量データの更新処理がある場合は
同時間帯に動かないように運用する。

投稿日時 - 2004-07-22 01:28:27

ANo.4

こんばんは。

まず、前提として
・ロールバックセグメント
これは変更処理時の変更前情報が取ってある表(セグメント)のことです。ロールバックできるのはこれがあるからです。

・読み取り一貫性について
オラクルはSQL発行時にDBに確定されているデータだけを返します。他のユーザが変更中のデータは見ません。


オラクルはSELECTを行った時にDBに確定(COMMIT)されているものだけを読み取るようにできています。
SELECTが長い場合はSELECTの始点から終点までの間にSELECT対象データが他セッションによって変更されると見れないですね。

そんな時は変更前情報が格納されているロールバックセグメントを見ます。
でもロールバックセグメントの情報はCOMMITされると消える可能性があるのです(ロールバックされないことが保証されるから)。
そしてその情報は上書きされます。これが、SELECTの始点から終点の間にされてしまうと、以下のような状態に陥ります。

SELECTする→変更データがある→読み取り一貫性によってロールバックセグメント情報を見る→でも既に情報が上書きされている→対象データはどこにも無い→ORA-1555発生

このエラーの対処法は
・ロールバックセグメントを増やす
・ロールバックセグメントサイズを大きくする

です。

投稿日時 - 2003-04-16 23:47:11

ANo.3

 
補足ですが、No.2さんが書いておられるエラーコード検索の対象となるのはOracle 9i以降です。
ただし、このエラー(ORA-01555)は旧バージョンでも、原因、対処法はたぶん変わらないはずですので、9iの情報でも適用(応用)可能だと思います。
(8iの時代に研修でこのエラーについての解説を聞いた記憶があります。肝心の内容は憶えてませんが・・・)

投稿日時 - 2003-04-16 16:37:19

ANo.2

こんにちは。
お使いのオラクルのバージョンとOSはなんでしょうか?

↓が参考になるかと思います。

OTNサイトで、エラー番号から簡単な対処法を
検索する事ができます。(無料のユーザ登録が必要)
(上部メニューから、お客様情報>新規登録)
まぁ、ほんとに簡単な説明しかでませんが・・・。

基本的な対処方法としては、
・RBSを大きくする
・RBSの数を増やす
方法で回避できます。

もし、サポート契約をしているのでしたら、
サポートに問合せたほうが良いかと思いますよ。

参考URL:http://otn.oracle.co.jp/document/msg/index.html

投稿日時 - 2003-04-16 15:40:16

ANo.1

はじめまして。

オラクルのバージョンはいくつでしょうか?
どういった形態で、ご使用をされているのでしょうか?VB?PL/SQL?Aceess?
どういった処理を行った場合に、その様なエラーが発生するのでしょうか?
出来れば、エラーメッセージも全てご記述願います。

またまた、思い込みで回答いたします。(→これが、はずすんだよなぁ(^^;)
>スナップショット??
>ロールバック・セグメント??
このケースは、ロールバックセグメントが足らなくなった場合に発生します。簡単にいいますとロールバックセグメントとは、Winアプリでいうアンドゥ処理を行うために必要なセグメントです。
データの更新を行って、更新を確定させるのに「COMMIT」を使用します。更新の取消なら「ROLLBACK」を使用します。
大量のデータ(数万件以上)を何回も、コピーしたり更新をかけていると、上記理由でロールバックセグメントが足らなくなり。ご質問のエラーとなっていると思います。
スナップショットうんぬんは、おまけのように出てきます。

回避方法は、2つです。どちらかやれる方法でお試しください。

1:物理的にロールバックセグメントを増やす事。→オラクル自体の再セットアップしないと出来ません。
2:処理の途中に「COMMIT」を入れる。→処理速度は遅くなる。

2がお勧めです。「COMMIT」の度に、ロールバックセグメントが開放されますので、ご質問のエラーはでなくなると思います。

投稿日時 - 2003-04-16 15:33:52

あなたにオススメの質問