ORA-01652: unable to extend temp segments through 128 (in tablespace space)
ORA-01652: unable to extend temp segments through 128 (in tablespace space)
An error is reported when "space = user tablespace:
-- View the tablespace size;
SQL> SELECT TABLESPACE_NAME, SUM (BYTES)/1024/1024 MB FROM DBA_FREE_SPACE GROUP BY TABLESPACE_NAME;
-- View the path where data files are stored in the tablespace:
SQL> SELECT TABLESPACE_NAME, BYTES/1024/1024 FILE_SIZE_MB, FILE_NAME FROM DBA_DATA_FILES;
-- Error handling: extra table space
-- Alter tablespace TESTSPACE add datafile 'd: \ myspace01.dbf' size 20480 m
When space = temp, an error is reported:
Role of temporary tablespace:
Temporary tablespace is mainly used for sorting operations in the database [such as creating indexes, order by and group by, distinct, union/intersect/minus/, sort-merge, join, and analyze commands], provides temporary computing space for managing indexes, such as creating indexes, importing data to IMP, and accessing views, after the computation is completed, the system automatically cleans it up.
When the temporary tablespace is insufficient, the operation speed is abnormally slow, and the temporary tablespace rapidly increases to the maximum space (the limit of expansion), and is generally not automatically cleared.
If the temporary tablespace is not set to auto-scale, when the temporary tablespace is not enough, the current affairs execution will report an error where the ora-01652 cannot extend the temporary segment, and the solution is also simple: 1. Set automatic expansion of temporary data files, or 2. Increase the temporary tablespace.
Temporary tablespace operations:
Query the default temporary tablespace:
SQL> select * from database_properties where property_name = 'default _ TEMP_TABLESPACE ';
PROPERTY_NAME
------------------------------
PROPERTY_VALUE
--------------------------------------------------------------------------------
DESCRIPTION
--------------------------------------------------------------------------------
DEFAULT_TEMP_TABLESPACE
TEMP
Name of default temporary tablespace
Query the temporary tablespace status:
SQL> select tablespace_name, file_name, bytes/1024/1024 file_size, autoextensible from dba_temp_files;
TABLESPACE_NAME
------------------------------
FILE_NAME
--------------------------------------------------------------------------------
FILE_SIZE AUT
-------------
TEMP
/Opt/Oracle/oradata/TEST/temp01.dbf
65 YES
Query the dynamic view of a temporary tablespace:
SQL> select * from v $ tempfile;
FILE # CREATION_CHANGE # CREATION_TIM TS # RFILE # STATUS
-----------------------------------------------------------------
Enabled bytes blocks CREATE_BYTES BLOCK_SIZE
----------------------------------------------------
NAME
--------------------------------------------------------------------------------
1 446436 09-DEC-08 3 1 ONLINE
Read write 68157440 8320 20971520 8192
/Opt/oracle/oradata/TEST/temp01.dbf
Extended temporary tablespace:
Method 1: Increase the temporary file size:
SQL> alter database tempfile '/opt/oracle/oradata/TEST/temp01.dbf' resize 100 m;
Database altered.
Method 2: Set the temporary data file to automatic extension:
SQL> alter database tempfile '/opt/oracle/oradata/TEST/temp01.dbf' autoextend on next 5 m maxsize unlimited;
An error is returned when the tablespace is extended:
SQL> alter database tempfile '/opt/oracle/oradata/TEST/temp01.dbf' resize 100 m;
Alter database tempfile '/opt/oracle/oradata/TEST/temp01.dbf' resize 100 m
*
ERROR at line 1:
ORA-00376: file 201 cannot be read at this time
ORA-01110: data file 201: '/opt/oracle/oradata/TEST/temp01.dbf'
SQL> alter database tempfile '/opt/oracle/oradata/TEST/temp01.dbf' autoextend on next 5 m maxsize unlimited;
Alter database tempfile '/opt/oracle/oradata/TEST/temp01.dbf' autoextend on next 5 m maxsize unlimited
*
ERROR at line 1:
ORA-00376: file 201 cannot be read at this time
ORA-01110: data file 201: '/opt/oracle/oradata/TEST/temp01.dbf'
The reason is that the temporary tablespace does not know why it is offline. It is successfully modified to online.
SQL> alter database tempfile '/opt/oracle/oradata/TEST/temp01.dbf' online;
Database altered.