株式会社インサイトテクノロジー 発行
http://www.insight-tec.com/jp/
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━Vol.39
☆☆☆ おら!オラ! Oracle −どっぷり検証生活− ☆☆☆
2001.01.17
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆
/// ///┏━━━━━━━━━━━━━━━━━━━━━━━━━┓/// ///
★ ★ ┃ ┃★ ★
/// ///┃ NET&COM21(2月7,8,9日:幕張メッセ)に出展決定!!┃/// ///
★ ★ ┃ OOWで大好評だった「Oracleの知恵袋」を再度配布。 ┃★ ★
★ ★ ┃ 前回入手できなかった方!今度はGETしてください! ┃★ ★
/// ///┃ ┃/// ///
★ ★ ┗━━━━━━━━━━━━━━━━━━━━━━━━━┛★ ★
★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆
書籍をご購入いただいた皆様、ありがとうございました。
お申し込み多数のため、発送が遅れましたことをこの場を借りて
深くお詫び申し上げます。
大好評につき、消費税サービス+送料無料キャンペーン継続中!
この機会を是非お見逃し無く。
お申し込みは以下のURLより受付中!
http://www.insight-tec.com/jp/topics/books.html
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
<<目次>>
■Oracle検証生活・・・ソートに関する検証 その4
■Oracle入門生活・・・整合性制約の管理
■お知らせ・・・○Oracle管理ツール Performance Insight
○SQeeLのご案内 ○連載情報
○書籍ご予約受付中 ○QAについて
■編集者より
■■注意事項!!■■
本文中にテーブルが含まれていますので、お読みになる際はMSゴシック等、
等幅フォントをお使いただくことをお勧めします。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
▼ Oracle検証生活 ▼━━━━━━━━━━━━━━━━━━━━━━━━
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
〜ソートに関する検証 その4 〜 ペンネーム ちゃむ
前回は、主に一時表領域に関して説明した。
今回は、一時表領域と専用一時表領域との違いについてさらに検証する。
検証
複数のソート処理によって本当に一時セグメントのセグメント数に一時表領域
と専用一時表領域とで違いが出るのか?
「一時表領域」
1_1.ソート処理を行なう際、その処理に対応した一時セグメントを割り当てる。
(複数のソート処理で複数の一時セグメントを使用する。)
<一時表領域の作成 >
CREATE TABLESPACE TEMP1 DATAFILE 'D:\TEMP1.ORA' SIZE 20M
DEFAULT STORAGE (INITIAL 100K NEXT 100K PCTINCREASE 0 MAXEXTENTS UNLIMITED);
<SCOTTのソート領域をtemp1に変更>
alter user scott temporary tablespace temp1;
<2つのセッションから別々にSCOTTで10万件のソート処理を実行>
SELECT * FROM T10MAN_ORG ORDER BY SAL;
<ソートの最中にdba_segmentsを検索 BLOCKSは徐々に2900ブロックまで増加>
select SEGMENT_NAME,SEGMENT_TYPE,BLOCKS,HEADER_FILE,HEADER_BLOCK from
dba_segments where tablespace_name = 'TEMP1';
SEGMENT_NAME SEGMENT_TYPE BLOCKS HEADER_FILE HEADER_BLOCK
--------------- ------------------ --------- ----------- ------------
9.2 TEMPORARY 2900 9 2
9.1402 TEMPORARY 2900 9 1402
ソート処理別に一時セグメント(SEGMENT_TYPE=TEMPORARY)が割当てられている
のがわかる。また、SEGMENT_NAMEは、「HEADER_FILE.HEADER_BLOCK」で命名され
る様子もわかる。これは、セグメントヘッダの場所を示している。
<ソート処理終了後のdba_segmentsの検索>
ソート処理終了後は、dba_segmentsを検索してもデータは何も検索されない。
これがソート後すぐに一時セグメントが解放される裏付けである。
「専用一時表領域」
1_2.ソート処理を行なう際、必ず、単一の一時セグメントを割り当てる。
(複数のソート処理で一つの一時セグメントを使用する。)
<専用一時表領域の作成 >
CREATE TABLESPACE TEMP2 DATAFILE 'D:\TEMP2.ORA' SIZE 20M
DEFAULT STORAGE (INITIAL 100K NEXT 100K PCTINCREASE 0 MAXEXTENTS UNLIMITED)
TEMPORARY;
<SCOTTのソート領域をtemp2に変更>
alter user scott temporary tablespace temp2;
<2つのセッションから別々にSCOTTで10万件のソート処理>
SELECT * FROM T10MAN_ORG ORDER BY SAL;
<ソートの最中にdba_segmentsを検索 BLOCKSは徐々に5800ブロックまで増加>
select SEGMENT_NAME,SEGMENT_TYPE,BLOCKS,HEADER_FILE,HEADER_BLOCK from
dba_segments where tablespace_name = 'TEMP2';
SEGMENT_NAME SEGMENT_TYPE BLOCKS HEADER_FILE HEADER_BLOCK
--------------- ------------------ --------- ----------- ------------
10.2 TEMPORARY 5800 10 2
一時セグメントが一つしか存在しないのが、確認できるだろう。また、
5800=2900+2900であり、大きさ的にも1_1.で行なったソート処理の大きさ
である。
<ソート処理終了後のdba_segmentsの検索>
ソート処理終了後にdba_segmentsを検索すると、上記のSQLの結果とまったく
同じである。これがソート後すぐに一時セグメントが解放されない裏付けである。
また、解放されるタイミングは、OracleのSHUTDOWN処理時だが実はもう一つある。
それは、以下のコマンドで永続表領域にすることである。これにより、単なる
一時表領域になるので、エクステントが解放されるのは理解しやすい。
ALTER TABLESPACE TEMP2 PERMANENT;
ちなみに専用一時表領域に再び戻すコマンドは以下のとおり。
ALTER TABLESPACE TEMP2 TEMPORARY;
このように、1つのセグメントヘッダが複数のソート処理を一手に引き受けるのが、
専用一時表領域の内部的な動きである。解放しっぱなしの一時セグメント
が他のソート処理を行なうプロセスから効率的に再利用されるために、このよう
に全体の領域を管理する一つのセグメントヘッダが必要だったためと思われる。
以下にそのイメージを示す。
http://www.insight-tec.com/html/reference/ref39.html
以上 カフェオレタイヤキ 茅ヶ崎にて
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
▼ Oracle入門生活 ▼━━━━━━━━━━━━━━━━━━━━━━━━
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
<Oracle入門> ペンネーム モンキーターン
前回は「制約の追加・削除・変更」で、それぞれの方法について理解していた
だけたと思う。
今回は「整合性制約の管理」についてお送りしようと思う。
--- それでは、どっぷり入門生活スタート! -----------------------------
「整合性制約の管理」とは、制約の実行タイミングや制約の状態を設定するこ
とである。
< 制約の実行タイミング >
制約の実行タイミングは、二通り存在する。即時制約と遅延制約である。指定
方法は、制約定義時である。
・即時制約とは、表に対するDML実行時に制約をチェックすることである。
・遅延制約とは、表に対するDML実行後、COMMIT時に制約をチェックすること
である。言い換えると、制約のチェックをトランザクションの最後まで遅延
するのである。
* DML実行( Data Manipulate Language )
SELECT,UPDATE,INSERT,DELETE文のことである。表データに対してアクセスし、
処理を行うことである。
それでは、即時制約と遅延制約の動きをみてみよう。
表?:TEST_LEST01 ・・・カラム ID に即時制約設定
表?:TEST_LEST02 ・・・カラム ID に遅延制約設定
表?を作る。
SQL> CREATE TABLE TEST_LEST01
(ID number constraint PK_ID01 PRIMARY KEY
NOT DEFERRABLE INITIALLY IMMEDIATE ) ;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
↑
遅延不可能かつ初期即時制約指定(デフォルト)
表?を作る。
SQL> CREATE TABLE TEST_LEST02
(ID NUMBER CONSTRAINT PK_ID02 PRIMARY KEY
DEFERRABLE INITIALLY DEFERRED ) ;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
↑
遅延可能かつ初期遅延の制約指定
遅延制約の設定に関する内容は、次回で詳しく説明する。
それでは、2つの表に対して同じ値を挿入してみよう。
制約がチェックされるタイミングの違いがみれるはずである。
表?に対して
SQL> INSERT INTO TEST_LEST01(ID) VALUES(1) ; ← 制約のチェック
1行が作成されました。
SQL> INSERT INTO TEST_LEST01(ID) VALUES(1) ; ← 制約のチェック
INSERT INTO TEST_LEST01(ID) VALUES(1)
*
エラー行: 1: エラーが発生しました。
ORA-00001: 一意制約: (SCOTT.PK_ID01) に反しています。
INSERT文を実行時にチェックされているのが確認できる。
これが即時制約である。
表?に対して (トランザクション開始)
│
SQL> INSERT INTO TEST_LEST02(ID) VALUES(1) ; │
│
1行が作成されました。 │
│
SQL> INSERT INTO TEST_LEST02(ID) VALUES(1) ; │
│
1行が作成されました。 │
↓
SQL> COMMIT ; (トランザクション終了)
COMMIT ? 制約のチェック
*
エラー行: 1: エラーが発生しました。
ORA-02091: トランザクションがロールバックされました。
ORA-00001: 一意制約: (SCOTT.PK_ID02) に反しています。
INSERT文を実行時にチェックされず、トランザクション終了時(COMMIT時)に
制約のチェックが実行されているのが確認できる。これが遅延制約である。
今回は、この辺で「どっぷり入門生活」おしまい -------------------------
次回は、「整合性制約の管理」のつづきを、お送りしようと思う。
「どっぷり入門生活」では、基本的な質問をお待ちしています。また、このような
テーマでやってほしい等の要望がございましたら、メールでどしどしお寄せく
ださい。
以上 23日誕生日 モンキー・ターンより(ジャイアント馬場)
ちなみに、「つけまい」は本日17日が誕生日です(山口百恵、坂本龍一と同じ)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
▼ 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ビギナー向け連載が掲載されています。
2月号が発売中ですので、是非ご覧下さい。
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をお寄せください。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
▼ 編集者より ▼━━━━━━━━━━━━━━━━━━━━━━━━━━
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
6年前の今日、阪神大震災があった。名古屋にいたわたしも、今までにない
大きさ、長さの揺れを感じて目を覚ました。すぐにテレビをつけたが、神戸
の震度がいつまでたっても表示されなかったことを覚えている。後に神戸の
被害の大きさを知り、納得することになったのだが...。月日が経つと忘れら
れてしまいがちだが、やはり災害には常日頃から備えておくべきだと思う。
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-2001 , Insight Technology, Inc. All rights reserved.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━