●CURRENT_DATE:セッションのタイムゾーンでの、現在の日付を返します。
●SYSDATE : データベースが稼働するオペレーティングシステムの現在の日付と時刻を返します。
Oracleでのトランザクション処理は通常Redoログに記録されますがRedoログはローテーション管理のため、指定のサイズに達し、Redoログのグループが切り替われば古いログは消えてしまいます。
DBMotoでは通常、DDL文であるTRUNCATEなどによる変更はミラーリングを行いません。
しかしAS/400において、CLRPFMやCPYFをREPLACEオプションつきで実行した場合などにはミラーリング先のデータベースに対してTRUNCATEを使用した操作を行います。
※ただし、レプリケーション対象であるAS/400物理ファイルのメンバー名とファイル名が異なる場合は、TRUNCATEが実施されません。
DBMotoで差分レプリケーション(ミラーリング・シンクロナイゼーション)を行う場合には、トランザクションログを参照してどのレコードでトランザクションがあったかを識別させるためにデータベースのテーブルに主キー(PK)が必要です。もちろん複合キーでも可能です。
DBMotoの性能向上(レプリケーション速度の向上)に影響するパラメータはいくつかありますが、
複数ケースで検証したところ、速度が向上するパラメータは「Thread execution factor」のみです。
こちらを設定することで、レプリケーション処理のチューニングを行えます。
DBMotoでの双方向レプリケーション(シンクロナイゼーション)において、双方のDBで同じレコードをほぼ同時に更新した場合にどちらが優先されるかはDBMotoの「コンフリクトオプション」で以下の4つから選択可能です。
AS/400でのエラー「資源の限界を超えた」 [SQLCODE: -904 SQLSTATE: 57011]
考えられるケースは下記の通りです。
1. ユーザープロファイルの記憶域の制限やマシンのストレージの制限を超過した
2. マシンロックの制限を超過した
3. クエリのリソース制限が超過した
4. ジャーナルのエラーが発生した(最大サイズに達したなど)
5. コミットロックの制限を超過した
6. テーブルの最大サイズに達した
7. プリペアドステートメントの領域の最大サイズに達した
どちらもテーブルのレコードを削除するわけですが・・・
・DML
・削除するレコードをwhere句で絞り込める
・トランザクションとして利用できる
⇒ロールバック(UNDO)が可能
⇒トランザクションログに書き込む
⇒DBMotoでレプリケーション可能 続きを読む
SQL Serverのビューを使用すると、特定のユーザに対して必要なデータだけを提供したり、複数テーブルからの参照を容易にするなど、非常に便利なものです。
ただし、ビューは参照(select)には向いていますが、登録・更新・削除(insert, update, delete)を行う場合は制限があります。
以前ののブログ記事で紹介した「レプリケーションの際にnullを特定の値に変換する方法 その1」は、テーブルのフィールドごとに設定する必要があったため、フィールドの数が多ければ多いほど設定に時間を要するというデメリットがありました。
片方向レプリケーションで、ソースがNULLを許可するフィールド、ターゲットがNULLを許可しない(NOT NULL)フィールド同士でマッピングしていたとします。