一時表領域に関するチューニングメモ †◆チューニング指針 (参照URL) =============================================================== /* 共有サーバーか専用サーバーかを確認する */ SELECT CASE WHEN SERVER = 'SHARED' THEN '共有サーバー' WHEN SERVER = 'DEDICATED' THEN '専用サーバー' ELSE '?接続' END CASE FROM V$SESSION WHERE USERNAME = 'DAISUKE' /* メモリソート率を求める sorts (memory) メモリー上でソートした回数 sorts (disk) ディスク上でソートした回数 sorts (rows) ソートされた行の合計数 ※下記SQLで得られるのは,ORACLEが起動してからのメモリーソート率 ※メモリーソート率が90%以下の場合は初期化パラメータを調整 */ SELECT A.VALUE * 100 / (A.VALUE+B.VALUE) MEM_SORT_RATE FROM V$SYSSTAT A,V$SYSSTAT B WHERE A.NAME='sorts (memory)' AND B.NAME='sorts (disk)'; /* workarea_size_policy を調べる */ select value "workarea_size_policy" from V$PARAMETER where name = 'workarea_size_policy' /* 共有サーバーの場合、または workarea_size_policy が MANUAL の場合は 初期化パラメータ:SORT_AREA_SIZE を調整する */ /* 専用サーバーの場合、または workarea_size_policy が AUTO の場合は 初期化パラメータ:PGA_AGGREGATE_TARGET を調整する */ (参照) http://otn.oracle.co.jp/products/oracle9i/daily/020.html =============================================================== --------------------------------------------------------------- --------------------------------------------------------------- /* 現在使用している一時表領域の確認 */ select TEMPORARY_TABLESPACE from USER_USERS; /* db_block_size, sort_area_size の確認 */ select name, value, value/1024 || 'k' FROM V$PARAMETER where name in ('db_block_size', 'sort_area_size'); /* 必要サイズの算出(initial) ※db_block_size + n * sort_area_size (ここではn=1とした ) */ select sum(val) "initial_size(単位:K)" from ( select value/1024 val FROM V$PARAMETER where name = 'db_block_size' union select value/1024 * 1 val FROM V$PARAMETER where name = 'sort_area_size' ); /* 必要サイズの算出(datafile) ※DBMS_SPACEパッケージを使用した方がよいかも */ select max(table_size)/1024 "datafile_size(単位:K)" from ( select table_name, num_rows * avg_row_len table_size from user_tables ); /* 一時表領域の作成 */ create tablespace 一時表領域名 datafile '/xxxx/xxxxx/xxxxx/xxxxx.ora' size 算出したdatafileサイズ * 2 default storage (initial 算出したinitialサイズ next 算出したinitialサイズ pctincrease 0) temporary; /* ユーザの一時表領域を変更する */ ALTER USER ユーザ名 TEMPORARY TABLESPACE 一時表領域名; |