Insight Technology, Inc

インサイトテクノロジー

Japanese | English

株式会社インサイトテクノロジー 発行
http://www.insight-tec.com/jp/
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━Vol.33
   ☆☆☆  おら!オラ! Oracle −どっぷり検証生活− ☆☆☆
                             2000.11.29
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
    他ではなかなか得られない、マニュアルを読んでもわからない、
   そういったOracleに関する技術情報をお届けするメルマガです。
   実際に検証した結果も交えてお伝えしていきます。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆
/// ///┏━━━━━━━━━━━━━━━━━━━━━━━━━┓/// ///
★  ★ ┃                                                  ┃★  ★
    ┃     ★☆祝☆★ 新連載開始決定!!     ┃
☆★☆ ┃                                                  ┃☆★☆
    ┃  OOW(Oracle Open World)まであと2週間!!  ┃
/// ///┃                                                  ┃/// ///
★  ★ ┗━━━━━━━━━━━━━━━━━━━━━━━━━┛★  ★
★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆

皆様からの「わたしには少し難しいかも。」「もうちょっと簡単なものが...。」
というご要望にお応えし、このメルマガにて新連載を開始することとなりました。
現在、鋭意準備中!年内にはスタートしますのでお楽しみに!
また、東京ドームにて開催されるOOWのブースにて、
技術情報のつまった冊子をお配りします。是非、遊びにきてください。


<<目次>>
■Oracle検証生活・・読者からの質mon、に関する検証
■お知らせ・・・○Oracle管理ツール Performance Insight
○SQeeLのご案内 ○連載情報
○書籍ご予約受付中 ○QAについて
■編集者より

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

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
▼ Oracle検証生活 ▼━━━━━━━━━━━━━━━━━━━━━━━━
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
〜読者からの「質mon」に関する検証〜
ペンネーム ちゃむ

読者からの質問

前回の Vol32で、1.パフォーマンスの向上(リカーシブ コールの減少 ビッ
トマップを用いた高速なエクステントのアルゴリズム)と有りましたが、リカ
ーシブ コールとは、システム表領域へのアクセスのことを指しているのでしょうか。


今回は上記のような質問(質mon)が多かったのでそれに関して検証を交えて説明
しようと思う。

--------------------------------------------------------------------------
8iからの新機能ローカルエクステントマネージメントを以下「LOCAL」と呼ぶ。
従来のデータディクショナリでエクステントを管理する方法を以下「DICTIONARY」
と呼ぶ。
--------------------------------------------------------------------------

検証する前準備として、「LOCAL」と「DICTIONARY」でそれぞれにテーブルを作成
しておく。

「LOCAL」

/*テーブルスペース作成*/
create tablespace TESTl
datafile 'd:\testl' size 10m
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 4k;

/* where 1=2
 にして行数0のテーブル作成  t10man_orgはempの行数を拡張し
た10万件のテーブル*/
create table testl_tb tablespace testl
storage (initial 4k next 4k pctincrease 0 maxextents unlimited)
as select * from t10man_org where 1=2;

「DICTIONARY」

/*テーブルスペース作成*/
create tablespace TESTd
datafile 'd:\testd' size 10m
minimum extent 4k;

/* where 1=2 にして行数0のテーブル作成  t10man_orgはempの行数を拡張し
た10万件のテーブル*/

create table testd_tb tablespace testd
storage (initial 4k next 4k pctincrease 0 maxextents unlimited)
as select * from t10man_org where 1=2;

リカーシブコールを正確に把握するために今回はSQL_TRACEを取得することにする。
以下の初期化パラメータを変更する必要があるが、今回はセッションレベルで変更する。
その後10万件のテーブルをインサートする。

「LOCAL」
/*『時間に関する統計情報が正確に取得できる』を真にセットする。*/
alter session set timed_statistics = true ;

/*SQLトレースをそのセッションで取るための設定*/
alter session set sql_trace = true ;

/*10万件のテーブルをインサート*/
insert into testl_tb select * from t10man_org;

初期化パラメータのUSER_DUMP_DESTで指定したディレクトリにOra00245.trcと
いうトレースファイルが出力された。DOSプロンプトで、TKPROFユーティリティー
を用いて、読みやすく整形しよう。

C:\>tkprof Ora00245.trc testl_tb.txt

ファイルの更新日時を見れば、今出力されたトレースファイルがOra00245.trcで
あるとわかる。ではこの245という番号はなんであろうか。実はそれは、プロセス
番号である。もし、事前に出力するトレースファイル名を判断する必要があるなら
ば、以下のSQL文で自分の接続しているプロセス番号を把握できる。

select s.server SERVER, p.spid SPID
 from v$session s ,v$process p
 where s.audsid=userenv('sessionid') and s.paddr=p.addr;

SERVER       SPID
-----------------
DEDICATED    245

このプロセス番号を用いてファイル名は一意に決まるが、過去に同じプロセス
番号のトレースファイルもあるかもしれないので、USER_DUMP_DESTにある不要な
ファイルは削除しておくか明示的に上記のSQL文で自分のセッションのプロセス
番号を把握しておくべきであろう。(NT版だと3桁のようなのでバッティングする
ことも時々ある。バッティングした場合トレースファイルにダンプの内容がAPPEND
される。)

ここで、V$SESSIONのSERVER列は以下の内容を示す。

SHAREDまたはNONE → 共有サーバ接続
DEDICATE         → 専用サーバ接続

もし、共有サーバ接続でトレースファイルを出力すると、トレースファイルは
以下のような名前になる。

orclS000.TRC

これは、共用サーバのプロセスIDを示すようだ。これでは、トレースファイ
ルは共用サーバの個数によって名前が決まってしまうので、一意性は薄い。
だから、専用サーバ接続でトレースファイルを取ったほうが良い場合もあるだ
ろう。

話を元に戻して、「LOCAL」のトレースファイルを整形したtestl_tb.txtのリカ
ーシブコールのTOTALを見ると以下のとおり。後程、「DICTIONARY」と比較して
みよう。

-----------------testl_tb.txtのTOTAL RECURSIVE CALL抜粋-------------------

OVERALL TOTALS FOR ALL RECURSIVE STATEMENTS

call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse     2524      5.04       7.07          3         36          2           0
Execute   2560      1.53       1.72          0       4996       1249        1249
Fetch     2631      0.26       0.44         14       3931          0        1346
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total     7715      6.83       9.23         17       8963       1251        2595

-----------------testl_tb.txtのTOTAL RECURSIVE CALL抜粋-------------------


「DICTIONARY」

alter session set timed_statistics=true;

alter session set sql_trace=true;

insert into testd_tb select * from t10man_org;

/*トレースファイルはOra00241.trcに出力された*/
C:\>tkprof Ora00241.trc testd_tb.txt


---------------testd_tb.txtのTOTAL RECURSIVE CALL抜粋------------------

OVERALL TOTALS FOR ALL RECURSIVE STATEMENTS

call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse     3692      8.00      11.70          3         36          2           0
Execute   3761      4.32       4.53         19      31688       1914        1832
Fetch    53050      8.39       9.85         42      76243          0       52064
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total    60503     20.71      26.08         64     107967       1916       53896

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

「LOCAL」と「DICTIONARY」を比較してみよう。リカーシブの実行回数などが、
ぜんぜん違うのは見てわかるだろう。

それぞれの項目の内容を以下に記述する。(トレースファイルから抜粋)

*****************************************************************************
count    = number of times OCI procedure was executed
cpu      = cpu time in seconds executing 
elapsed  = elapsed time in seconds executing
disk     = number of physical reads of buffers from disk
query    = number of buffers gotten for consistent read
current  = number of buffers gotten in current mode (usually for update)
rows     = number of rows processed by the fetch or execute call
*****************************************************************************

具体的なリカーシブコールの例をトレースファイルから抜粋してみると以下のような
ものがあった。

例1

/*空スペースの管理 
10万件インサートしたことにより、空領域のブロック数などを管理しているfet$
表をdeleteする。*/

delete from fet$ 
where
 file#=:1 and block#=:2 and ts#=:3

例2

/*オブジェクトのエクステント管理
10万件インサートしたことにより、エクステントの使用ブロック数などを管理し
ているuet$表に該当オブジェクトのブロック数などをinsertする。*/

insert into uet$ (segfile#,segblock#,ext#,ts#,file#,block#,length)
values
 (:1, :2, :3, :4, :5, :6, :7)



ということで、fet$やuet$などは、システム表領域に入る基礎表なので、リ
カーシブ コールとは、システム表領域へのアクセスのことを指していると言
えます。


実は、メルマガを12月14日(木)、15日(金)に開催されるORACLE OPEN WORLD
(東京ドーム)の出展に向けて今までのメルマガの他に新企画の準備を進めてい
ます。ORACLE OPEN WORLD開催後は、メルマガ読者はさらに増える?と予想される
ので、さらに内容を充実するべく、スタッフ一同がんばっております。
ですので、通常のテーマを設けて検証する企画は、ORACLE OPEN WORLD開催後の最
初の水曜日である12月20日から再開します。それまでの期間は「ORACLE OPEN WOR
LD 特別企画 OOW出展への道」として行ないますのでよろしくお願いします。

次回のメルマガは、OOWにて無料配布する冊子
「とびだせ!!  おら!オラ!Oracle −どっぷり検証生活−」の内容を、少しだ
けご紹介する予定です(もったいぶるなって?)。

以上 海岸の猫をいじめるな!!  茅ヶ崎にて

前回の訂正:桑田圭介→桑田佳祐 
言い訳  漢字に自信無かったから、yahooで桑田圭介で検索したらサザンに関して
いっぱい検索されるんだもん。


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
▼ 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 1月号」(翔泳社)に初心者向け連載が掲載されています。
是非ご覧下さい。

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

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

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

http://www.insight-tec.com/jp/topics/books.html
ホームページより受付中です。お早めに!

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

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
▼ 編集者より ▼━━━━━━━━━━━━━━━━━━━━━━━━━━
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
OOWまであと2週間となり、本当に忙しくなってきました。ゲストが来たり、
無料の技術情報冊子がもらえたり、抽選でOracle関連書籍が当たったり(かな
りの高確率で当たります!)いろいろあるんですよ。ま、だから準備がたい
へんなんですけどね。がんばってますので、本当に遊びにきてくださいね。
そうそう、先週のメルマガで桑田佳祐の「けいすけ」の漢字が間違ってました
よねぇ。失礼しました。					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-2000, Insight Technology, Inc. All rights reserved.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

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