UJP - Oracleで一時表領域(TEMPテーブルスペース)を拡張したり小さくしたりする

Life is fun and easy!

不正IP報告数

Okan Sensor
 
メイン
ログイン
ブログ カテゴリ一覧

ブログ - Oracleで一時表領域(TEMPテーブルスペース)を拡張したり小さくしたりする

Oracleで一時表領域(TEMPテーブルスペース)を拡張したり小さくしたりする

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2019/3/16 23:00
 例えば,PGAの物理メモリ内でソートができなかったりしたら,TEMP表領域を使ってソートをおこなう.この時に自動的に拡張される.
 「自動的に拡張する」というのは拡張された時に少し処理が(何もしないよりは)重たくなるので,オンライン処理中に「自動的に増える」というイベントが発生しないようにしたい.

 自動的に増えないようにするということは,十分なサイズのTEMP表領域を準備しておくということになるので,今回,それを増やしてみる.

現状確認

 まずは,現在の容量を確認.
SQL> select a.FILE_NAME,a.TABLESPACE_NAME,a.BYTES from dba_temp_files a;🆑

FILE_NAME
--------------------------------------------------------------------------------
TABLESPACE_NAME 		    BYTES
------------------------------ ----------
/u01/app/oracle/oradata/XE/temp.dbf
TEMP				 20971520🈁


SQL>
 桁数が多くてクラクラする...ので,これはバイト単位なので,メガバイトに変換する.
SQL> select a.FILE_NAME,a.TABLESPACE_NAME,(a.BYTES/1024/1024) from dba_temp_files a;🆑

FILE_NAME
--------------------------------------------------------------------------------
TABLESPACE_NAME 	       (A.BYTES/1024/1024)
------------------------------ -------------------
/u01/app/oracle/oradata/XE/temp.dbf
TEMP						20🈁


SQL>
 20MBでした.

増やす

 20MBだったので,これを100MBに増やす.
SQL> alter database tempfile '/u01/app/oracle/oradata/XE/temp.dbf' resize 100M;🆑

データベースが変更されました。🈁

SQL>
 確認する.
SQL> select a.FILE_NAME,a.TABLESPACE_NAME,(a.BYTES/1024/1024) from dba_temp_files a;

FILE_NAME
--------------------------------------------------------------------------------
TABLESPACE_NAME 	       (A.BYTES/1024/1024)
------------------------------ -------------------
/u01/app/oracle/oradata/XE/temp.dbf
TEMP					       100


SQL>
 増えた模様.

TEMP領域がどれくらい使われているか確認

 100MBに増やして見たものの,実際に使われているのはいくらなのか確認.

SQL> select tablespace_size / 1024 / 1024,allocated_space / 1024 /1024,🆑
  2  free_space / 1024 / 1024 from dba_temp_free_space;🆑

TABLESPACE_SIZE/1024/1024 ALLOCATED_SPACE/1024/1024 FREE_SPACE/1024/1024
------------------------- ------------------------- --------------------
		      100			  2		      99🈁

SQL>
 100MBのうちの使用済みは2MBで,99MBは余っている模様.数値が合わないのは誤差か.これだともったいない.

 勿体無いので,削減する.

TEMP領域を小さくする

 今回は100MB用意したけれど,実際に使われているのが2MBだったので,50MBに減らす.
SQL> alter tablespace TEMP shrink space keep 50M;🆑

表領域が変更されました。🈁

SQL>
 これで100MBから50MBに変更された.確認する.
SQL> select tablespace_size / 1024 / 1024,allocated_space / 1024 /1024,
  2  free_space / 1024 / 1024 from dba_temp_free_space;

TABLESPACE_SIZE/1024/1024 ALLOCATED_SPACE/1024/1024 FREE_SPACE/1024/1024
------------------------- ------------------------- --------------------
		       51			  1		      50

SQL>
 51MBの領域があって,1MB使っていて残り50MB余っている.数値が違うのは誤差.

トラックバック


広告スペース
Google