Varje tabellutrymme har en eller flera datafiler som den använder för att lagra data.
Den maximala storleken på en datafil beror på databasens blockstorlek. Jag tror att det som standard ger dig max 32 GB per datafil.
För att ta reda på om den faktiska gränsen är 32gb, kör följande:
select value from v$parameter where name = 'db_block_size';
Jämför resultatet du får med den första kolumnen nedan, så kommer det att indikera vad din maximala datafilstorlek är.
Jag har Oracle Personal Edition 11g r2 och i en standardinstallation hade den en blockstorlek på 8 192 (32 GB per datafil).
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
Du kan köra den här frågan för att hitta vilka datafiler du har, vilka tabellutrymmen de är associerade med och vad du för närvarande har ställt in den maximala filstorleken till (som inte kan överstiga ovannämnda 32gb):
select bytes/1024/1024 as mb_size,
maxbytes/1024/1024 as maxsize_set,
x.*
from dba_data_files x
MAXSIZE_SET är den maximala storleken som du har ställt in datafilen på. Relevant är också om du har ställt in alternativet AUTOEXTEND till PÅ (namnet gör vad det antyder).
Om din datafil har en låg maxstorlek eller autoextend inte är på kan du helt enkelt köra:
alter database datafile 'path_to_your_file\that_file.DBF' autoextend on maxsize unlimited;
Men om dess storlek är på/nära 32gb är en autoextend på, ja, du behöver en annan datafil för tabellutrymmet:
alter tablespace system add datafile 'path_to_your_datafiles_folder\name_of_df_you_want.dbf' size 10m autoextend on maxsize unlimited;