[Oracle] 一時表領域(temp tablespace)の再作成・縮小手順

Oracle Databaseの一時表領域の再作成・縮小方法を紹介します。

一時表領域はソート処理やUNION処理で利用する大切な表領域になりますが、

「表領域サイズが拡大しすぎたり」、

「違う領域に移動したり」するケースもあります。

通常の表領域と再作成・縮小手順が違うので本記事を参考にしてみてください。

目次

再作成・縮小手順の方針

再作成や縮小は直接行うことができません。

そのため一時的にdummy用の一時表領域を作成して、一時表領域を作成します。

以下が手順の流れになります。

  1. ダミーの一時表領域を作成
  2. 1.で作成した一時表領域をデフォルト一時表領域に指定
  3. 対象の一時表領域を削除
  4. 一時表領域を作成
  5. 4.で作成した一時表領域をデフォルト表領域に指定
  6. 1.で作成したダミーの一時表領域を削除

再作成・縮小手順の手順:

まずはダミーの一時表領域を作成します。

一時表領域を作成するには

create temporary tablespace ~ tempfile

文を利用します。

create temporary tablespace dummy tempfile

'/u01/app/oracle/oradata/ORCL18C/dummy.dbf' size 10m autoextend on;

作成したダミーの一時表領域をデフォルト一時表領域に指定します。

デフォルト一時表領域のしては

alter database 

文で実施します。

alter database default temporary tablespace dummy;

再作成・縮小対象の一時表領域を削除します。

削除は

drop tablespace

文で実施します。

drop tablespace TEMP including contents and datafiles;

一時表領域を作成します。

create temporary tablespace TEMP tempfile

'/u01/app/oracle/oradata/ORCL18C/temp01.dbf' size 50m autoextend on;

作成した一時表領域をデフォルト表領域に指定します。

alter database default temporary tablespace TEMP; 

1.で作成したダミーの一時表領域を削除します。

drop tablespace dummy including contents and datafiles; 

補足:一時表領域の確認SQL

今回の手順で実施した確認用SQLもあわせて紹介します。

一時表領域のデータファイルとサイズを確認

一時表領域のデータファイルとサイズ確認する時は、

dba_temp_files

ビューを確認します。

set linesize 300;
set pagesize 100;
col tablespace_name for a10
col file_name for a50
select tablespace_name, file_name, bytes/1024/1024 as "SIZE(MB)"
from dba_temp_files order by file_name;
以下が実行例になります。
17:15:51 SYS@orcl18c > set linesize 300;
17:16:08 SYS@orcl18c > set pagesize 100;
17:16:08 SYS@orcl18c > col tablespace_name for a10
17:16:08 SYS@orcl18c > col file_name for a50
17:16:08 SYS@orcl18c > select tablespace_name, file_name, bytes/1024/1024 as "SIZE(MB)"
17:16:08 2 from dba_temp_files order by file_name;

TABLESPACE FILE_NAME SIZE(MB)
---------- -------------------------------------------------- ----------
DUMMY /u01/app/oracle/oradata/ORCL18C/dummy.dbf 10
TEMP /u01/app/oracle/oradata/ORCL18C/temp01.dbf 50

デフォルト一時表領域の確認

デフォルト一時表領域を確認する時は、

database_properties

ビューを確認します。

set linesize 300; set pagesize 100; col property_name for a30; col property_value for a35; select property_name, property_value from database_properties where property_name = 'DEFAULT_TEMP_TABLESPACE'; 

以下実行例になります。

17:13:39 SYS@orcl18c > set linesize 300;
17:14:22 SYS@orcl18c > set pagesize 100;
17:14:22 SYS@orcl18c > col property_name for a30;
17:14:22 SYS@orcl18c > col property_value for a35;
17:14:22 SYS@orcl18c > select property_name, property_value
17:14:22 2 from database_properties
17:14:22 3 where property_name = 'DEFAULT_TEMP_TABLESPACE';

PROPERTY_NAME PROPERTY_VALUE
------------------------------ -----------------------------------
DEFAULT_TEMP_TABLESPACE TEMP
よかったらシェアしてね!
  • URLをコピーしました!
目次