web-dev-qa-db-ja.com

Oracleの一時TEMPテーブルスペースを縮小すると害が生じる可能性がありますか?

1TBの巨大なTEMPテーブルスペースがあります。 30個のデータファイルで構成されており、それぞれが31GBのサイズです。

TEMPテーブルスペース全体のサイズは1TBですが、使用されるサイズは約600MBです。

テーブルスペースを縮小したいのですが、オプションを使用するかどうか悩んでいます

a)各データファイルを個別に縮小するには:

    ALTER TABLESPACE temp SHRINK TEMPFILE '/u02/Oracle/data/lmtemp01.dbf' KEEP 10MB
    ALTER TABLESPACE temp SHRINK TEMPFILE '/u02/Oracle/data/lmtemp02.dbf' KEEP 10MB
    ALTER TABLESPACE temp SHRINK TEMPFILE '/u02/Oracle/data/lmtemp03.dbf' KEEP 10MB

...

または

b)テーブルスペース全体を縮小するには:

    ALTER TABLESPACE TEMP SHRINK SPACE KEEP 300MB;

c) KEEPなしで縮小します(そのため、最小に縮小されます)

   ALTER TABLESPACE TEMP SHRINK SPACE;

Oracle Enterprise 12.2を使用しています。

不思議なんだけど:

  1. 「最良」のオプションはどれですか?
  2. なぜオプションCを常に使用しないのですか?
  3. 縮小時にTEMP一時テーブルスペースに何かを保持したいのはなぜですか(最低限必要な裸のシステムを除いて)?

  4. TEMPテーブルスペースを縮小することで害はありますか?私はそれを運用データベースで実行し(DBに誰も接続していないときの稼働時間外)、確実にする必要があります。

Oracle Enterprise 12.2で実行しています。

3
korodani

3つのオプションはすべて機能しますが、十分な一時テーブルスペースがないためにクエリがpostアクティビティに失敗しないように、本番環境では最初または2番目のオプションを使用することをお勧めします。このブログで定義されているクエリと同様のクエリを使用して使用履歴パターンを特定し、それをキープサイズに使用することをお勧めします。 https://zukus.blogspot.com/2016/06/temp-tablespace-usage-history.html

1
Prat