Insight Technology, Inc

インサイトテクノロジー

Japanese | English

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

・;*;・゜’★,。・*;・゜’♪☆。・;*;゜’♪★。・;*;゜’☆   ●●●●
●                                                      Vol.54 ●●●
●●          おら!オラ!Oracle  −どっぷり検証生活−           ●●
●●●                                         ☆       2001.05.2  ●
●●●●☆。・;*;・゜’★,。・*;・゜’♪☆。・;*;゜’♪★。・;*;゜;♪

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
回                ★ホームページリニューアル!!☆               回
●≫≫≫≫≫≫≫≫≫≫≫≫≫≫  祝  ≪≪≪≪≪≪≪≪≪≪≪≪≪≪≪●
回              http://www.insight-tec.com         回
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

◎●  I┃ N┃ D┃ E┃ X┃!┃◎●
   ━┛━┛━┛━┛━┛━┛
◆Oracle検証生活・・・ロックに関する検証 その1
◆お知らせ・・・◇Oracle管理ツール Performance Insight
 ◇SQeeLのご案内           ◇連載情報
 ◇書籍ご購入受付中        ◇QAについて
◆編集者より

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

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

今回からロックに関する検証を行なう。

例えば、EMP表のデータをUPDATEしたときCOMMITするまで、そのUPDATEしたデー
タが他のユーザーに変更されないように保証したり、表がDROPされないように保
証されているのはロックのおかげである。これらのことは「データに一貫性があ
る」とか「データ構造の整合性がとれている」とかいわれることもある。さら
に、ロックのおかげで、複数のユーザーがデータに同時実行アクセスできるよう
になっている。

ロックには、表全体に対するロックである表ロックと、行データを保証するため
の行ロックというものがある。これらを合わせてDMLロック(データロック)と
いう。また、データ構造を保証するのは、DDLロック(データディクショナリー
ロック)という。表のデータ構造は、データディクショナリ上に存在するので、
このような名前がついている。


「DDLロック」のおかげで→「データ構造の整合性がとれている」
「DMLロック」のおかげで→「データに一貫性ある」

ロックは、UPDATE文、DELETE文、INSERT文などを発行したときに暗黙のうちに発
生する。SELECT文のときは、ロックは発生しない。(但し、FOR UPDATE句がつい
ている場合は発生する。)その様子をV$LOCKから見てみよう。UPDATE文、DELETE
文に関しては行ロックするイメージもなんとなく涌くが、INSERT文は、そもそも
存在しない行に対して発生するのだから、ちょっと行ロックのイメージが湧きに
くい。でも、結果はすべて同様だ。

LIST 1

テーブルAはCREAET TABLE A AS SELECT * FROM EMP;で作成したもの

UPADTE文

UPDATE A SET JOB='結婚詐欺' WHERE EMPNO= 7369;

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

SQL> SELECT * FROM V$LOCK WHERE TYPE IN ('TX','TM')
ADDR     KADDR     SID  TYPE      ID1      ID2  LMODE REQUEST CTIME BLOCK
-------- -------- ----- ---- --------- ------- ------ ------- ----- -----
0840E798 0840E868   13  TX     131083      122      6       0     6     0
0332772C 03327740   13  TM       3378        0      3       0     6     0

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

DELETE文

DELETE FROM A WHERE EMPNO= 7369;

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

SQL> SELECT * FROM V$LOCK WHERE TYPE IN ('TX','TM')
ADDR     KADDR     SID  TYPE      ID1      ID2  LMODE REQUEST CTIME BLOCK
-------- -------- ----- ---- --------- ------- ------ ------- ----- -----
0840E798 0840E868   13  TX      262153     116      6       0     6     0
0332772C 03327740   13  TM        3378       0      3       0     6     0

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

INSERT文

INSERT INTO A VALUES(1,'チャム','弁護士',NULL,
  TO_DATE('19990101','YYYYMMDD'),99999,99999,10);

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

SQL> SELECT * FROM V$LOCK WHERE TYPE IN ('TX','TM')
ADDR     KADDR     SID  TYPE      ID1      ID2  LMODE REQUEST CTIME BLOCK
-------- -------- ----- ---- --------- ------- ------ ------- ----- -----
0840E798 0840E868    13 TX      196609     115      6       0     9     0
0332772C 03327740    13 TM        3378       0      3       0     9     0

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

以下のURLでV$LOCKのカラムについて説明しておく。

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

データを更新すると必ず、TYPE=TM(DMLエンキュー)とTYPE=TX(トランザクショ
ンエンキュー)が対で取得される。TMが表ロックに対応し、TXが行ロックに対応
すると思っていいだろう。TYPE=TMのときID1はオブジェクトIDを示すので
DBA_OBJECTSからオブジェクト名が取得できる。

DBA_OBJECTSからオブジェクト名を取得

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

SQL>SELECT OBJECT_ID,OBJECT_NAME FROM DBA_OBJECTS WHERE OBJECT_ID=3378;

OBJECT_ID OBJECT_NAME
--------- ------------
     3378 A

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

では、オブジェクトのデータ構造が、別セッションで表ロック(V$LOCKのTYPE=TM)
を取得している時に保証されている様子を示すと以下のようになる。

あるセッションで、DELETE直後(COMMITしない)、別セッションでDROPした様子

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

セッションA
SQL> DELETE FROM A WHERE EMPNO= 7369;
1行が削除されました。

セッションB
SQL>  DROP TABLE A
エラー行: 1: エラーが発生しました。
ORA-00054: リソースビジー、NOWAITが指定されていました。

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

このように、ロックは、データやデータ構造の保護などを行なう重要な機能であ
る。また、V$LOCKを観察していると更新処理以外の処理の様子も判るので、
V$LOCKの見方を覚えることをお勧めする。

以上 ロックで!! 茅ヶ崎にて

◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆

↓発進!茅ヶ崎移住計画↓
http://www.insight-tec.com/jp/html/company/career.html 

◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■□ 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ビギナー向け連載が掲載されています。
5月号が発売中ですので、是非ご覧下さい。

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

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

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

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

さらに書籍をお買い上げいただいた方にはもれなく「Oracleの知恵袋」進呈中!
数に限りがございますので、在庫がなくなり次第終了とさせていただきます。
お早めに!

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

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

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■□ 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.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

 

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