復旧手順
DBサーバでディスク使用率100%が結構発生する割に個人的によくコマンド忘れるので、備忘録として手順を記載します。
【手順1】 空きのあるディスク(フォルダ)に一時表領域を作成する
ALTER TABLESPACE TEMP ADD TEMPFILE '/tmp/tempxx.dbf' SIZE 128M AUTOEXTEND OFF;
※ファイル名は何でもよい。ここでは「/tmp/tempxx.dbf」としている。
【手順2】 ディスク圧迫している一時表領域のデータファイルを削除するためオフラインにする
ALTER DATABASE TEMPFILE '/usr/oracle/app/oradata/db01/temp01.dbf' OFFLINE
※ここではディスク圧迫している一時表領域のデータファイルを「/usr/oracle/app/oradata/db01/temp01.dbf」としている。
【手順3】 手順2でオフラインにしたデータファイルを削除する
ALTER DATABASE TEMPFILE '/usr/oracle/app/oradata/db01/temp01.dbf' DROP INCLUDING DATAFILES
削除できない場合はアプリが使用している可能性があるので下記SQLでプロセスを確認し、対象のプロセスを終了させてから再度削除を試みる。
select
s.username, s.osuser, s.machine, s.terminal, s.program,
from
v$session s, v$process p
where
s.paddr = p.addr;
【手順4】 削除した一時表領域のデータファイルを再作成する
ALTER TABLESPACE TEMP ADD TEMPFILE '/usr/oracle/app/oradata/db01/temp01.dbf' SIZE 2048M AUTOEXTEND OFF
【手順5】 手順1で作成したデータファイルを削除するためオフラインにする
ALTER DATABASE TEMPFILE '/tmp/tempxx.dbf' OFFLINE
【手順6】 手順5でオフラインにしたデータファイルを削除する
ALTER DATABASE TEMPFILE '/tmp/tempxx.dbf' DROP INCLUDING DATAFILES
参考
以上。