質問: 一時表領域について システム運用開始前の性能試験で、自動拡張に設定していない一時表領域の容量を超えるoracleのエラー(ora-1652だったような)が出たため、sqlの修正を行っている最中です。 パフォーマンスチューニングやデータベース容量の設定などには詳しくないため、一時表領域を自動拡張に設定すべきかこのまま自動拡張にしないままにしておくべきかどうかの判断はつかないので、とりあえずそのままにして、一時表領域が容量を超えないようなsqlに修正しようとしています。 ただ、一時表領域のため、容量の見積が出来ず、実際にシステムを動かして確認するしかありません。 自社の環境でもoracleのエラーを再現させることが出来たのですが、一時表領域のサイズが小さくなりません。 これは、エラーのせいなのでしょうか? また、一時表領域を小さく(0バイト)にしたり、いったん削除して再作成したりは出来ないのでしょうか? alter tablespace、drop tablespace 共に実行できませんでした。 ちなみに、この一時表領域は、temporaryタイプでユーザのデフォルトの一時表領域になっています。
回答: 一時表領域のエクステントは開放されない=縮小不可です。よって、サイズを小さくするには「新しい一時表領域の作成」→「旧一時表領域の削除」となります。実際の手順は 1.alter tablespace temp add tempfile 新dbファイル名 2.alter database tempfile [旧dbファイル名] offline 3.alter database tempfile [旧dbファイル名] drop including datafiles です。ただし、実際の環境は手元にありませんので確認はしていません。また、あわせて初期化パラメタのsort_area_sizeの見直しもお勧めします。