Insight Technology, Inc

インサイトテクノロジー

Japanese | English

株式会社インサイトテクノロジー 発行
http://www.insight-tec.com

┏┏┏┏┏━━━━━━━━━━━━━━━━━━━━━━━━…・・ ┏━
┏┏┏┏┛                                  2001.08.08         ┏┛┛
┏┏┏┛      ☆おら!オラ!Oracle  -どっぷり検証生活-★     ┏┛┛┛
┏┏┛                                                   ┏┛┛┛┛
┏┛・・…━━━━━━━━━━━━━━━━Vol.68━…・・ ┏┛┛┛┛┛

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
◆                     来週のメルマガはお休み!                  ◆
◇                     ~~~~~~~~~~~~~~~~~~~~~~~~                   ◇
●≫≫≫≫≫≫ 8月15日はお盆のため休刊いたします。 ≪≪≪≪≪≪●
◇       悪しからずご了承のほど、よろしくお願いいたします。       ◇
◆               次回の配信は8月22日になります。               ◆
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
■□注意事項□■
    本文中にテーブルが含まれていますので、お読みになる際はMSゴシッ
    ク等、等幅フォントをお使いただくことをお勧めします。
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

┏─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━┓
●【 Oracle 検証生活 】                                           ●
┗─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━┛
< REDOログに関する検証  その6 >  ペンネーム つけまい

--- 内部構造を理解し
              パフォーマンスの向上に役立てる ---

前回は、DUMPコマンドを用いて、実際のREDOログ・ファイルの中身を覗いてみ
た。

今回は、DUMP中の重要な部分について、もう少し詳しく解説を行う。


************** DUMPの解説 ***************

REDOログ・ファイルのDUMP
http://www.insight-tec.com/jp/html/ora3/reference/ref67_02.html

上記のDUMPは、以下のトランザクション処理部分のみのDUMPデータを抜粋した
ものである。

---------- SQL文 ----------

DESC WORK03

 名前                            NULL?    タイプ
 ------------------------------- -------- ----
 EMPNO                                    NUMBER(4)
 ENAME                                    VARCHAR2(6)
 ADDRESS                                  VARCHAR2(12)
 JOB                                      VARCHAR2(8)
 MGR                                      NUMBER(4)
 SAL                                      NUMBER(7)
 COMM                                     NUMBER(7)
 DEPTNO                                   NUMBER(2)

※ EMPNOにはインデックスは作成していない

UPDATE WORK03
SET ENAME = 'haneda'
WHERE EMPNO = 1001 ;

1行が更新されました。

COMMIT ;

コミットが完了しました。

---------------------------

上記のトランザクションを実行すると、以下の1〜4に対する変更を記録した
4つのチェンジベクターが生成される。

1.ロールバックセグメントのトランザクション表
   (ロールバックセグメントのセグメントヘッダー内に存在している)

2.ロールバックセグメントのデータブロック

3.テーブルWORK03のブロック

4.コミット情報

それでは、各チェンジベクターが、それぞれどのような関連を持っているのか
を見てみよう。

----------------------------------------------------------------------

・行3のDBAは、トランザクション表が存在するディスク上の位置を指したアド
  レスである。

・行5のubaは、ロールバックセグメントのデータブロックが存在するアドレス
  である。したがって、行6のロールバックセグメントのデータブロックが存在
  するアドレスDBAと同じはずである。

・行18のbdba及びhdbaは、テーブルWORK03のデータブロック及びヘッダーブロッ
  クが存在するアドレスである。したがって、行27のテーブルWORK03のデータ
  ブロック及びヘッダーブロックが存在するアドレスbdba及びhdbaと同じはず
  である。

・行20、29のslotは、ブロック中の何レコード目に存在するかを表したもので
  ある。したがって、これらの値は同じはずである。このトランザクションの
  EMPNO=1001は、テーブルWORK03中の1レコード目に存在するので、ここには0
  が入っている(5レコード目は4)。

・行21、30のsizeは、更新前と更新後のデータ長の差分を表したものである。
  このトランザクションは、ENAMEをnaritaからhanedaに変更しており、データ
  長は共に6バイトなので、それぞれに0が入っている。もし仮に、6バイトから
  5バイトに変更した場合、行21には1が入り、行30には-1が入ることになる。

・行22、31のcolは、テーブル中の何カラム目かを表したものである。したがっ
  て、これらの値は同じはずである。項目ENAMEは、テーブルWORK03中の2番目
  に位置するので、ここには1が入る。

・行22、31の[ 6 ]は、実際に格納されるデータのバイト長を表したものである。

・行22、31の【6e 61 72 69 74 61】及び【68 61 6e 65 64 61】は、実際に格
  納されるデータをキャラクタコードで表したものである。
  行22の【6e 61 72 69 74 61】は、更新前の旧データであるnaritaを、
  行31の【68 61 6e 65 64 61】は、更新後の新データであるhanedaをそれぞれ
  意味している。

・行23のDBAは、テーブルWORK03中の、トランザクションの対象となるデータが
  格納されているブロックのアドレスである。したがって、行18、27のbdbaと
  同じはずである。

・行26のubaは、トランザクションのUNDOデータが格納されているブロックのア
  ドレスである。したがって、行6のDBAと同じはずである。

・行35のDBAは、コミット情報をトランザクション表に書き出した際のアドレス
  である。したがって、行3のDBAと同じはずである。

・行37のubaは、コミットの対象となるロールバックセグメントのデータブロッ
  クが存在するアドレスである。したがって、行6のDBAと同じはずである。

----------------------------------------------------------------------

この辺の情報は、Oracle8iからの新機能であるログマイナーの方が見やすいだろう。
ログマイナーに関しては、別の機会で検証する予定である。

次回は、REDOログに関する統計情報についての解説を行う。


以上  猛暑も一休みの茅ヶ崎にて

┏─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━┓
●【 QAコーナー 】                                              ●
┗─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━┛
☆★Question1★☆
バックアップモードになっているファイルに対する更新を行った時のREDOログ
についてです。

SQL> alter tablespace users begin backup ;

上記のコマンドを実行すると、その表領域中のファイルはバックアップモード
になります。この状態のファイルに対して更新を行った時に、REDOログ量が増
えると思いますが、どのくらい増えるのか、また、なぜ増えるのかをお教え下
さい。

人から聞いた話では、「ブロックの更新前イメージを全てREDOに吐き出す」か
ららしいのですが、本当なのでしょうか?

本当だとしたら、イメージとは物理的なイメージ(ブロック丸ごと)なのでしょ
うか?それとも論理的なイメージなのでしょうか?

☆★Answer★☆
通常は、更新処理で生成されるREDO情報はレコード単位ですが、オンラインバッ
クアップの実行最中であると、Oracleのデータブロック単位でブロックのビフォ
アイメージを生成する必要があります。このような処理が必要になる理由は、
Oracleはデータブロック単位でデータを変更するのに対し、OSのコピーなどOracle
のデータブロック単位とは無関係に(つまりOSのブロック単位で)コピーしていく
ため、データブロックのバージョン番号に不整合が生じる可能性があるからです。
正常なブロックの状態に戻すようにするにはこのようにレコード単位ではな
く、データブロック単位でブロックのビフォアイメージが必要になります。

この内容に関しては、Oracle 8iからの新機能である「ログマイナー」で具体的に
検証する予定です。

┏─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━┓
●【 QAについて 】                                              ●
┗─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━┛
<皆様からのQAを受付けております>
皆様のQAにはできるだけ、お答えしたいと思っています。
すべてのQAにお答えすることはできないかもしれませんが、
適宜メルマガ内でとりあげていく予定ですので、是非QAをお寄せください。



┏─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━┓
●【 編集者より 】                                                ●
┗─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━┛
最近、すごく涼しいですよね。過ごしやすい毎日なんですけど・・・。でも
相変わらず、会社の中は極寒なんですよ・・。体がついていけてない気が最
近しないでも・・。風邪はひいてないんですけど、かなり体がダルダルなん
ですよね。これがもしかして、噂の冷房病ですかね??せっかくの休みを楽
しめるように、皆さんも体には十分気をつけて下さいねーっ!    by  TI

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
登録・解除は以下のURLで行うことができます。
http://www.insight-tec.com/jp/html/ora3/ora3.html
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
<おら!オラ!Oracle−どっぷり検証生活−>
発行/編集:株式会社インサイトテクノロジー
http://www.insight-tec.com

マガジンID:0000030093
本メールマガジンに掲載された記事を許可なく転載することを禁じます。
Copyright (c) 1996-2001, Insight Technology, Inc. All rights reserved.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

 

 メールマガジン登録/解除