Insight Technology, Inc

インサイトテクノロジー

Japanese | English

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

★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆
/// ///┏━━━━━━━━━━━━━━━━━━━━━━━━━┓/// ///
★  ★ ┃                                                  ┃★  ★
/// ///┃ つけまいの講演が聴ける!(有料でごめんなさい。) ┃/// ///
★  ★ ┃                                                ┃★ ★
/// ///┃ 大好評の小冊子「Oracleの知恵袋」が手に入る!   ┃ /// ///
★  ★ ┃           (もちろんコレは無料です。) ┃★ ★
/// ///┃                                                  ┃/// ///
★  ★ ┃ブースではインサイトテクノロジーの技術を結集した ┃★ ★
/// ///┃   Oracle管理ツールPerformance Insightの最新版   ┃ /// ///
★  ★ ┃  (XML完全対応!)のデモを行っております。       ┃★ ★
/// ///┃                           ┃ /// ///
★  ★ ┃  本日から開催のNET&COM21に是非ご来場下さい。   ┃★ ★
/// ///┃                                                  ┃ /// ///
★  ★ ┗━━━━━━━━━━━━━━━━━━━━━━━━━┛★  ★ 
★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆

■■ご注意!!■■
恥ずかしながら、NET&COM21へのエントリーが遅かったために、
会場案内図に弊社の名前が載っていない場合があります。
インサイトテクノロジーのブースは日経BP社様のブースの前、
案内図では日立ハイソフトと記述されている場所になりますので、
よろしくお願いします。

<NET&COM21フォーラム案内>
http://expo.nikkeibp.co.jp/netcom21/index_forum.html
つけまいの講演は、2月8日(木)午後2時〜
「Oracle8i新機能の活用法−内部構造を理解し有用性を探る」
と題して行われます。是非、ご参加ください。

<お詫び>
書籍をご購入いただいた皆様、ありがとうございました。
お申し込み多数のため、発送が遅れましたことをこの場を借りて
深くお詫び申し上げます。

大好評につき、消費税サービス+送料無料キャンペーン継続中!
この機会を是非お見逃し無く。
お申し込みは以下のURLより受付中!
http://www.insight-tec.com/jp/topics/books.html

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
<<目次>>
■Oracle検証生活・・・ソートに関する検証 その6
■Oracle入門生活・・・整合性制約の状態
■お知らせ・・・○Oracle管理ツール Performance Insight
		○SQeeLのご案内		○連載情報
		○書籍ご予約受付中	○QAについて
■編集者より

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

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
▼ Oracle検証生活 ▼━━━━━━━━━━━━━━━━━━━━━━━━
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
〜ソートに関する検証 その7 〜  ペンネーム ちゃむ

今回から、ダイレクトソートに関する検証を行なう。
ダイレクトソートとは、ディスクソートを行なうときのアルゴリズムの一つで
ある。

<ダイレクトソートとは>

ディスクソートでダイレクトソートを使用しない場合は、データをデータベース
バッファに読み込み、一時表領域への書き出しはDBWRで行なう。

ダイレクトソートを使用する場合は、一時表領域へ書き出すためのバッファを
用意してデータの書き出しを行なうので、DBWRの負荷を軽減させることができ
るとともに、データベース・バッファに対する競合の軽減やヒット率の向上に
も効果がある。

以下にダイレクトソートを使用する場合としない場合の違いを図に示す。

http://www.insight-tec.com/html/reference/ref42.html

上記の文章を読むと、ダイレクトソートは非常によい機能のように思われるかも
しれない。そう、非常にいい機能なのだ!!その裏付けの一つとして、この機
能はOracle8までは、sort_direct_writesというパラメータでfalse,true,auto
(デフォルト)のいずれかを設定して、ダイレクトソートを使用するかしない
かを決めていた。だが、Oracle8iでは、sort_direct_writesというパラメータ
は廃止され、ディスクソート処理はすべて「ダイレクトソート」になった。

今回の検証は、ダイレクトソートを使用するときと使用しないときで、データ
ベース・バッファ上でどのような動きの違いがあるかを実際に見てみる。この
検証は、Oracle8で行った(Oracle8iでは、すべてのソート処理がダイレクトソー
トで行われるので、動きの違いを検証することはできない)。

また、データベース・バッファの動きを見るために、X$BHを使用する。
BHは「BUFFER HEADER」の略である。X$BHで検索されるデータ数は、初期化パラ
メータのdb_block_buffersの値に一致する。

SVRMGR> show parameter db_block_buffers

NAME                                TYPE    VALUE
----------------------------------- ------- ------
db_block_buffers                    整数値  200   ← 一致!!

SVRMGR> SELECT COUNT(*) FROM X$BH;
COUNT(*)
----------
       200 ← 一致!!

X$BHには、FILE#という列があり、FILE#はV$DATAFILEのFILE#と一致する。つま
り、そのファイル番号からどのデータファイルのデータがデータベース・バッ
ファ上に載っているのかがわかる。今回は、ソートで使用するテーブルスペース
のデータファイル番号は2なので、以下のようなSQL文を発行することにより、
ソートセグメントのデータブロックの数を確認することができる。

SELECT COUNT(*) CNT FROM X$BH WHERE FILE#=2;

<<検証方法>>

<検証に使用するダイレクトソート処理を行なわないSQL文>

SQL>alter session set sort_area_size=65536;
SQL>alter session set sort_direct_writes=false;
SQL>select * from t10man_org order by sal;

<検証に使用するダイレクトソート処理を行なうSQL文>

SQL>alter session set sort_area_size=65536;
SQL>alter session set sort_direct_writes=true;
SQL>select * from t10man_org order by sal;

<検証に使用するデータベース・バッファの確認方法>

SELECT COUNT(*) CNT FROM X$BH WHERE FILE#=2;

上記のSQL文を1秒おきに発行し、その動きを見る。


今回の検証には、弊社「インサイトテクノロジー」が精魂を込めて開発したイ
ンタプリタ言語「POPSQL」を用いて、それぞれの動きを確認した。
(ちょっと宣伝魂が入ってしまっていますが、「POPSQL」は弊社の主力製品
「パフォーマンスインサイト」の中で使用されている言語です。簡単でしょ。
監視ジョブなんかもちょー簡単に作ることができます。)

<検証スクリプト>

-----------------------POPSQL始め--------------------------
REM X$BHを検索するためにSYSでCONNECT
CONNECT sys/manager
SET FETCH 1
LOOP(;;)
	REM CNTはローカル変数(2行以上検索される場合はローカル配列)
    REM として count(*)の値が格納される
    SAMPLE  SELECT COUNT(*) CNT FROM X$BH WHERE FILE#=2;

	REM 画面に出力 \で囲むと変数の値が展開される。
    MESSAGE |\CNT\| 

	REM 1秒間スリープ
    SLEEP 1
ENDLOOP
-----------------------POPSQL終わり--------------------------

<検証結果>

<ダイレクトソートではない処理の検証結果>

以下が1秒毎のバッファ数の推移(抜粋)であるが、200個のデータベース・
バッファがすべて、ソートセグメントで埋め尽くされてしまった。これが、
ヒット率の低下及び、DBWR負荷が増大する原因である。

|192|
|198|
|196|
|200|
|200|
|200|

<ダイレクトソート処理の検証結果>

以下がバッファ数の推移(抜粋)であるが、1ブロックだけデータベース・
バッファに載っている様子がうかがえる。違いは一目瞭然であろう。

|1|
|1|
|1|
|1|
|1|
|1|

次回は、sort_direct_writes=autoで検証を行う。

このメールが皆様の元に届く頃には、私は「NET&COM」のブースにいるでしょう。
時間の許す限り、是非、「インサイトテクノロジー」のブースにお立ち寄り下さい。
本文中でも触れた「パフォーマンスインサイト」を出展しておりますので、是非、
このツールの良さを体感していって下さい。
また、前回のOOWのときと違って、一人一人のお客様とお話したいと思っております
ので、よろしくお願いします。

以上 サツマイモタイヤキはどうなの?? 茅ヶ崎にて


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
▼ Oracle入門生活 ▼━━━━━━━━━━━━━━━━━━━━━━━━
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
<Oracle入門> ペンネーム モンキーターン

今回は、「整合性制約の管理」のつづきで「整合性制約の状態」についてお送
りしよう。

--- それでは、どっぷり入門生活スタート! -----------------------------

前回は、制約の状態を「DISABLE NOVALIDATE」に設定して動きを見てもらった。
今回は、制約の状態を「DISABLE VALIDATE」に設定したときの動きを見てみよ
う。
「DISABLE VALIDATE」の状態とは、既存のデータはチェックされた後にデータ
の変更が禁止されるのである。
データの変更はないが既存のデータの一意性は保証したい場合に、用いられる。

まず、検証で使うテーブルを作成する。

  SQL> CREATE TABLE WORK
           (ID number constraint PK_WORK PRIMARY KEY
                                NOT DEFERRABLE INITIALLY IMMEDIATE ) ;
  状態を何も指定しないときは、デフォルトで「ENABLE VALIDATE」の状態に
  なるのである。

  SQL> INSERT INTO WORK(ID) VALUES(1) ;
  SQL> INSERT INTO WORK(ID) VALUES(2) ;
  SQL> INSERT INTO WORK(ID) VALUES(3) ;
  SQL> INSERT INTO WORK(ID) VALUES(4) ;
  SQL> INSERT INTO WORK(ID) VALUES(5) ;
  SQL> COMMIT ;

< 制約 PK_WORKを DISABLE VALIDATE状態に変更する >

  SQL> SELECT TABLE_NAME , INDEX_NAME FROM USER_INDEXES
                                          WHERE TABLE_NAME = 'WORK' ;

  TABLE_NAME      INDEX_NAME
  --------------  --------------
  WORK            PK_WORK


  SQL> ALTER TABLE WORK DISABLE VALIDATE CONSTRAINT PK_WORK ;

  表が変更されました。


  SQL> SELECT TABLE_NAME , INDEX_NAME FROM USER_INDEXES
                                          WHERE TABLE_NAME = 'WORK' ;

  レコードが選択されませんでした。

主キーを DISABLE VALIDATE に設定すると主キーに付いていた索引は、削除さ
れるのである。

< INSERT文 >
  SQL> INSERT INTO WORK(ID) VALUES(1) ;
  INSERT INTO WORK(ID) VALUES(1)
  *
  エラー行: 1: エラーが発生しました。
  ORA-25128:
  制約(SCOTT.PK_WORK)が使用禁止および検査対象の表で挿入/更新/削除はできません。

< UPDATE文 >
  SQL> UPDATE WORK SET ID = 6 WHERE ID = 1 ;
  UPDATE WORK SET ID = 6 WHERE ID = 1
  *
  エラー行: 1: エラーが発生しました。
  ORA-25128:
  制約(SCOTT.PK_WORK)が使用禁止および検査対象の表で挿入/更新/削除はできません。

< DELETE文 >
  SQL> DELETE FROM WORK ;
  DELETE FROM WORK
  *
  エラー行: 1: エラーが発生しました。
  ORA-25128:
  制約(SCOTT.PK_WORK)が使用禁止および検査対象の表で挿入/更新/削除はできません。

以上の結果より
制約を DISABLE VALIDATE 状態に設定すると、既存のデータの一意性をチェック
した後は、表に対する変更(DML文)を禁止されているのが確認できる。

制約が「DISABLE VALIDATE」状態の特徴は、表のデータに対して変更は行われ
ないことであるが、デメリットとして、既存のデータの一意性は保証したいと
きに、一意性制約を作成すると作成されていた索引が作成されないということ
である。つまり、この索引を利用した検索ができないということである。


今回は、この辺で「どっぷり入門生活」おしまい -------------------------

「どっぷり入門生活」では、基本的な質問をお待ちしています。また、このよ
うなテーマでやってほしい等の要望がございましたら、メールでどしどしお寄
せください。

近々「どっぷり入門生活」の内容&やり方を変更しようと思っています。
例えば、テーマは持たずに1回読み切りタイプや、もっと実用的な入門タイプ
等を考えています。
読者の皆様の、ご意見をお聞かせください。

よろしくお願いします。

以上 「今日から NET&COM21 来てね! 私も行きます。」 モンキー・ターンより


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

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

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

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

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

http://www.SQeeL.org

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

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

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
▼ 書籍ご予約受付中 ▼━━━━━━━━━━━━━━━━━━━━━━━
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
<送料無料でお届けします>
「Oracle8 プロフェッショナルテクニック」は大好評につき、現在在庫切れと
なっており、ご注文いただいた皆様にはたいへんご迷惑をおかけしております。
まもなく入荷する予定ですので、今しばらくお待ちください。
これからご注文いただく方も、入荷次第発送させていただくということで
予約注文を受付けておりますのでよろしくお願い申し上げます。

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

2000年12月10日に発売された「Oracleデータベース管理を極める13章」の
販売を開始いたしました。「DB Magazine」に連載され大好評だった「体験的・
DBAのお仕事」が加筆され書籍化された同書は、おかげさまで発売以来2週間で
増刷となりました。現在キャンペーン期間中につき、同書に限りましては、
消費税サービス+送料無料、つまり本体価格のみでご購入いただけます。

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

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

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
▼ 編集者より ▼━━━━━━━━━━━━━━━━━━━━━━━━━━
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
英会話を習おうと思い、レベルチェックテストを受けてきました。久々に英
語を使ったので、とっても緊張!簡単な言い回しも忘れてしまっている自分
がちょっと情けなかった....。何とか上達したいものです。	 by UA

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

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

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