株式会社インサイトテクノロジー 発行 http://www.insight-tec.com/jp/ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━Vol.38 ☆☆☆ おら!オラ! Oracle −どっぷり検証生活− ☆☆☆ 2001.01.10 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆ /// ///┏━━━━━━━━━━━━━━━━━━━━━━━━━┓/// /// ★ ★ ┃ ┃★ ★ /// ///┃ アンケートご協力感謝&OOW成功記念(ちと古いか?)┃/// /// ★ ★ ┃ キャンペーンを実施いたします! ┃★ ★ /// ///┃ ┃/// /// ★ ★ ┗━━━━━━━━━━━━━━━━━━━━━━━━━┛★ ★ ★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆ 多数の方からご協力いただいたアンケートで、惜しくもプレゼント当選を 逃した方のために、そしてOOW大成功を記念いたしまして、 「Oracleデータベース管理を極める13章」を弊社のホームページから お申し込みの方に限り、キャンペーン期間中は消費税サービス+送料無料で お届けいたします。この機会を是非お見逃し無く。 お申し込みは以下のURLより受付中! http://www.insight-tec.com/jp/topics/books.html ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ <<目次>> ■Oracle検証生活・・・ソートに関する検証 その3 ■Oracle入門生活・・・制約の追加・削除・変更 ■お知らせ・・・○Oracle管理ツール Performance Insight ○SQeeLのご案内 ○連載情報 ○書籍ご予約受付中 ○QAについて ■編集者より ■■注意事項!!■■ 本文中にテーブルが含まれていますので、お読みになる際はMSゴシック等、 等幅フォントをお使いただくことをお勧めします。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼ Oracle検証生活 ▼━━━━━━━━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 〜ソートに関する検証 その3 〜 ペンネーム ちゃむ 前回は、主に、メモリー上でソートを行なう際、どこで行われるかを中心に 説明した。 今回は、主にdiskでソートを行なう場合の一時表領域に関して説明する。 Oracleのソートアルゴリズムを考えた上で設定上の大きな要因は2つある。 1.初期化パラメータの SORT_AREA_SIZE 2.一時表領域のエクステントサイズ及び設定 初期化パラメータのSORT_AREA_SIZEはメモリー上でソート処理する際のMAXサイズ を決めるものである。そのサイズに収まらないときは、ディスク上で、つまり一時 表領域上でソート処理を行なうことになる。 では、ソートエリアから一時表領域にどれくらいのサイズで書き出すのであろうか? 実は、これは、テーブルスペースのDEFAULT STORAGE句で決まる。TABLEなどを格納 するために使用する表領域に関しては、CREATE TABLEなどをするとき、STORAGE句を 指定しないと、このDEFAULT STORAGEのサイズになるが、通常は、個々のテーブルで INITIAL NEXT PCTINCREASEなどのエクステントサイズは指定するので、問題になるこ とはない。 しかし、「一時表領域のDEFAULT STORAGE句のINITIAL NEXT PCTINCREASEで 指定したエクステントサイズは、そのまま一時セグメントの大きさになる。」 したがって、一時表領域では、このDEFAULT STORAGEが非常に重要である。 それに関連してよく、「SORT_AREA_SIZE=INITIAL=NEXT PCTINCREASE=0にする。」 なんて指針がある。この指針の正当性に関しては、別の機会に検証する。 また、Oracle7.3以降の機能である専用一時表領域により、一時セグメント内の エクステントの割当て、解放などを何度も行なう必要がなくなる。単なる一時表 領域は、永続表領域に作成する。この永続表領域は、TABLEとかINDEXなどのオブ ジェクトを作成するときと同様、普通の表領域である。つまり、名前をTEMPとかにして、 USERのTEMPORARY TABLESPACEに指定しているだけで、その表領域にTABLEなどを作成 することは可能である。一方、専用一時表領域は、その表領域にTABLEなどを作成 することはできない。 <永続表領域に一時表領域を作成する例> CREATE TABLESPACE TEMP1 DATAFILE 'D:\TEMP1.ORA'SIZE 10M DEFAULT STORAGE (INITIAL 100K NEXT 100K PCTINCREASE 0 MAXEXTENTS UNLIMITED); その一時表領域にテーブルを作成した様子。問題なくテーブルを作成できる。 SQL> CREATE USER CHAMU1 IDENTIFIED BY CHAMU1 2 TEMPORARY TABLESPACE TEMP1 3 DEFAULT TABLESPACE USERS; ユーザーが作成されました。 SQL> GRANT CONNECT TO CHAMU1; 権限付与が成功しました。 SQL> GRANT RESOURCE TO CHAMU1; 権限付与が成功しました。 SQL> CONNECT CHAMU1/CHAMU1 接続されました。 SQL> CREATE TABLE CHAMU1_TB TABLESPACE TEMP1 AS SELECT * FROM DUAL; 表が作成されました。 <専用一時表領域を作成する例> その専用一時表領域にテーブルを作成した様子。ORA-2195発生。 CREATE TABLESPACE TEMP2 DATAFILE 'D:\TEMP2.ORA'SIZE 10M DEFAULT STORAGE (INITIAL 100K NEXT 100K PCTINCREASE 0 MAXEXTENTS UNLIMITED) TEMPORARY; その一時表領域にテーブルを作成した様子。 SQL> CREATE USER CHAMU2 IDENTIFIED BY CHAMU2 2 TEMPORARY TABLESPACE TEMP2 3 DEFAULT TABLESPACE USERS; ユーザーが作成されました。 SQL> GRANT CONNECT TO CHAMU2; 権限付与が成功しました。 SQL> GRANT RESOURCE TO CHAMU2; 権限付与が成功しました。 SQL> CONNECT CHAMU2/CHAMU2 接続されました。 SQL> CREATE TABLE CHAMU2_TB TABLESPACE TEMP2 AS SELECT * FROM DUAL; エラー行: 1: エラーが発生しました。 ORA-02195: PERMANENTオブジェクトがTEMPORARY表領域に作成されようとしました。 また、専用一時表領域と単なる一時表領域の違いは、エクステントの割当て、 解放のタイミングである。 <一時表領域> ソート処理のたびに一時セグメントのエクステントの割り当て、解放が行われる。 ソートが行われている一時セグメントは、ソート処理を行なっているプロセス ごとに確保される。(一時セグメントが複数存在することがある。) ソート処理がディスク上で必要になったとき、以下の手順でエクステントの割 当て、解放が行なわれる。 1.ソート処理に必要な一時セグメントを空ブロックから確保する。 2.ソート処理終了後、一時セグメントを解放して、空ブロックとする。 <専用一時表領域> ソート処理のたびに一時セグメントのエクステントの割り当て、解放が行われる わけではない。エクステントの割当てが行われるのはOracleインスタンスが起 動してから初めてのディスクソート処理が起きたときと、それ以降に、今までよ りも大きいディスクソートの領域が必要になったときだけである。また、解放 するタイミングは、OracleインスタンスをSHUTDOWNするときのみである。 つまり、一時セグメントは、一度割り当てられると、SHUTDOWNするまでは空ブロ ックとして解放されることはないのである。これにより、単なる一時表領域より割 当て、解放を行なう内部的な領域管理は少ないのである。 また、一時セグメントは、専用一時表領域にたった一つである。この単一セグメ ントが複数プロセスからのディスクソート処理を一手に引き受ける。 ソート処理がディスク上で必要になったとき、以下の手順でエクステントの割 当て、解放が行なわれる。 1.今回のディスクソートで必要な一時セグメントが、既存の一時セグメントより 大きければ(正確に言うと、ディスクソートで必要な一時セグメントが既存の一 時セグメントのうちで他のプロセスが現在使用していないエクステントより大き ければ)、その分の領域を空ブロックから新たに一時セグメントに割り当てる。 小さければ、空ブロックからの新たな一時表領域の割り当てはしない。 2.OracleインスタンスをSHUTDOWNするまでは、ソート処理終了後も一時セグメン トを解放しない。 次回、このソート処理により、一時セグメントが実際にエクステントの割当て、解放 を行なう様子を見てみよう。 以上 砂まじりの茅ヶ崎にて ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼ Oracle入門生活 ▼━━━━━━━━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ <Oracle入門> ペンネーム モンキーターン あけましておめでとございます。今世紀もよろしくお願い致します。 前回は、「実際に参照整合性制約を作ってみよう」で制約の作り方を理解して いただいたと思う。 今回は、「制約の追加・削除・変更」をお送りしようと思う。 --- それでは、どっぷり入門生活スタート! ----------------------------- 前回のメルマガから、少し時間が空いたので前回の内容を軽く復習しよう。 制約(例として、参照整合性制約を作った)を作るときに「列制約構文」と 「表制約構文」という2つの指定方法があることをお送りした。 そこで、今回は制約の追加・削除・変更を行ってみよう。 <既にある列に対する制約の追加> 既にある列に対する制約の追加は、「表制約構文」で実行する。 SQL> ALTER TABLE 表名 ADD 表制約構文 ; で追加することができる。 表に対して新しく列を追加する場合は、この構文ではエラーになる。 <新しく追加する列に対する制約の追加> 新しく列に対する制約の追加は、「列制約構文」で実行する。 SQL> ALTER TABLE 表名 ADD ( 列名 データ型 制約の種類 ) ; で追加することができる。 既に存在している列に対しては、エラーになってしまう。 ここで、NOT NULL制約は、「列制約構文」のみで指定可能となっているので、 NOT NULL制約に関しては、 SQL> ALTER TABLE 表名 MODIFY ( 列名 NOT NULL ) ; となる。 当たり前ではあるが、制約追加時に追加しようとする制約に違反しているデータ が存在している場合は、エラーになるので注意していただきたい。 <制約の削除> 制約の削除は、 SQL> ALTER TABLE 表名 DROP CONSTRAINT 制約名 ; となる。 <制約の変更> 制約を変更するためのコマンドはなく、変更したい制約を削除した上で変更 した制約を追加しなければならない。 「表制約構文」「列制約構文」の指定方法の違いを理解することは、結果的に 変更処理等の構文を理解することになるであろう。 今回は、この辺で「どっぷり入門生活」おしまい ------------------------- 次回は、「整合性制約の管理」についてお送りしようと思う。 「どっぷり入門生活」は、基本的な質問をお待ちしています。また、このような テーマでやってほしい等の要望が御座いましたら、メールでどしどしお寄せく ださい。 以上 Oracleと共に21世紀を迎えた モンキー・ターンより ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼ 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をお寄せください。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼ 編集者より ▼━━━━━━━━━━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 先週末の雪のせいで沼津〜大井松田間の高速道路が通行止め!当然のごとく 国道1号も....。帰省先から茅ヶ崎に向かっていたのですがあえなく沼津で 足止め。もうあとちょっとだったのに....。で、用も無いのに沼津で1泊する こととなりました。21世紀初頭の忘れられない思い出になりそうです。みな さんのお正月はいかがでしたか? 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. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
