株式会社インサイトテクノロジー 発行
http://www.insight-tec.com/jp/
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━Vol.48
☆★☆ おら!オラ! Oracle −どっぷり検証生活− ☆★☆
2001.03.21
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
<<目次>>
■Oracle検証生活・・・ロールバック・セグメントに関する検証 その4
■お知らせ・・・○Oracle管理ツール Performance Insight
○SQeeLのご案内 ○連載情報
○書籍ご予約受付中 ○QAについて
■編集者より
■■注意事項!!■■
本文中にテーブルが含まれていますので、お読みになる際はMSゴシック等、
等幅フォントをお使いただくことをお勧めします。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
▼ Oracle検証生活 ▼━━━━━━━━━━━━━━━━━━━━━━━━
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
検証生活
〜ロールバックセグメントに関する検証 その4 〜
ペンネーム ちゃむ
前回は、1.CEIL(TRANSACTIONS/TRANSACTIONS_PER_ROLLBACK_SEGMENT)の値と
どのように関連して、パブリック・ロールバック・セグメントが起動されるの
かを検証した。
今回は、2.TRANSACTIONS_PER_ROLLBACK_SEGMENTで指定した数だけ、各ロール
バック・セグメントで同時トランザクションを処理できるのかどうかを検証する。
今回の検証は、NT版 ORACLE8.1.6 DB_BLOCK_SIZE = 2Kの環境で行なった。
まず始めに、TRANSACTIONS_PER_ROLLBACK_SEGMENTは最大いくつまで指定できる
かを検証してみる。
TRANSACTIONS_PER_ROLLBACK_SEGMENT = 55を指定してOracleを起動すると、以
下のようなエラーメッセージが出力された。
ORA-02093:TRANSACTIONS_PER_ROLLBACK_SEGMENT(55) more than maximum possible(21)
これは、「TRANSACTIONS_PER_ROLLBACK_SEGMENTはMAXで21まで」しか設定でき
ないことを意味する。この前提を踏まえて今回の検証に入っていこう。
2.の検証
2_1
transactions_per_rollback_segmentを「4」に設定する。
SVRMGR> SHOW PARAMETER TRANSACTIONS_PER_ROLLBACK_SEGMENT
NAME TYPE VALUE
----------------------------------- ------- --------------
transactions_per_rollback_segment 整数値 4
パラメータの意味からすると、1つのロールバック・セグメントで4つの同時ト
ランザクションを扱えることを意味するはずである。
2_2
以下のスクリプトを用いて、検証で必要なテーブルを作成
----------------POPSQL テーブルを50個作成するスクリプト-------------
CONNECT SCOTT/TIGER
LOOP( I=0 ; I<50 ; I++)
REM \I\は変数Iを値に展開 A_0、A_1、......、A49 50個のテーブルを作成
SQL CREATE TABLE A_\I\ AS SELECT * FROM EMP;
ENDLOOP
--------------------------------------------------------------------
2_3
以下の2つのスクリプトで50同時トランザクションを作り出し、さらにそれを1
つのロールバック・セグメント(rb_find50)に書き込む。
trun50.callはtrun50.jobをバックグラウンドで50回実行する。そのとき、変数
Iの値も渡す。
----------POPSQL スクリプト名 trun50.call --------------
CONNECT SCOTT/TIGER
LOOP( I=0 ; I<50 ; I++)
rem SYSTEMコマンドは、シェル起動コマンド
rem popsqlはPOPSQLのプログラムを起動するときのバイナリプログラム
rem &はバックグランドで実行させるときに指定する。
SYSTEM popsql trun50.job \I\ &
ENDLOOP
--------------------------------------------------------
trun50.jobは変数Iを受け取り、始めに作成したテーブルA_0からA_49に対して
UPDATE文を発行する。そのときロールバック・セグメントは、rb_find50を指定
して使用させる。
----------POPSQL スクリプト名 trun50.job --------------
REM 引数で渡された変数の値を受け取る
GETOPT I
CONNECT SCOTT/TIGER
rem PLSQLコマンドは、PLSQLを実行させるためのコマンド
rem DBMS_TRANSACTION.USE_ROLLBACK_SEGMENTパッケージは、指定したロール
rem バックセグメントを使用する。(今回は、rb_find50)
rem SET TRANSACTION USE ROLLBACK SEGMENT rb_find50;と同様の働きをする。
PLSQL DBMS_TRANSACTION.USE_ROLLBACK_SEGMENT ('rb_find50');
rem UPDATE A_0 SET ENAME = 'KOBA';などを実行
SQL UPDATE A_\I\ SET ENAME = 'KOBA';
rem OERRはオラクルエラーを取得する予約語。 0のときは正常終了する。
rem MESSAGEコマンドで\I\や\OERR\など変数の値を展開して画面表示
MESSAGE UPDATE A_\I\ SET ENAME = 'KOBA'; OERR=\OERR\
rem 100秒スリープしてトランザクションを維持する。
SLEEP 100
--------------------------------------------------------
2_4.
では、同時に50トランザクションを発生させてみる。その50のトランザクショ
ンは、すべてrb_find50ロールバック・セグメントを使用させる。
C:\> popsql trun50.call
スクリプトtrun50.jobによるMESSAGEコマンドの出力結果は、以下のとおりである。
始めの21個のトランザクションは正常終了
UPDATE A_0 SET ENAME = 'KOBA'; OERR=0
UPDATE A_2 SET ENAME = 'KOBA'; OERR=0
UPDATE A_1 SET ENAME = 'KOBA'; OERR=0
UPDATE A_3 SET ENAME = 'KOBA'; OERR=0
UPDATE A_4 SET ENAME = 'KOBA'; OERR=0
UPDATE A_5 SET ENAME = 'KOBA'; OERR=0
UPDATE A_9 SET ENAME = 'KOBA'; OERR=0
UPDATE A_11 SET ENAME = 'KOBA'; OERR=0
UPDATE A_10 SET ENAME = 'KOBA'; OERR=0
UPDATE A_13 SET ENAME = 'KOBA'; OERR=0
UPDATE A_15 SET ENAME = 'KOBA'; OERR=0
UPDATE A_18 SET ENAME = 'KOBA'; OERR=0
UPDATE A_19 SET ENAME = 'KOBA'; OERR=0
UPDATE A_12 SET ENAME = 'KOBA'; OERR=0
UPDATE A_8 SET ENAME = 'KOBA'; OERR=0
UPDATE A_6 SET ENAME = 'KOBA'; OERR=0
UPDATE A_7 SET ENAME = 'KOBA'; OERR=0
UPDATE A_17 SET ENAME = 'KOBA'; OERR=0
UPDATE A_14 SET ENAME = 'KOBA'; OERR=0
UPDATE A_16 SET ENAME = 'KOBA'; OERR=0
UPDATE A_22 SET ENAME = 'KOBA'; OERR=0
残りの29個のトランザクションでは、ORA-1554が発生
UPDATE A_21 SET ENAME = 'KOBA'; OERR=1554
UPDATE A_44 SET ENAME = 'KOBA'; OERR=1554
UPDATE A_24 SET ENAME = 'KOBA'; OERR=1554
UPDATE A_26 SET ENAME = 'KOBA'; OERR=1554
UPDATE A_35 SET ENAME = 'KOBA'; OERR=1554
UPDATE A_33 SET ENAME = 'KOBA'; OERR=1554
UPDATE A_38 SET ENAME = 'KOBA'; OERR=1554
UPDATE A_37 SET ENAME = 'KOBA'; OERR=1554
UPDATE A_42 SET ENAME = 'KOBA'; OERR=1554
UPDATE A_41 SET ENAME = 'KOBA'; OERR=1554
UPDATE A_20 SET ENAME = 'KOBA'; OERR=1554
UPDATE A_46 SET ENAME = 'KOBA'; OERR=1554
UPDATE A_45 SET ENAME = 'KOBA'; OERR=1554
UPDATE A_34 SET ENAME = 'KOBA'; OERR=1554
UPDATE A_39 SET ENAME = 'KOBA'; OERR=1554
UPDATE A_43 SET ENAME = 'KOBA'; OERR=1554
UPDATE A_28 SET ENAME = 'KOBA'; OERR=1554
UPDATE A_27 SET ENAME = 'KOBA'; OERR=1554
UPDATE A_29 SET ENAME = 'KOBA'; OERR=1554
UPDATE A_30 SET ENAME = 'KOBA'; OERR=1554
UPDATE A_47 SET ENAME = 'KOBA'; OERR=1554
UPDATE A_49 SET ENAME = 'KOBA'; OERR=1554
UPDATE A_23 SET ENAME = 'KOBA'; OERR=1554
UPDATE A_40 SET ENAME = 'KOBA'; OERR=1554
UPDATE A_48 SET ENAME = 'KOBA'; OERR=1554
UPDATE A_31 SET ENAME = 'KOBA'; OERR=1554
UPDATE A_25 SET ENAME = 'KOBA'; OERR=1554
UPDATE A_36 SET ENAME = 'KOBA'; OERR=1554
UPDATE A_32 SET ENAME = 'KOBA'; OERR=1554
これは、2_1でtransactions_per_rollback_segment=4であったが、実際は
21個の同時トランザクションを扱えたことになる。また、この21という数値は、
始めに述べた「TRANSACTIONS_PER_ROLLBACK_SEGMENTはMAXで21まで」という
MAX値に一致する。
結論を言うと、transactions_per_rollback_segmentの値に関わらず、1つの
ロールバック・セグメントで同時に21個のトランザクションを扱えるようだ。
また、このtransactions_per_rollback_segmentというパラメータは、パブリック・
ロールバック・セグメントをいくつ起動させるかを決定するためのパラメータ
であると言える。
ちなみに、この ORA-1554は、マニュアルで調べると次のように書いてある。
トランザクション表にトランザクション・スロットがありません。
原因 同時実行のトランザクション件数が多すぎます。
次回もさらに、この現象に関して迫ってみる予定である。
以上 海に行くと犬が目を閉じるほど風が強い茅ヶ崎にて
◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
↓発進!茅ヶ崎移住計画↓
http://www.insight-tec.com/jp/company/career.html
◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
▼ 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ビギナー向け連載が掲載されています。
4月号が発売中ですので、是非ご覧下さい。
http://www.insight-tec.com/jp/topics/magazine.html
上記のURLでタイトルがご覧になれます。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
▼ 書籍ご予約受付中 ▼━━━━━━━━━━━━━━━━━━━━━━━
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
<送料無料でお届けします>
1.「Oracle8 プロフェッショナルテクニック」
弊社のHPよりお申し込みいただいた方に限り、送料無料でお届けします。
専門書としては異例の速さで増刷が決定するほどの好評をいただいている
「Oracle8 プロフェッショナルテクニック」をぜひご活用ください。
2.「Oracleデータベース管理を極める13章」
「DB Magazine」に連載され大好評だった「体験的・DBAのお仕事」が
加筆され書籍化された同書は、おかげさまで発売以来3ヶ月足らずで第3刷
となりました。
好評につき、キャンペーンを拡大いたしました!上記の書籍はいずれも
消費税サービス+送料無料、つまり本体価格のみでご購入いただけます。
この機会をお見逃し無く。
さらに書籍をお買い上げいただいた方にはもれなく「Oracleの知恵袋」進呈中!
数に限りがございますので、在庫がなくなり次第終了とさせていただきます。
お早めに!
書籍ご購入のお申し込みは以下のURLより受付中!
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.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━