[오라클]ORA-01467 처리
01.DB튜닝/002.SQL 튜닝 ORA-01467 발생 / 2012. 12. 19. 12:56
원인 : CREATE INDEX, ORDER BY, GROUP BY, DISTINCT, DECODE, UNION, INTERSECT, MINUS와 같은 문장을 통해 대용량 데이터를 분류(Sorting)할 때 Temporary 테이블스페이스가 부족할 때 발생하는 에러입니다.
조치 1
사용자의 SQL문에서 필요한 컬럼 만을 분류대상으로 설정한다. SELECT * FROM emp ORDER BY ename; -> SELECT empno, ename FROM emp ORDER BY ename;
조치 2
사용자의 SQL문에서 ORDER BY 절에 사용되는 컬럼에 대해 INDEX를 설정한다. SELECT * FROM emp ORDER BY ename; -> CREATE INDEX I_emp_ename ON emp(ename); SELECT empno, ename FROM emp;
조치 3
Temporary 테이블스페이스의 공간을 추가로 늘려주어야 합니다. SQL> ALTER TABLESPACE temp ADD DATAFILE ‘temp02.dbf’ SIZE 500M; 또는 SQL> ALTER DATABASE DATAFILE ‘temp01.dbf’ RESIZE 800M;
조치 4
SORT_AREA_SIZE의 값을 추가로 늘려주어야 합니다. SORT_AREA_SIZE = 1000000;
조치 5
각 사용자별로 Temporary 테이블스페이스를 생성하여 Contention 현상을 방지한다. SQL> CREATE TABLESPACE temp1 DATAFILE ‘temp1_01.dbf’ SIZE 500M; SQL> ALTER USER scott Temporary TABLESPACE temp1;