web-dev-qa-db-ja.com

ORA-01652:表領域SYSTEMで一時セグメントを128拡張できません:拡張方法

542512行を含む大きなOracleテーブルがあります。 3つの列があり、次のコマンドでインデックスを作成しようとすると:

  CREATE INDEX FTS_INDEX ON FILTERED_TEKLI_IIS_TABLOSU (ilAdi,ilceAdi,caddeAdi)

Oracleは次のエラーを出します。

SQL Error: ORA-01652: unable to extend temp segment by 128 in tablespace SYSTEM
01652. 00000 -  "unable to extend temp segment by %s in tablespace %s"
*Cause:    Failed to allocate an extent of the required number of blocks for
       a temporary segment in the tablespace indicated.
*Action:   Use ALTER TABLESPACE ADD DATAFILE statement to add one or more
       files to the tablespace indicated.

このエラーを検索しましたが、大きなテーブルでテーブルの結合、インデックスの作成などの操作を実行するときに、Oracleが中間データを格納するのに十分なスペースがないときに生成されることがわかりました。しかし、これに対する明確な解決策は見つかりませんでした。これらのALTER TABLESPACEおよびADD DATAFILEコマンドは仕事をしているように見えますが、これらをどのように呼び出すか、どのパラメーターを使用するかはわかりません。任意の助けをいただければ幸いです。

34
Ufuk Can Bicici

各表領域には、データを格納するために使用する1つ以上のデータファイルがあります。

データファイルの最大サイズは、データベースのブロックサイズに依存します。デフォルトでは、データファイルごとに最大32GBになると思います。

実際の制限が32 GBかどうかを確認するには、次を実行します。

select value from v$parameter where name = 'db_block_size';

取得した結果を下の最初の列と比較すると、最大データファイルサイズがわかります。

Oracle Personal Edition 11g r2があり、デフォルトのインストールでは8,192ブロックサイズ(データファイルあたり32GB)でした。

Block Sz   Max Datafile Sz (Gb)   Max DB Sz (Tb)

--------   --------------------   --------------

   2,048                  8,192          524,264

   4,096                 16,384        1,048,528

   8,192                 32,768        2,097,056

  16,384                 65,536        4,194,112

  32,768                131,072        8,388,224

このクエリを実行して、所有しているデータファイル、それらが関連付けられているテーブルスペース、および最大ファイルサイズを現在設定しているもの(前述の32GBを超えることはできません)を見つけることができます。

select bytes/1024/1024 as mb_size,
       maxbytes/1024/1024 as maxsize_set,
       x.*
from   dba_data_files x

MAXSIZE_SETは、データファイルに設定した最大サイズです。関連するのは、AUTOEXTENDオプションをONに設定したかどうかです(その名前が示すとおりに機能します)。

データファイルの最大サイズが小さい場合、または自動拡張がオンになっていない場合は、次を実行できます。

alter database datafile 'path_to_your_file\that_file.DBF' autoextend on maxsize unlimited;

ただし、そのサイズが32GBに近い場合、自動拡張がオンになっている場合は、はい、テーブルスペース用に別のデータファイルが必要です。

alter tablespace system add datafile 'path_to_your_datafiles_folder\name_of_df_you_want.dbf' size 10m autoextend on maxsize unlimited;
52
Brian DeMilia