버전 비교

  • 이 줄이 추가되었습니다.
  • 이 줄이 삭제되었습니다.
  • 서식이 변경되었습니다.
댓글: Migrated to Confluence 5.3
  • 오라클에서 Temporary file은 메모리에서 완료할 수 없는 대량의 정렬작업등이 발생 했을 때에, 임시적으로 사용되는 디스크 공간이다. temporary tablespace상에만 tempfile을 사용 가능하며, temporary tablespace에는 global temporary table을 생성해줄 수도 있고, 대량의 정렬 작업이나, 출력값이 메모리 안에 다 들어가지 않을 경우등에 임시로 사용된다.
  • 템프 파일에 저장되는 내용들은 복구에 사용할 필요가 없다는 의미가 되므로, 기본적으로 이에 대한 리두 로그는 발생되지 않는다.
  • 만약 운영체제에서 지원된다면, 템프파일은 처음 생성시에 실제로 공간이 사용되지는 않는다.

 

 

코드 블럭
languagebash
sys@CATDB> !df
Filesystem           1K-blocks      Used Available Use% Mounted ON
/dev/mapper/VolGroup00-LogVol00
                      19172036  12216852   5965592  68% /
/dev/sda1               101086     12620     83247  14% /boot
tmpfs                   255104         0    255104   0% /dev/shm

sys@CATDB> !ls -l /home/oracle/datafile/catdb
합계 2290248
-rw-r----- 1 oracle dba 314580992  1월 20 09:04 catalog01.dbf
-rw-r----- 1 oracle dba   7061504  1월 20 11:39 control01.ctl
-rw-r----- 1 oracle dba   7061504  1월 20 11:39 control02.ctl
-rw-r----- 1 oracle dba   7061504  1월 20 11:39 control03.ctl
-rw-r----- 1 oracle dba  52429312  1월 20 11:39 redo01.log
-rw-r----- 1 oracle dba  52429312  1월 20 09:03 redo02.log
-rw-r----- 1 oracle dba  52429312  1월 20 09:04 redo03.log
-rw-r----- 1 oracle dba 429924352  1월 20 11:37 sysaux01.dbf
-rw-r----- 1 oracle dba 429924352  1월 20 11:37 system01.dbf
-rw-r----- 1 oracle dba  99622912  1월 20 09:31 temp01.dbf
-rw-r----- 1 oracle dba 330309632  1월 20 11:37 undotbs01.dbf
-rw-r----- 1 oracle dba 560996352  1월 20 09:04 users01.dbf

-- df 명령을 통해 확인되는 여유 공간은 5,965,592KB, 
-- ls 명령을 통해 확인되는 해당 디렉토리 사용량은 2,290,248KB이다.

sys@CATDB> CREATE TEMPORARY TABLESPACE temptemp tempfile '/home/oracle/datafile/catdb/temptemp01.dbf' SIZE 10000m;

TABLESPACE created.

-- 약 10GB 짜리 템프파일을 추가한다.

sys@CATDB> !ls -l /home/oracle/datafile/catdb                                                                      
합계 2290324
-rw-r----- 1 oracle dba   314580992  1월 20 09:04 catalog01.dbf
-rw-r----- 1 oracle dba     7061504  1월 20 11:40 control01.ctl
-rw-r----- 1 oracle dba     7061504  1월 20 11:40 control02.ctl
-rw-r----- 1 oracle dba     7061504  1월 20 11:40 control03.ctl
-rw-r----- 1 oracle dba    52429312  1월 20 11:40 redo01.log
-rw-r----- 1 oracle dba    52429312  1월 20 09:03 redo02.log
-rw-r----- 1 oracle dba    52429312  1월 20 09:04 redo03.log
-rw-r----- 1 oracle dba   429924352  1월 20 11:37 sysaux01.dbf
-rw-r----- 1 oracle dba   429924352  1월 20 11:37 system01.dbf
-rw-r----- 1 oracle dba    99622912  1월 20 09:31 temp01.dbf
-rw-r----- 1 oracle dba 10485768192  1월 20 11:40 temptemp01.dbf
-rw-r----- 1 oracle dba   330309632  1월 20 11:37 undotbs01.dbf
-rw-r----- 1 oracle dba   560996352  1월 20 09:04 users01.dbf

sys@CATDB> !df
Filesystem           1K-blocks      Used Available Use% Mounted ON
/dev/mapper/VolGroup00-LogVol00
                      19172036  12216928   5965516  68% /
/dev/sda1               101086     12620     83247  14% /boot
tmpfs                   255104         0    255104   0% /dev/shm

-- ls 명령을 통해 확인되는 해당 템프파일의 사이즈는 약 10GB이지만, 해당 디렉토리의 사용량은 76KB 증가했다. 
-- df 명령을 통해 확인되는 디스크 여유 공간도 76KB 줄어든 5,965,516KB이다.

 

  • 위와 같은 상황에서 템프파일이 사용되는 작업이 생기면 실제 사용량에 따라서 최대 10GB까지 증가하게 된다. 단, 디스크 여유공간은 6GB에도 못미치고 있기 때문에 실제로는 디스크 공간 부족이라는 문제가 더 먼저 발생하게 된다. 또한 디스크 공간 부족으로 인해 부가적인 문제가 발생하게 될 수도 있으므로, 가능하다면 cp --sparse=never 혹은 dd 명령어 등을 통해서, 템프 파일이 사용하게될 공간을 미리 확보해두는 것이 좋을 수도 있다.