오라클의 임시 사용 모니터링
오라클의 임시 테이블스페이스는 기존 테이블스페이스와 같은 방식으로 관리되지 않기 때문에 일부 사람들에게는 여전히 미스테리인 것으로 보인다. 익스텐트는 할당되고 다시 사용되므로 공간 관리는 전통적인 테이블 스페이스에 대해 그렇게 보이지 않습니다. 그 때문에 공간 오류는 다르게 관리됩니다. 임시 테이블스페이스를 관리하는 방법과 데시벨의 처분에는 어떤 도구가 있는지 살펴보겠습니다.
버전 8.1 부터 시작.5 오라클은 익스텐트가 할당되고 필요에 따라 세션에 할당되는’진정한’임시 테이블 공간을 제공했습니다. 데이터베이스가 실행되는 동안 익스텐트는 절대 삭제되지 않으므로 적절하게 활용된 임시 테이블스페이스는 항상 0’여유’공간을 갖습니다. 이 의미에서’무료’는 할당되지 않은 것을 의미하며 임시 테이블 공간의 모든 것이 할당되지만 그것이 사용된다는 것을 의미하지는 않습니다. 이것이 기존의 공간 관리가 임시 테이블 스페이스에 자리하지 않는 이유입니다.
임시 테이블 스페이스는 어떻게 관리됩니까? 여러 뷰를 통해 수행됩니다.:
V$임시 파일에 저장하여 관리 V$TEMPSTAT V$TEMP_EXTENT_MAP V$TEMP_EXTENT_POOL V$TEMP_SPACE_HEADER V$TEMPSEG_USAGE(Oracle9i 이상 자료)V$SORT_USAGE(Oracle8.1.7,8.1.6 및 8.1.5)
V$TEMP_EXTENT_MAP 보고서의 모든 할당된 범위 에서 임시 테이블스페이스:
SQL> desc v$temp_extent_map Name Null? Type ----------------------------------------- -------- ---------------------------- TABLESPACE_NAME NOT NULL VARCHAR2(30) FILE_ID NUMBER BLOCK_ID NUMBER BYTES NUMBER BLOCKS NUMBER OWNER NUMBER RELATIVE_FNO NUMBER
가장 도움이 전망을 관리하는 임시 테이블스페이스가 V$TEMP_EXTENT_POOL V$TEMPSEG_USAGE/V$SORT_USAGE. 또한 임시 파일에 의해 임시 테이블스페이스에서 사용된 모든 익스텐트에 대해 보고합니다:사용자별로 모든 테이블스페이스에 대한 임시 세그먼트 사용량을 표시합니다:
SQL> desc v$tempseg_usage Name Null? Type ----------------------------------------- -------- ---------------------------- USERNAME VARCHAR2(30) USER VARCHAR2(30) SESSION_ADDR RAW(8) SESSION_NUM NUMBER SQLADDR RAW(8) SQLHASH NUMBER SQL_ID VARCHAR2(13) TABLESPACE VARCHAR2(31) CONTENTS VARCHAR2(9) SEGTYPE VARCHAR2(9) SEGFILE# NUMBER SEGBLK# NUMBER EXTENTS NUMBER BLOCKS NUMBER SEGRFNO# NUMBER
임시 테이블스페이스 사용 모니터링은 시간 경과에 따라 임시 테이블스페이스 사용량 모니터링을 쿼리하는 간단한 작업입니다.:
select segtype, extents, blocksfrom v$tempseg_usagewhere tablespace = 'TEMP';
이러한 모니터링은 실행 가능한 데이터를 생성하지 않는다는 것을 기억하십시오.
데이터 파일 당 할당되고 실제로 사용되는 익스텐트 수를 알고 싶다면 다음 쿼리는 상당히 유용한 보고서를 생성합니다:
select tablespace_name, file_id, extents_cached extents_allocated, extents_used, bytes_cached/1024/1024 mb_allocated, bytes_used/1024/1024 mb_usedfrom v$temp_extent_pool/
다시 말하지만,그러한 보고서를 기반으로 조치를 취할 필요가 없습니다.
누가 임시 공간을 사용하고 있으며,어떤 쿼리를 실행하고 있으며 각 공간을 얼마나 소비합니까? 또한 완료하기가 매우 쉬운 작업입니다:
select u.username, s.sql_fulltext, u.segtype, u.extents, u.blocksfrom v$tempseg_usage u, v$sql swhere s.sql_id = u.sql_id;
이 뷰는 사용 가능한 공간 및 사용 가능한 공간에 대한 보다 세분화된 뷰를 제공합니다; 임시 파일의 할당 된 공간과 할당되지 않은 공간을 파일별로 나열합니다. 할당된 것은 사용을 의미하지 않는다는 것을 명심하십시오.
나는 임시 테이블 공간의 적절한 크기 조정과 관련하여(웹의 다른 곳에서)나 자신을 인용 할 것이다:”임시 테이블 공간에 얼마나 많은 공간이 필요합니까? 이는 시스템의 활성 상태,동시 활성 세션의 수,트랜잭션의 크기 및 디스크 공간의 양에 따라 달라집니다. 사용 패턴,사용자 수 및 데이터 볼륨이 변경됨에 따라 시간이 지남에 따라 임시 테이블 공간 크기를 늘리는 것은 부끄러운 일이 아닙니다. (예를 들어,테이블스페이스 온도에서 임시 세그먼트를 128 까지 확장할 수 없음). 이 값을 사용하여 임시 테이블스페이스가 오류를 생성하는 트랜잭션을 완료하는 데 필요한 바이트 수를 파악해야 합니다. 이러한 규칙은 일반적으로 유일한 도구가 망치가되고 모든 작업이 못으로 끝나는 상황을 만들고,보다 더 자주는 아니지만,당신은 유일한’도구’로 그 엄지 손가락을 공격하기 때문에 크기를 임시 테이블 공간에’엄지 손가락의 규칙’이 없다 당신은 주어졌다.”
임시 테이블 공간이 얼마나 큰지 알 수 있습니다.:
SQL> select tablespace_name, sum(bytes)/1024/1024 MB 2 from dba_temp_files 3 group by tablespace_name 4 /TABLESPACE_NAME MB------------------------------ ----------TEMP 1024SQL>
또한 임시 테이블스페이스와 연결된 파일도 보고할 수 있습니다:
SQL> select tablespace_name, file_name, bytes 2 from dba_temp_files 3 order by tablespace_name, file_name 4 /TABLESPACE_NAME FILE_NAME BYTES--------------- ------------------------------------------------------- ----------TEMP /u2/orawiz/parlopnett/temp01.dbf 1073741824SQL>
임시 테이블스페이스의 크기를 줄이려면 데이터베이스를 종료하고 제한 모드로 열고 임시 파일(또는 임시 파일)의 크기를 작게 조정한 다음 데이터베이스를 종료하고 시작해야 합니다. 간단한’데이터베이스 임시 파일 크기 조정 변경’으로 공간을 추가하는 것은 거의 관련이 없습니다.
임시 테이블스페이스가 없거나 사용할 수 없는 경우 어떻게 됩니까? 오라클은 이것을 표시 할 것입니다:
SQL> select * from mybigtable order by mycoolkey;select * from mybigtable order by mycoolkey*ERROR at line 1:ORA-01129: user's default or temporary tablespace does not exist SQL>
이 오류 메시지가 표시되면 임시 테이블스페이스가 존재하고 온라인 상태인지 확인합니다. 발견 한 문제를 수정하십시오(누락 된 테이블 공간을 만들거나 임시 파일을 다시 온라인 상태로 두십시오).
테이블스페이스가 존재하지만 임시 파일이 할당되지 않은 경우(백업에서 데이터베이스 복원/복구 후 발생할 수 있음)오라클은 다음과 같이 보고합니다:
SQL> select * from mybigtable order by mycoolkey;select * from mybigtable order by mycoolkey*ERROR at line 1:ORA-25153: Temporary Tablespace is Empty SQL>
그래서,작업은 단순히’임시 테이블 공간 변경’을 발행하는 것입니다… 임시 파일을 추가합니다…’테이블 공간을 더 이상 비어 있지 않게하는 명령.
임시 테이블스페이스를 관리하는 것은 로켓 과학이 아니지만 일반 데이터 파일에 사용되는’일반’테이블스페이스 관리 절차와(때로는 상당히)다릅니다. ‘전체’임시 테이블 스페이스가 문제가되지 않는다는 것을 알면(세그먼트가 할당 된 다음 재사용된다는 것을 기억하십시오)오라클이 공간이 부족한 경우(오라-01652 오류 포함)작업을 좀 더 쉽게 할 수 있습니다. 즉,암호 재설정과 같은 유용한 작업에 시간을 할애 할 수 있습니다.
모든 기사보기 데이비드 피츠 자렐