トランザクションログデータベースのサイズは、以下の見積り式に基づいて決定してください。なお、ここで算出される値は、理想的な状態でデータが格納された場合の理論値です。実際には削除などの処理により理想的な状態で格納されません。この計算値を最低限必要な値と考えて、10%~30%大きめに見積もってください。
見積り式
トランザクションログデータベースの容量見積り = Bn × Bs
Bn:必要なブロック数
Bs:ブロックサイズ(特に設定がない場合は2048byte)
必要なブロック数(Bn) = Rn ÷ Bm
Rn:更新レコード数
Bm:ブロックあたりの平均格納レコード数
更新レコード数(Rn) = ( Rm1 × Sn1 )+ ( Rm2 × Sn2 )+ … ( Rmi × Sni )
Rm1、Rm2…Rmi:レプリケーション対象表ごとの差分ログ収集スケジュールの間に更新されるレコード数。iはレプリケーション対象表の数
Sn1、Sn2…Sni:レプリケーション対象表ごとの分割数
iの値:レプリケーション対象表
分割数(Sn) = Tl ÷ 4000
分割数(Sn)は、小数点を切り上げて整数にしてください。
Tl:レプリケーション対象表を更新した場合に、トランザクションログデータベースに格納される差分ログのレコード長
Tlは以下の方法で見積りを実施してください。
文字型カラム属性:指定したバイト数
NUMBER型:指定した精度 + 3
DATE型:19
FLOAT型:23
注)分割数を計算した結果が1になり、かつカラム数が800を超える場合は、分割数を2に補正する必要があります。
ブロックあたりの平均格納レコード数(Bm) = Bl ÷ Rl
Bl:ブロック内の利用可能領域サイズ
Rl:平均レコード長
ブロック内の利用可能領域サイズ(Bl) = ( Bs - Bhl ) × Pc - KDBT
Bs:ブロックサイズ(特に設定がない場合は2048byte)
Bhl:ブロックヘッダ長
BhlはV$TYPEを検索した値を計算することにより求めることができます。以下の値の場合には86byteで見積りを実施してください。詳細はOracleのマニュアルを参照してください。
UB1 1 UB4 4 SB2 2 KCBH 20 KTBIT 24 KTBBH 48 KDBH 14 KDBT 4
Pc:PCTFREE以外の領域の割合。
PCTFREEはトランザクションログデータベース作成時に特に設定しない場合、10%に設定されます。そのために0.9で見積もりを実施してください。
KDBT:上記のBhlの表を参照してください。
平均レコード長(Rl) = 58 + TD1 + TD2
TD1:差分データの長さ格納部
TD2:差分データのデータ格納部
差分データの長さ格納部(TD1) = ( Cn × 4 + Cn - 1) + ( Ur ×( Cn × 4 + Cn - 1) )
Cn:レプリケーション対象表の平均カラム数
Ur:UPDATE文固有の差分ログ量
UPDATE文固有の差分ログ量は全更新レコードのうちUPDATE文で更新する割合です。
差分ログのデータ格納部(TD2) = ( Tl2 + Cn - 1 ) + ( Ur ×( Tl2 + Cn - 1 ) )
Tl2:全対象表のTlを平均した値で見積りを実施してください。
Cn:レプリケーション対象表の平均カラム数
Ur:UPDATE文固有の差分ログ量
UPDATE文固有の差分ログ量は全更新レコードのうちUPDATE文で更新する割合です。