Insight Technology, Inc

インサイトテクノロジー

Japanese | English

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

○                                                  Vol.60 ○●●●
●○        おら!オラ!Oracle  −どっぷり検証生活−         ○●●
●●○                                              2001.06.13 ○●
●●●○                                                         ○

┏○ もくじ ○ ━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃
┣★ Oracle 検証生活 ★━━━━━━━━━━━━━━━━━━━…
┃
┃ 【 ロ ッ ク に 関 す る 検 証   そ の 7 】
┃
┣★ 製 品 情 報 ★━━━━━━━━━━━━━━━━━━━━━…
┃
┃ 【 Oracle管理ツール Performance Insight 】
┃    国内3500ライセンスの販売実績を誇る最強のチューニングツール
┃ 【 SQeeL(スキール)】
┃    WEBに適した新言語 ⇒ SQeeL!(オープンソースのフリーウェア)
┃
┣★ INFORMATION ★━━━━━━━━━━━━━━━━━━━━━…
┃
┃ 【 連載情報 】
┃ 【 書籍のご案内 】
┃ 【 QAについて 】
┃ 【 編集者より 】
┃ 【 解 除 の 方 法 】
┃  http://www.insight-tec.com/jp/html/ora3/ora3.html
┃  解除手続きは上記のURLよりお願い致します。原則として当方での解除
┃  は行っておりません、ご了承の程お願い申し上げます。
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━…
┃  【 注意事項 】
┃    本文中にテーブルが含まれていますので、お読みになる際はMSゴシッ
┃    ク等、等幅フォントをお使いただくことをお勧めします。
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
□■ Oracle検証生活 □■÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
〜ロックに関する検証 その7〜
ペンネーム ちゃむ

前回は、ビットマップ・インデックスの構造の詳細に迫ってみた。
今回は、BLOCK DUMPによりビットマップ・インデックスの構造をさらに詳細に
見ていこう。この構造が分からないと、ビットマップ・インデックスのロック
の問題を理解することはできない。

では、BLOCK DUMPを見てみよう。

BITMAP_4のBLOCK DUMPをすべて取得するためには、以下のSQLでBLOCK_ID等を取
得(結果をファイルに出力)した後、そのスクリプト(ファイル)を実行するこ
とにする。

**********************************************************************

SQL> SET FEEDBACK OFF 
SQL> SET PAGES 0
SQL> SET HEAD OFF
SQL> SET TERMOUT OFF

SQL> SPOOL C:\B_DUMP.SQL
SQL> SELECT 'ALTER SYSTEM DUMP DATAFILE ' || FILE_ID ||  ' BLOCK '  || BLOCK_ID || ';'
     FROM DBA_EXTENTS WHERE SEGMENT_NAME = 'BITMAP_4'
     ORDER BY BLOCK_ID;

上記のSQLによって出力されたファイルを実行する。

SQL>@C:\B_DUMP.SQL

以下 C:\B_DUMP.SQLの中身を抜粋

ALTER SYSTEM DUMP DATAFILE 4 BLOCK 18333;
ALTER SYSTEM DUMP DATAFILE 4 BLOCK 22960;
ALTER SYSTEM DUMP DATAFILE 4 BLOCK 23025;
ALTER SYSTEM DUMP DATAFILE 4 BLOCK 23043;
          :         :          :
          :         :          :
ALTER SYSTEM DUMP DATAFILE 4 BLOCK 83055;
ALTER SYSTEM DUMP DATAFILE 4 BLOCK 83070;
ALTER SYSTEM DUMP DATAFILE 4 BLOCK 83132;
ALTER SYSTEM DUMP DATAFILE 4 BLOCK 83164;

**********************************************************************

それでは、ビットマップ・インデックスのBLOCK DUMPの中身を覗いてみよう。
まず始めに、ブランチ・ブロックから見ていくことにしよう。
セグメント・ヘッダーとBranchブロックが同じエクステントに1ブロックずつ格
納されたという話をしたが(前回)、その都合上、上記のスクリプトには、branch
ブロックのBLOCK DUMPを取得するためのスクリプトは含まれていない。前回の
TREE DUMPから、BLOCK DUMPの取得に必要なブランチ・ブロックのBLOCK_ID、
FILE_IDを知ることができる。

******************* 前回のTREE DUMPのブランチ部分 ********************
branch: 0x1005e02 16801282 (0: nrow: 88, level: 1)  ← branch block
**********************************************************************

**********************************************************************

SQL> SELECT DBMS_UTILITY.DATA_BLOCK_ADDRESS_FILE(16801282) FILE_ID,
            DBMS_UTILITY.DATA_BLOCK_ADDRESS_BLOCK(16801282) BLOCK_ID
     from dual;

  FILE_ID  BLOCK_ID
--------- ---------
        4     24066

SQL> ALTER SYSTEM DUMP DATAFILE 4 BLOCK 24066 ;

**********************************************************************

上記の結果(ダンプ)は、以下のURLに示す。nrow: 88の個数の部分も確認して
頂きたい。

http://www.insight-tec.com/jp/html/ora3/reference/ref60_01.html

このインデックスは、以下のようにカーディナリティが 4 のカラムに対して作
成したビットマップ・インデックスである。

**********************************************************************

SQL> select distinct mgr from t10man_copy_4 ;

MGR
--------
 0000000
 0000001
 0000002
 0000003

**********************************************************************

細かい話であるが、実は、MGR列の一番左側に空白が1つ存在している。これは、
前々回に以下のようなSQL文を用いてテーブルを作成した際、TO_CHAR関数のと
ころで、「FM」をつけて空白を取り除かなかったからである。
to_char(mod(EMPNO,4),'FM0000000')とすれば空白は取り除かれるが、検証に当
たっては特に支障がないので、このままのデータで行なう。

**********************************************************************

SQL> CREATE TABLE T10MAN_COPY_4 AS
     SELECT EMPNO,ENAME,JOB,to_char(mod(EMPNO,4),'0000000') MGR,
            HIREDATE,SAL,COMM,DEPTNO
     FROM T10MAN_ORG ;

**********************************************************************

ダンプ中の「col 0」はカラム値を表している。これらは、以下の様な値を示し
ている。

20 → 空白
30 → 0 
31 → 1
32 → 2
33 → 3

col 0; len 8; (8):  20 30 30 30 30 30 30 30 ←  0000000
col 0; len 8; (8):  20 30 30 30 30 30 30 31 ←  0000001
col 0; len 8; (8):  20 30 30 30 30 30 30 32 ←  0000002
col 0; len 8; (8):  20 30 30 30 30 30 30 33 ←  0000003

前回、B-Treeインデックスとビットマップ・インデックスのブランチ・ブロッ
クは若干構造が異なるという話をしたが、その違いが「col 1」である。この値
は、B-Treeインデックスには存在しない。この値は、カラム値が変わる毎に、決
まった値が現れる。

col 1; len 3; (3):  01 01 09

以下のURL(以前説明したビットマップ・インデックスのイメージ図)に示すよ
うに、カラム値毎にstart rowid、end rowid、ビットマップセグメントをそれぞ
れ持っているが、カーディナリティが 4 であれば、このようなデータが4つ存在する。

http://www.insight-tec.com/jp/html/ora3/reference/ref58.html

この「01 01 09」がおそらく、start rowidとend rowidの個数や範囲を表わす
ために使用されているようだが、これはあくまでも推測であって、定かなもの
ではない。

また、ブランチ・ブロックの先頭行だけカラム値が存在していない構造となっ
ている。以下のURLで、ブランチ・ブロックのイメージを確認してほしい。

http://www.insight-tec.com/jp/html/ora3/reference/ref57_02.html

これは、BLOCK DUMPから見ると以下の部分に当たる。

kdxbrlmc 16801190=0x1005da6

最後に、ビットマップ・インデックスの核心部分である、リーフ・ブロックの
ダンプを示す。この構造を見ただけで、ロックの問題に気付いた読者もいるで
あろう。

http://www.insight-tec.com/jp/html/ora3/reference/ref60_02.html

ダンプ中のビットマップ・セグメントの殆どが、「11」「22」「44」「88」と
いった数字であるが、これらは16進数なので本来は、「00010001」「00100010」
「01000100」「10001000」などといった値(ビット)を表しているのである。
これらはすべて、4ビット毎に「1」が現れているが、この理由は、ビットマップ・
インデックスが作成してあるMGR列のカーディナリティが 4 で、
to_char(mod(EMPNO,4),'0000000')のようにmod関数を用いて作成したため、ROWID
が4つ進む毎に、同じ値が現れるといった構造になっているからである。

以上  茅ヶ崎にて

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■□ Oracle 管理ツール Performance Insight ■□÷÷÷÷÷÷÷÷÷÷
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Oracleを知り尽くしたメンバーが開発したOracleパフォーマンス監視ツール
の決定版。それがPerformance Insightです。インサイトテクノロジーの技術
者の知恵とノウハウがここに結集!
パフォーマンス監視だけでなくOracleを使用しているシステムの運用、管理、
そして開発にも役立つ機能がいっぱいです。
詳しくは以下のURLをご覧ください。

http://www.insight-tec.com/jp/html/products/products.html

また無料で試使用することも可能です。
是非お問い合わせください。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
□■ SQeeLのご案内  □■÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
<プログラマ待望の言語SQeeL>
●手軽に使える、速い、そしてWEBに適した新言語SQeeL!

フリーソフトSQeeLは、以下のURLより好評ダウンロード中!
既に多くの方々にご利用いただいております。
あなたもSQeeLの世界を体験してみませんか?

http://www.SQeeL.org/

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■□ 連載情報 ■□÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
<雑誌連載>
Oracleのエキスパートとして定評のある弊社のスタッフが執筆しております
連載記事に関してご紹介しています。
現在「DB Magazine」に、Oracleビギナー向け連載が掲載されています。
7月号が発売中ですので、是非ご覧下さい。

http://www.insight-tec.com/jp/html/topics/magazine.html
上記のURLでタイトルがご覧になれます。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
□■ 書籍ご案内 □■÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
<送料無料でお届けします>
1.「Oracle8 プロフェッショナルテクニック」
弊社のHPよりお申し込みいただいた方に限り、送料無料でお届けします。
専門書としては異例の速さで増刷が決定するほどの好評をいただいている
「Oracle8 プロフェッショナルテクニック」をぜひご活用ください。

2.「Oracleデータベース管理を極める13章」
「DB Magazine」に連載され大好評だった「体験的・DBAのお仕事」が
加筆され書籍化された同書は、おかげさまで発売以来3ヶ月足らずで第3刷
となりました。

好評につき、キャンペーンを拡大いたしました!上記の書籍はいずれも
消費税サービス+送料無料、つまり本体価格のみでご購入いただけます。
この機会をお見逃し無く。

書籍ご購入のお申し込みは以下のURLより受付中!

http://www.insight-tec.com/jp/html/topics/books.html

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

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
□■ 編集者より □■÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
日常生活で言葉の乱れを感じている人が9割もいるそうです・・・。ビック
リしました。いつもなにげなく使っているから、あまり話すときとか気にし
た事なかったけど・・。私の言葉も乱れてるのでしょうか?自覚がないとこ
ろが怖いですよね。これからは気をつけなきゃっ!って「きゃっ」から直さ
ないと、ですよねー・・・。                                   by  TI

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
<おら!オラ!Oracle−どっぷり検証生活−>
発行/編集:株式会社インサイトテクノロジー
http://www.insight-tec.com

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

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