Oracle Redo Log の Transaction ID取得に失敗する場合【リアルタイムレプリケーションツールDBMoto】


DBMoto のミラーリングのプロセスで、Redo Log のトランザクションID をチェックし、
利用できないID がないかどうかチェックする際に、以下のエラーが発生することがありま
す。

通常、この問題はOracle のログが小さい為に、必要とする全てのトランザクションID を
含むことができない場合に起こります。

ORA-01293: time or SCN range not fully contained in the listed logfiles.
(ORA-01293: 時間またはSCN 範囲がリストされたログファイルに含まれていません。)

Oracle はトランザクションを巡回手法でログします、さらにそれはRedo ログファイルを
順番に使用します。現在のファイルが最大サイズに達すると、Oracle はそのファイルの
書き込みを止め、次のファイルに継続して書き込みを行います。(もし次のファイルが既に
データを含んでいる場合は、データは上書きされます。)

もし1つのDBMotoリードから次へ(DBMoto の「Read Interval 」の設定)の時間で、すべ
てのオンライン・ログファイルがシーケンス番号(例:それぞれの指定したログファイルの
シーケンシャルな書き込み)を変えた場合、ログファイルは容量不足か、ログするトランザ
クションの量を再考するか、ログファイルが少なすぎるかです。Oracle のシステム管理者
に問い合わせて、ログファイルのサイズと数が最適であることを確認して下さい。

一般的なガイドラインとしては、ログのサイズは、データベースで発生するトランザクショ
ンの数とRetention time(保有時間)に基づいてください。
例えば、もしユーザが72 時間分のログを常にリカバー可能な状態にしたいのであれば、
3日間で発生する全てのトランザクションを含める様にログを定義してください。

Oracle ログファイルはサイズを増強するか、または新しいログファイルを加えて再構成を
することができます。
ログファイルサイズに対応が難しい量に増加させるより中規模なログファイルを作成するこ
とを考えてください。
詳細な情報については、Oracle のデータベース管理者に問い合わせてください。
DBA にはOracle の環境に最も適した見解があります。

ログファイルの上書きを許可していて、ログファイルのサイズが上限に達している場合、
DBMoto は開始時に、次に処理するトランザクションの場所を見つけることができないかも
しれません。
この現象が発生する場合、ミラーリングを再開する前に、全てのレプリケーションをリフレ
ッシュする必要があります。
また、ユーザはこの問題を解決する為に、DBMoto の動作を変更することができます。:

 DBMoto のRead Interval から、頻繁にログとミラーのデータを読むように設定してく
ださい。Read interval のデフォルト値は60 秒です。

1. 「DBMoto Enterprise Manager」のツリーから「Replication」を選択し、
「Enable Replication」メニューの項目をクリックしてチェックマークを外し、
Replication を無効にします。
2. DBMoto Enterprise Manager のツリーから、Replication を選択します。
3. マウスの右ボタンメニューから、「Replication Properties」を選択します。
4. Replication Properties のダイアログでは「Preferences」タブを選択します。
5. 現在値より低いRead Interval の値を設定します。この値はseconds(秒)で表示
されます。この値は、あなたの環境に依存します。
また、どの位の頻度で新しいトランザクションのチェックをするかにもよります。
設定の適正値を見つけるまで、いくつかの異なった設定を試みる必要があります。
6. 「OK」ボタンを押下し「Replication Properties」ダイアログを閉じます。
7. 「DBMoto Enterprise Manager」ツリーから「Enable Replication」をクリックし、
レプリケーションを有効にします。

 ソース接続の「Connection Properties」を開き、「Setup Info」ダイアログから
「Read Archived Logs」オプションをチェックし、利用することができます。このアプ
ローチはあなたのオラクルデータベースが「ARCHIVELOG モード」を使用する場合
にのみ有用です。それは、DBMoto がオンラインredo ログからトランザクションを見
つけることができなかった場合、archived redo ログを探すことを可能にします。

1. 「 DBMoto Enterprise Manager 」のツリーから「Replication 」を選択し、
「Enable Replication」メニューの項目をクリックしてチェックマークを外し、
Replication を無効にします。
2. 「DBMoto Enterprise Manager」のツリーからソース接続を選択します。
3. マウスの右ボタンメニューから、「Connection Properties」を選択します。
4. 「Connection Properties」ダイアログの「Transactional Support」の項目にス
クロールします。
5. 「Transaction Log Type」のフィールドの値をクリックします。
6. ボタンを押下します。
7. 「Setup Info」ダイアログでは、「Read Archived Logs」をチェックします。
8. 「OK」ボタンを押下し、「Setup Info」ダイアログを閉じます。
9. 「OK」ボタンを押下し、「Connection Properties」ダイアログを閉じます。
10.「DBMoto Enterprise Manager」ツリーから「Enable Replication」をクリックし、
レプリケーションを有効にします。

【原文】
The following error occurs when a DBMoto mirroring process checks for a
transaction ID in the Redo Log that is not available.
Typically, this happens when the Oracle logs are too small to contain all the
transaction IDs needed.
ORA-01293: time or SCN range not fully contained in the listed logfiles.
Oracle logs its transactions in circular fashion, that is, it uses the redo log files in
sequence.
When the current file reaches its maximum size, Oracle will set its status to
inactive and will keep writing to the next file.
If the next file already contains data, it could be overwritten.
If all online log files have changed sequence number (i.e. the writing sequence of
each specific log file) in the period between one DBMoto read and the next (Read
Interval setting in DBMoto), the log files may be underdimensioned, considering
the amount of transactions to log, or there may be too few log files. Check with
your Oracle system administrator to make sure the size and number of log files is
optimized.
As a general guideline, the size of the log should be based on the number of
transactions generated in the database and based on the retention time.
For example, if you want to be sure you can recover for 72 hours, you should
define your logs to contain all the transactions that can be generated in 3 days.
Oracle log files can be re-dimensioned by either increasing the log file size or by
adding new log files.
You may want to consider creating more medium-size log files rather than
increasing log file size to a value that could make it difficult to handle.
Contact you
r Oracle database administrator for more information. Your DBA has
the best understanding of your Oracle environment.
If you allow the log files to fill up and begin overwriting, DBMoto may not be able
to locate the next transaction to process.
If this occurs, you need to perform a full refresh replication before resuming the
mirroring.
You can also modify DBMoto behavior to resolve this problem:
 Set the Read Interval in DBMoto to read the logs and mirror data more
frequently. The default read interval is 60 seconds:
1. Disable the replication by selecting it in the Enterprise Manager
tree, and clicking the Enable Replication menu item to remove the checkmark.
2. Select the replication in the Enterprise Manager tree.
3. From the right mouse button menu, choose Replication Properties.
4. In the Replication Properties dialog, go to the Preferences tab.
5. Set the value of the Read Interval field lower than the current value.
The value is displayed in seconds,
The value you choose depends on your environment and how often you
want to check the log for new transactions.
You may need to try several different settings until you find one that works..
6. Click OK to close the Replication Properties dialog.
7. Enable the replication by selecting it in the Enterprise Manager tree,
and clicking the Enable Replication menu item so that it displays a checkmark.
 Check the Read Archived Logs option in the Setup Info dialog available
from the Connection Properties dialog of the source connection.
This approach is useful only if your Oracle database uses ARCHIVELOG
mode.
It enables DBMoto to search archived redo logs if transactions cannot
be found in the online redo logs.
1. Disable the replication by selecting it in the Enterprise Manager
tree, and clicking the Enable Replication menu item to remove the checkmark.
2. Select the source connection in the Enterprise Manager tree.
3. From the right mouse button menu, choose Connection Properties.
In the Connection Properties dialog, scroll to the Transactional Support
section.
Click on the value for the Transaction Log Type field.
4. Click the ellipsis button.
5. In the Setup Info dialog, check the option Read Archived Logs.
6. Click OK to close the Setup Info dialog.
Click OK to close the Connection Properties dialog.
Enable the replication by selecting it in the Enterprise Manager tree, and
clicking the Enable Replication menu item so that
it displays a checkmark.

http://www.hitsw.com/support/kbase/DBMoto/DBMoto_1584_OracleRedoLog.htm

関連したトピックス