본문 바로가기

2014/0750

[Oracle]Server tuning 오라클 서버튜닝이란 [Oracle]Server tuning 오라클 서버튜닝이란 튜닝이라고 하면 크게 SQL튜닝과 SERVER튜닝으로 나쥡니다.SQL튜닝은 SQL문을 튜닝해 성능 개선 효과를 보는것을 말하고 SERVER튜닝은말그대로 SERVER를 튜닝해 성능을 개선하는 것입니다. 서버튜닝은 크게 Memory, DB, Resource 이렇게 3가지로 나뉩니다. 1. Memory튜닝SGA + Process = instance 튜닝이라고 오라클에서 말합니다.Shared pool영역 튜닝Data buffer cache영역 튜닝Log buffer영역 튜닝을 말합니다. 2. DB튜닝disk I/O, file튜닝을 DB튜닝이라고 말합니다. 3. Resource튜닝Lock, undo,temp Tablespace를 튜닝해주는 것을 말합니다... 2014. 7. 24.
[Oracle]Tablespace 테이블스페이스 이동 시키기 [Oracle]Tablespace 테이블스페이스 이동 시키기 테이블스페이스는 동일한 디스크에 저장하는것보다다른디스크에 분산저장하는 것이 좋은데요. 왜냐하면 i/o경합도 줄일 수 있으며문제가 생길시에 데이터가 전부 날아가는것을 방지해주기 때문입니다. 테이블 스페이스를 이동시키기 위해서는 일단 OFFLINE 명령어로비활성화를 시켜야합니다. 예제라 같은 C드라이브에 했지만 다른곳에 위치하는 게 좋겠죠.먼저 복사를 해줬습니다. 그뒤에 RENAME을 통해 옮겨진 테이블스페이스의 경로를 알려줍니다. 다시 ONLINE으로 변경하면 테이블스페이스 이동이 완료됩니다. 복사하기 전의 테이블스페이스는 제거하겠습니다. V$DATAFILE에는 테이블스페이스의 경로를 볼 수 있고V$FILESTAT에서는 각 테이블스페이스에 얼마만.. 2014. 7. 24.
[Oracle]Multi Block Tablespace 오라클 멀티블락 테이블스페이스 [Oracle]Multi Block Tablespace 오라클 멀티블락 테이블스페이스 데이터블락은 기본적으로 8k로 사이즈가 정해져 있는데요SHOW PARAMETER BLOCK 이라는 명령어로 BLOCK정보를 볼 수 있습니다.DB_BLOCK_SIZE를 보면 8192BYTE , 8K로 되어있죠그밑에 DB_FILE_MULTIBLOCK_READ_COUNT는풀테이블 스캔할때 한번에 128개의 블락을 읽을 수 있다는 뜻입니다. 9i부터는 블락사이즈를 테이블스페이스마다 다르게 지정할 수 있는데요블락사이즈를 크게하거나 작게하면 장점 단점이 어떻게 될까요. 데이터블락사이즈가 작으면 그만큼 낭비하는 헤드부분이 많아지고 대량의 데이터를 읽을때 많은 I/o를 일으키므로 성능이 안좋아질수도 있습니다. 블락사이즈를 크게한다면 .. 2014. 7. 24.
[Oracle]Data Buffer Cache Tuning 오라클 데이터 버퍼캐시 튜닝 [Oracle]Data Buffer Cache Tuning 오라클 데이터 버퍼캐시 튜닝 Data Buffer Cache 영역도 빠른 억세스를 하기위해서 매우 중요한 부분입니다.8i버전에서는 테이터 버퍼캐쉬를 효율적으로 사용할 수 있도록 keep, recycle, default 이렇게 3가지로 나눠서 적재할 수 있게 하였습니다. keep : 소량이며 자주사용하는 데이터 저장recycle : 대량이도 자주 사용되지 않는 데이터 저장default : 그외에 기본 11g부터는 result_cache라는 곳을 데이터버퍼캐시말고 별도로 지원합니다.자주사용하는 sql문장에 result_cache라는 힌트절을 주면 데이터버퍼캐시에 저장하지않고result_cache에 저장해놓고 이곳에서 빠르게 데이터를 불러올 수 있습니.. 2014. 7. 24.
[Oracle]Shared Pool tuning 공유풀 튜닝 [Oracle]Shared Pool tuning 공유풀 튜닝 shared pool에 Library cache는 sql파싱결과를 저장해놓는 공간입니다.Shared pool의 메모리가 부족하다면 자주파싱되는 sql문이 밀려나면서 악순환이 이어집니다.그리고 사용자들이 잘못 작성한 sql문들이 Library cache를 점령하고 있다면 공간낭비가 되겠죠.이때문에 Library cache를 효율적으로 관리하는것이 중요합니다. LIbrary cache에 sql문장들이 잘 적재되어 재사용되고 있는지 확인하는법입니다.V$LIBRARYCACHE를 조회해 보시면 위와같은 칼럼을 보실 수 있는데요GETS는 파싱된 SQL문이 있는지 LIBRARY에요청한 총 횟수 입니다.GETHITS는 LIBRARY에 요청했을때 파싱결과가 있.. 2014. 7. 24.
[Oracle]분석 기능 statspack, AWR(Automatic Workload Repository) [Oracle]분석 기능 statspack, AWR(Automatic Workload Repository) 사전튜닝은 V$SQLAREA 조회를 통해서 TOP SQL을 찾아 튜닝을 해주는데요 V$SQLAREA를 직접 조회하지않고 더 편리하게분석할 수 있는 방법이 있습니다. TOP SQLCPU, I/O를 가장많이 유발하는 SQL문장을 말합니다.사전튜닝의 대상이죠. 8i버전에서는 분석을 시작할때 UTLBTAT.SQL을 실행시키고끝낼때 UTLESTAT.SQL를 실행시켜 REPROT.TXT를 만들었습니다.이를 통해서 분석을 했었죠.9i버전 부터는 STATSPACK이라는 패키지를 제공했습니다. 이것은 패키지이기때문에결과를 DATA DICTIONARY TABLE에 저장해 사용자가 SELECT문장으로 조회 할 수 있었.. 2014. 7. 23.
[Oracle]오라클 테이블 종류 [Oracle]오라클 테이블 종류 ㅁ 클러스터 여부에 따라 non클러스터 테이블 클러스터 테이블 - 인덱스 클러스터 테이블 - 해시 클러스터 테이블 ㅁ 파티션 여부에 따라 non파티션 테이블 파티션 테이블 - 수평 - Range 파티션 테이블 - List 파티션 테이블 - Hash 파티션 테이블 - 수직 2014. 7. 23.
[Oracle]Cluster Index 오라클 클러스터 인덱스 [Oracle]Cluster Index 오라클 클러스터 인덱스 dept 테이블과 emp 테이블이 있는데 이 데이터를 뽑아올때deptno로 조인해서 항상 불러온다면 이럴때 클러스터 인덱스로 구성하는것이 효율적입니다. 먼저 dept로 클러스터를 만들어 줍니다.이때 size를 7800으로 설정해줬는데 그이유는 현재 오라클 한블락당 저장할 수 있는 byte수를 확인해보면8k로 되어있습니다.(SHOW PARAMETER BLOCK으로 확인해보면 나옵니다.) 그런데 블락에는 항상 300byte정도가 헤더로 쓰입니다.여기에는 데이터를 저장할 수 없죠. 그래서 size를 300byte를 뺀 7800으로 설정해줬습니다.이렇게 설정했다고해서 정확히 7800으로 되지않고 알아서 적절히.. 설정이 됩니다. 그리고나서 방금만든 .. 2014. 7. 23.
[Oracle]HASH PARTITION TABLE [Oracle]HASH PARTITION TABLE 동시 이용자는많고 대량의 데이터가 저장되지만 뽑아오는 데이터는 적을때이럴때 HASH PARTITION을 이용한다면 효율적으로 데이터를 뽑아올 수 있습니다.HASH PARTITION은 파티션갯수대로 나누면 데이터가 자동으로랜덤으로 분할되어서 각각의 파티션에 저장됩니다. 위와같은 문법으로 HASH PARTITION을 만들 수 있습니다. 이렇게도 만들 수 있습니다. 만약 1월달, 2월달 이렇게 데이터를 불러와야하는 때에 해쉬테이블을 적용한다면성능이 정말 떨어지겠죠. 이처럼 RANGE, HASH, LIST 각각의 파티션테이블을 상황에 맞게구성하는것이 중요합니다. 2014. 7. 23.