Insight Technology, Inc

インサイトテクノロジー

Japanese | English

株式会社インサイトテクノロジー 発行
http://www.insight-tec.com/jp/
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━Vol.37
   ☆☆☆  おら!オラ! Oracle −どっぷり検証生活− ☆☆☆
                             2000.12.27
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆
/// ///┏━━━━━━━━━━━━━━━━━━━━━━━━━┓/// ///
★  ★ ┃                                                  ┃★  ★
/// ///┃  アンケートご協力、ありがとうございました!  ┃/// ///
★  ★ ┃  受付は本日15:00をもちまして締切りとなります。 ┃★  ★ 
/// ///┃    なお、当選者の皆様には本日中にメールで    ┃/// ///
★  ★ ┃     ご連絡いたしますので、お楽しみに!!   ┃★  ★
/// ///┃                                                  ┃/// ///
★  ★ ┗━━━━━━━━━━━━━━━━━━━━━━━━━┛★  ★
★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆

          ┏━━━━━━━━━━━━━━━━━━━━━━┓
          ┃☆★  次回、1月3日は休刊となります。  ★☆┃
         ┗━━━━━━━━━━━━━━━━━━━━━━┛

多数の方にご協力いただいたアンケートにより、皆様からの様々な意見を
いただくことができました。スタッフ一同、皆様のご期待に添えますよう
努力してまいりますので、今後ともよろしくお願いいたします。
ご協力、本当にありがとうございました。


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
<<目次>>
■Oracle検証生活・・・ソートに関する検証 その2
■Oracle入門生活・・・参照整合性制約について
■お知らせ・・・○Oracle管理ツール Performance Insight
		○SQeeLのご案内		○連載情報
		○書籍ご予約受付中	○QAについて
■編集者より

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

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
▼ Oracle検証生活 ▼━━━━━━━━━━━━━━━━━━━━━━━━
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
〜ソートに関する検証 その2 〜  ペンネーム ちゃむ

前回は、ソートを伴なう処理とそれを確認する方法を説明した。
今回は、主に、メモリ上でソートを行なう際、どこで行われるかを中心に
説明する。

初期化パラメータのSORT_AREA_SIZEは、メモリ上でソート処理する際のMAXサイズ
を決めるものである。そのサイズに収まらない場合はディスク上で、つまり、一時
表領域上でソート処理を行なうことになる。
メモリ上でソートを行なう場合、MTS(マルチスレッドサーバ)とDEDICATE
サーバ(専用サーバ)ではソートを行うエリアが異なる。

MTS接続 → SGA内のUGA
専用サーバ接続 → PGA内のUGA

まず、用語の説明も含めてOracleで使用するメモリ構造の説明をする必要が
あるだろう。

SGA(SYSTEM GLOBAL AREA)→ 1つのOracleインスタンスのデータと制御情報が
入る共有メモリ。データベースバッファ、共有プール、REDOログバッファなど
が含まれる。

PGA(PROGRAM GLOBAL AREA)→ セッションを確立すると、サーバプロ
セスごとに確保される領域。データや制御情報が含まれる非共有メモリ。

UGA(USER GLOBAL AREA)→ セッション単位に1つのUGAが存在する。MTS接
続の場合SGA内、専用サーバ接続の場合PGA内に確保される領域。

CGA (CALL GLOBAL AREA) → MTS接続、専用サーバ接続に関わらず、PGA内に
保持される。セッションの変数、配列などを含むスタック領域が確保される。

これらをソートエリアと関連させて図にしたものが以下のURLである。

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

MTS接続で大量ソートを行なってしまうと、SGA内を圧迫してしまう恐れがある
ので、そのような処理を行う場合は専用サーバで接続するべきである。もし、
MTSを使用している環境(初期化パラメータのmts_で始まるパラメータを設定し
ている環境)でも、以下のようにtnsnames.oraで「(SERVER = DEDICATED)」を
指定すれば、ネット経由でも専用接続で接続できる。但し、DEDICATE接続の場
合は、SORT_AREA_SIZEは、セッションごとにPGA内に確保されるため、メモリ
の使用量は、最大で SORT_AREA_SIZE × ソートエリアを使用しているセッション
の数だけ必要になる。そのため、メモリ使用量としてはMTS接続よりも多くなっ
てしまう。あまり多くのソート処理が同時に発生すると、PGAの領域が確保できず、
ORA-4030(プロセスメモリ不足)などがでる原因の一つにもなる。

------------------tnsnames.ora始め--------------------

#MTS接続
O803.WORLD =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.12)(PORT = 1521))
    )
    (CONNECT_DATA =
      (sid = ora803)
    )
  )

#DEDICATE接続
O803D.WORLD =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.155)(PORT = 1521))
    )
    (CONNECT_DATA =
      (sid = ora803)
      (SERVER = DEDICATED)
    )
  )
------------------tnsnames.ora終わり--------------------


それぞれの接続文字列で、接続して実際にどちらのMTS接続かDEDICATE接続か
調べてみよう。

1.MTS接続の場合

SQL> CONNECT SCOTT/TIGER@O803
接続されました。
SQL> SELECT SID,SERVER FROM V$SESSION WHERE AUDSID =
(SELECT USERENV('SESSIONID') FROM DUAL);
      SID  SERVER
-----------------
        7  SHARED

V$SESSIONのSERVER列は 「SHARED」または、「NONE」で検索される。

2.DEDICATE接続の場合

SQL> CONNECT SCOTT/TIGER@O803D
接続されました。
SQL> SELECT SID,SERVER FROM V$SESSION WHERE AUDSID =
(SELECT USERENV('SESSIONID') FROM DUAL);
      SID  SERVER
--------------------
        7  DEDICATED

V$SESSIONのSERVER列は 「DEDICATED」で検索される。

ソートエリアサイズに収まらない場合は、一時表領域上でソート処理を行なう
ことになると説明した。
どこのソート領域で使用されるかは、Oracleユーザ毎に決まる。
具体的には、CREATE USERあるいはALTER USER時に指定するTEMPORARY TABLESPACE
である。

CREATE USER CHAMU IDENTIFIED BY OCHAMU
TEMPORARY TABLESPACE TEMP
DEFAULT TABLESPACE USERS;

DEFAULT TABLESPACEはCREATE TABLEなどを行なうときに表領域を指定しないと
このDEFAULT TABLESPACEで指定された表領域が使用される。

CREATE USER CHAMU IDENTIFIED BY OCHAMU;

上記のように作成するとTEMPORARY TABLESPACEとDEFAULT TABLESPACEはSYSTEM表領域に
なってしまうので注意が必要である。とくに、ソートをSYSTEM表領域で行なわせるのは、
絶対にやめた方がいい。

CREATE USER CHAMU IDENTIFIED BY OCHAMU;

SELECT USERNAME,DEFAULT_TABLESPACE,TEMPORARY_TABLESPACE FROM DBA_USERS
WHERE USERNAME = 'CHAMU';

USERNAME  DEFAULT_TABLESPACE  TEMPORARY_TABLESPACE
--------------------------------------------------
CHAMU     SYSTEM              SYSTEM



以上 忘年会予約係より 茅ヶ崎にて


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
▼ Oracle入門生活 ▼━━━━━━━━━━━━━━━━━━━━━━━━
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
<Oracle入門> ペンネーム モンキー・ターン
前回の「参照整合性制約ってなに?」で参照整合性制約がどういうものかは、
わかっていただけたと思います。
今回も、参照整合性制約の続きで「実際に参照整合性制約を作ってみよう」
をお送りしようと思います。

--- それでは、どっぷり入門生活スタート! -----------------------------

前回のメルマガの内容で、1つ間違いがありました。
大変申し訳ございませんでした。
間違い個所は、「一意キー」の説明で、NULL値を1つだけなら含むことができ
る。と書きましたが、NULL値に対する制限はありませんでした。つまり、NULL
値がいくつあろうが、「一意キー」はつけれます。大変申し訳ございませんで
した。

それでは、気を取り直して本編開始。
では、実際に参照整合性制約を作ってみよう。
作成時に必要なことは
  A.整合性制約は、表の作成時に指定する。指定方法は、「列制約構文」と
      「表制約構文」がある。
次に参照整合性制約を作るために、必要なことは
  1.親表が存在していること。
  2.親表の参照キー(親キー)は、主キーまたは、一意キーである必要が
      ある。
  3.参照整合性制約は、「子表」で定義する。

1.の説明をすると、前回でもお話したように参照性整合制約とは、異なる表
を共通の列により関連付け、これらの表が整合性のある正しい関係であること
を保証するものなので、表は「親表」→「子表」の順で作成する必要がある。
2.の説明は、前回のメルマガで説明したので省略。

それでは、実際に参照整合性制約を作ってみよう。

「親表」→ DEPT表     「親キー」  → DEPTNO
「子表」→ EMP表      「外部キー」→ DEPTNO
の条件で作っていこう。

<「列制約構文」で、定義した場合>-----------------------------------
列制約構文とは、列定義の一部として、整合性制約を定義する。この構文に
よって定義した整合性制約は、定義された列に対してだけ適応される。

「親表」→「子表」の順で作成するので

「親表」(DEPT)
CREATE TABLE DEPT
  ( DEPTNO NUMBER(2)     CONSTRAINT PK_DEPT PRIMARY KEY, ←「親キー」
    DNAME  VARCHAR2(14) ,                   ~~~~~~~~~~~
    LOC    VARCHAR2(13)                          ↑
  ) ;                                  「親キー」は、主キーまたは、
                                        一意キーが必要。


「子表」(EMP)
CREATE TABLE EMP
  ( EMPNO     NUMBER(4),
    ENAME     VARCHAR2(10),
    JOB       VARCHAR2(9),
    MGR       NUMBER(4),
    HIREDATE  DATE,
    SAL       NUMBER(7,2),
    COMM      NUMBER(7,2),
    DEPTNO    NUMBER(2)    CONSTRAINT FK_DEPTNO REFERENCES DEPT ←「外部キー」
  ) ;                                           ~~~~~~~~~~~~~~~
                                                       ↑
                                         参照整合性制約は、「子表」で定義する。

表の列を定義中に直接制約を定義する。


<「表制約構文」で、定義した場合>-----------------------------------
表制約構文とは、表定義の一部として整合性制約を定義する。この構文によ
って定義した整合性制約は、表の任意の列に対して適用することができる。
つまり、複数の列によって構成される場合はこちらの「表制約構文」を使用
する必要がある。

「親表」→「子表」の順で作成するので

「親表」(DEPT)
CREATE TABLE DEPT
  ( DEPTNO NUMBER(2) , 
    DNAME  VARCHAR2(14) ,
    LOC    VARCHAR2(13) ,
    CONSTRAINT PK_DEPT PRIMARY KEY(DEPTNO)  ←「親キー」
  ) ;                              ~~~~~~?表の任意の列を指定(複数可)
                                           複数列指定したい場合は、
                                           表制約構文を使わなければな
                                           らない。

「子表」(EMP)
CREATE TABLE EMP
  ( EMPNO     NUMBER(4),
    ENAME     VARCHAR2(10),
    JOB       VARCHAR2(9),
    MGR       NUMBER(4),
    HIREDATE  DATE,
    SAL       NUMBER(7,2),
    COMM      NUMBER(7,2),
    DEPTNO    NUMBER(2),
    CONSTRAINT FK_DEPTNO
    FOREIGN KEY(DEPTNO)        ←「外部キー」 参照整合性制約は、「子表」で定義する。
    REFERENCES DEPT(DEPTNO)
  ) ;


このように、表の列を定義中に制約を定義するのではなく、最後の表定義の
ところで任意の列名を指定して制約を定義する。

REFERENCESは、親表と親キーを構成する列または列の組み合わせを識別する。
簡単に言うと、どの親表と関連付けるかを指定するのである。
<構文>REFERENCES 親表名(親キー名)である。ここで、親キー名を省略す
ると、外部キーは自動的に親表の主キーを参照するのである。
                              ~~~~~~

今回は、この辺で「どっぷり入門生活」おしまい -------------------------

「どっぷり入門生活」は、基本的な質問をお待ちしています。また、このような
テーマでやってほしい等の要望が御座いましたら、メールでどしどしお寄せく
ださい。

以上 忘年会「幹事」 モンキー・ターンより

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
▼ 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 プロフェッショナルテクニック」をぜひご活用ください。

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

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

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
▼ 編集者より ▼━━━━━━━━━━━━━━━━━━━━━━━━━━
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
社内では風邪が流行っています。わたしも何となく、のどが痛いし...。20
世紀もあとわずか。何とか健康に新しい世紀を迎えたいものです。それでは
皆さん、よいお年を!		   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.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

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