関して、次のような指針がある。PCTINCREASE=0にする。」(メルマガ38回参照)この指針は、簡単に言ってしまえば、メモリ上のSORT_AREA_SIZEで収まりきらなかったソート領域をディスク上の一時表領域に出力するのであるが、そのサイズが最高でSORT_AREA_SIZEと同じサイズ分ずつ出力されるということだと思われる。要とするとき、SORT_AREA_SIZEで指定したサイズ分、10エクステント確保されるイメージである。)さらに、細かい指針として、一時表領域のセグメントヘッダー(Oracleブロックの1ブロック分)を考慮して、以下のような指針も見たことがある。PCTINCREASE=0」では、どちらの指針が正しいのか、またこれらの指針は正しいと言えるのか検証してみよう。この検証を行なうにあたり次のようなことを考えた。1.ソートを伴なうあるSELECT文を発行し、ディスク上でソートをするぎりぎりのSORT_AREA_SIZEの値つまり、SORT_AREA_SIZEがあと1大きければ、ディスク上ではなくメモリ上でソートを行なうような閾値を求める。2.1.により、本当にメモリ上で必要な領域というのがわかるはずである。SORT_AREA_SIZEというのは、例えば10Mに設定されていても、EMP表のような件数の少ないデータをメモリ上でソートした場合、メモリ上で10M確保する訳ではなく、「必要な分だけ」メモリ上に確保する。SORT_AREA_SIZEの大きさ分メモリが確保される訳ではないので実際メモリ上でどれくらいの領域を必要としたのかが見えない。ところが1.のSORT_AREA_SIZEの閾値を見つけることにより、メモリ上で必要とした領域がわかるはずである。3.1.の閾値を見つけるにあたってメモリ上でソートを行なったか、ディスク上でソートを行なったかを簡単に判断するためにAUTOTRACEの機能を使う。実行計画や、ある一部の統計情報を確認するには、AUTOTRACEが簡単である。(disk)を取得する。4.SORT_AREA_SIZEの閾値を見つけるにあたり、初期化パラメータファイル(init.ora)をいちいち変更してOracleを再起動するのではなく、以下のようなコマンドでセッションごとに変更することにする。SORT_AREA_SIZE=3241985;初期パラメータには、セッションレベルで変更できるもの、システム全体に対して変更できるもの、どちらでも変更できないものなどがある。それらは、V$PARAMETERのISSES_MODIFIABLE,ISSYS_MODIFIABLE列で確認できる。SYSTEM)では、実際にSORT_AREA_SIZEを検索してみよう。SESSIONコマンドで変更できることを意味する。DEFFERDコマンドで変更できることを意味する。SYSTEMを試してみようか。指定した初期化パラメータはこのオプションでは修正できません。DEFERRED;システムが変更されました。上記を見てわかるように、ISSYS_MODIFIABLE=DEFFERDのパラメータは、DEFFERDオプションをつけないと「ORA-02096」が発生する。DEFFERDで変更されたパラメータの値は、既に接続されているセッションでは反映されず、それ以後に接続してきたセッションにのみ反映される。NEXT=2KPCTINCREASE=0にすることにより、SORT_AREA_SIZEの閾値でソートした際にどれだけエクステントが発生したかを調べる。このソート用の表領域は、ソート終了後に空領域として解放されない専用一時表領域(PERMANENT)とする。6.ソート処理は以下のSQL文で行なう。EMPNO;(T10MAN_ORGはEMP表を10万件に拡張したようなもの)次回は、上記6つの前提条件をふまえて、検証の結果を示す。モンキーターン前回は、制約の実行タイミングを見ていただいた。今回は、前回の続きで「整合性制約の管理」をお送りしよう。内容は、遅延制約の設定方法についてである。設定とは、その制約が遅延可能かどうかを設定し、且つ初期状態は即時か遅延かを設定することである。制約の遅延に関する属性は、3種類である。)ここで、遅延不可に初期状態は遅延を指定しようとすると、遅延不可の制約に初期状態を遅延にしようとしているので、エラーが返るのである。)の指定を省略した場合、デフォルトで3.の遅延不可に設定される。CONSTRANTS文を使っても遅延状態には出来ないので注意が必要である。自動的に遅延可能に設定される。)の指定を省略した場合、デフォルトで初期即時に設定される。~~~~~~~~~~これは、遅延不可に設定される(デフォルト)。一度遅延不可に設定されると遅延制約状態への変更は、出来ないので注意が必要である。)の指定をしないと、遅延制約は使用できないのである。~~~~~~~~~~~~~~~~~~これは、遅延可能で初期状態は遅延状態に設定される。~~~~~~~~~~これは、遅延可能で初期状態は即時状態に設定される。~~~~~~~~~~~~~~これは、遅延不可で初期状態は即時状態に設定される。意していただきたいのは、遅延制約が使用可能な制約に設定しただけで、制約が遅延制約状態であるわけではないのである。;これは、暗黙的にすべての制約が含まれます。ROLLBACKによりトランザクションが終了するまでである。トランザクションが終了すると、制約の状態は初期状態に戻る。指定すると、すべての制約に対しての変更となる。————————-「どっぷり入門生活」では、基本的な質問をお待ちしています。このようなテーマでやってほしい等の要望がございましたら、メールでどしどしお寄せください。reserved.トップページ企業概要プライバシーポリシ。