본문 바로가기

2014/0750

[Oracle]Parallel 오라클 병렬처리 [Oracle]Parallel 오라클 병렬처리 오라클에서는 병렬처리를 지원합니다.병렬처리란...? 보통 하나의 프로세스가 한작업을 하게되는데요한 프로세스가 여러작업을 할때엔 시분할로 나눠서 하게됩니다.동시처럼보이지만 동시작업이 아니죠.이럴때 parallel을 이용하면 여러프로세스를 만들어서동시에 작업을 할 수 있습니다.문제점은 동시에 작업을 하게되면 테이블에 있는 데이터들이순차적으로 메모리에 올라가지않고 뒤죽박죽 올라간다는 점인데요.이때문에 LARGE POOL이라는 SGA영역에서 재배열을 해줍니다.이때 LARGE POOL영역이 부족하다면 다시처음부터 작업을 해야하니 주의해주세요 11G버전에서는 PARALLEL이 FALSE로되어있어도 사용할수있다.(MEMORY TARGET으로 메모리관리할경우)수동으로 메모.. 2014. 7. 21.
[Oracle]HISTOGRAM 오라클 히스토그램 분포문제점 [Oracle]HISTOGRAM 오라클 히스토그램 분포문제점 비용기반 옵티마이저에서 중요한것이 바로 통계정보이죠.통계정보를 수집했다 하더라도 데이터간의 분포가 균등하지않고크게 차이가난다면 통계정보를 최신화 했어도 옵티마이저가 잘 따라주지않습니다.이럴때 HISTOGRAM을 이용하면 됩니다. 먼저 테이블을 분석했습니다. 위 쿼리를 실행했을때 Statistics에는 5개 rows 이지만실행계획부분의 ROWS는 294개로 불일치하는것을 볼 수 있습니다.이런경우가 칼럼의 데이터들이 균등하게 분포되어있지않고차이가 많이나는 때입니다. 이때 히스토그램을 이용해보겠습니다. 분석하는 쿼리 뒤에 FOR COLUMNS deptno SIZE 98이라는 절을 주었는데요deptno에서 독립적인 값이 갯수를 size뒤에 써주면 됩니.. 2014. 7. 21.
[Oracle]Stored outlines [Oracle]Stored outlines 오라클 기능중에 세션단위로 실행계획을 관리해 좋은쪽의실행계획을 택할 수 있는데요.Stored outlines기능입니다.실제로 이게 많이 쓰이는지는 잘 모르겠어요;; stored outline을 사용하기위해서 scott에게 권한을 주겠습니다. scott으로 로그인한뒤 테이블을 먼저 분석해보겠습니다. 먼저 CBO로 실행해보겠습니다. SESSION이름을 이렇게 지정해주면 앞으로 실행되는 실행계획은 이 세션에서 관리되어집니다. SQL문을 실행하자 EMPNO인덱스를 사용한것을 볼 수 있습니다. 이번에 RULE로 옵티마이저모드를 바꿔보겠습니다. 아까전에 변경했던 세션을 여기에 적용해보겠습니다. 원래 RBO로 분석을 할경우 우선순위가 높은 DEPT인덱스를 먼저 사용해야하지만.. 2014. 7. 21.
[Oracle]COST BASED OPTIMIZER 오라클 비용기반 옵티마이저 통계정보 [Oracle]COST BASED OPTIMIZER 오라클 비용기반 옵티마이저 오라클 7버전 부터 COST BASED OPTIMIZER라는 것이 등장했습니다.RULE BASED는 정해진 규칙으로만 실행계획을 작성했는데 COST BASED는테이블,인덱스 통계정보를 갖고 분석을 통해 좋은쪽으로 실행계획을 작성해주는 옵티마이저입니다.그렇다고 이게 최선의 방법을 제시해주느냐.. 그것은 아닙니다.옵티마이저가 도와주지만 어쨋든 SQL문을 보고 최적을 찾는것은 사람 몫입니다. ALTER SESSION SET OPTIMIZER_MODE = CHOOSE;이라 해주면 비용기반 옵티마이저 사용준비는 끝입니다.DEFAULT는 COST BASED입니다. DEPTNO와 EMPNO에 인덱스를 각각 만들어 줬습니다. AUTOTRAC.. 2014. 7. 17.
[Oracle]RULE BASED OPTIMIZER 오라클 공식기반 옵티마이저 [Oracle]RULE BASED OPTIMIZER오라클 공식기반 옵티마이저 5,6버전에서는 rule based optimizer가 기본 옵티마이저로 쓰였는데요현재는 cost based가 default죠.공식기반 옵티마이저는 말 그대로 공식대로 동작하는 옵티마이저입니다. 이 15가지 공식중에서 상위에 해당하는 것이 있으면 무조건 그것으로 실행계획을 작성하는 것이 공식기반 옵티마이저입니다.만약 같은 순위라면 AND는 왼쪽에서부터 오른쪽으로 실행하고OR는 오른쪽에서부터 왼쪽으로 실행을 원칙으로 합니다. 이외에 더 자세한 설명은여기를 참고해주세요 ALTER SESSION SET OPTIMIZER_MODE = RULE;라는 명령어로 공식기반 옵티마이저를 사용할 수 있습니다. 한가지 예시인데요 AND일때 왼쪽 부.. 2014. 7. 17.
[Oracle]V$SQLAREA SHARED POOL분석 오라클 공유풀 분석 [Oracle]V$SQLAREA SHARED POOL분석 오라클공유풀 분석 튜닝을 할때는사전 튜닝과 사후튜닝이 있습니다.사후튜닝은 고객에게 컴플레인이 들어오면 그부분을 찾아서 튜닝을 해주면 됩니다.사전튜닝은 작성된 SQL문장중에서 메모리를 가장 많이 차지하고있는것, CPU를 가장많이 사용하고있는것, 디스크 IO가 가장많은것을 찾아 미리 튜닝해주는 것입니다. 이러한 SQL은 V$SQLAREA를 찾아보면 SHARED POOL에서 저런것들을 찾아낼 수 있습니다.SHARED POOL이 작동하는 것을 짧게 설명하면SHARED POOL이 꽉 차서 더이상 SQL파싱결과를 저장할 공간이 없다면 LRU알고리즘으로 최근에 사용이 가장 안된 파싱결과를 제거하고 거기에 새로파싱한 결과를 넣어줍니다. SHARED POOL은 정.. 2014. 7. 17.
[Oracle]SQL TRACE, TKPROF 성능튜닝 [Oracle]SQL TRACE, TKPROF 성능튜닝 성능튜닝을할때 필요한 툴로 AUTOTRACE말고 SQL TRACE도 있습니다.SQL TRACE는 이것만가지고는 분석하기 어렵기때문에 TKPROF를 같이 사용해주는데요주의할 점은 한세션으로 접속해서 연속으로 두번 같은SQL을 실행하면 결과가 각각나오는것이 아니라합쳐져서 나오기때문에 햇갈릴 수 있습니다. 동일한 문장은 한번만 실행해주세요한번 사용법을 알아보겠습니다. SHOW PARAMETER TIMED_STATISTICS 라는 명령어로 위와같이 확인할 수 있는데요SQL TRACE를 하기위해서는 TRUE가 되어있어야해요. DEFAULT가 TRUE입니다. SHOW PARAMETER USER_DUMP_DEST 명령어를 날려보시면 위와같이 TRACE한 분석 결.. 2014. 7. 17.
[Oracle]EXPLAIN PLAN, AUTOTRACE, statistics(Execution plan 실행계획) [Oracle]EXPLAIN PLAN, AUTOTRACE, statistics(Execution plan 실행계획) 성능 튜닝중에 SQL튜닝을 할때 툴은 필수죠. 오라클에는 EXPLAIN PLAN명령어와 AUTOTRACE 명령어가 있는데요 EXPLAIN PLAN은 매번 명령어를 쳐줘야해서 불편함이 많습니다. 때문에 AUTOTRACE를 쓰는게 편하죠~ AUTOTRACE설정 방법을 알아보겠습니다. 오라클 홈 디렉토리밑에 \sqlplus\admin에 가보시면 plustrace.sql파일이 있습니다. 이 sql을 실행하면 PLUSTRACE라는 ROLE이 만들어지는데요 이것을 사용자에게 부여해야합니다. 위처럼 plustrace.sql을 실행시켜주세요 그다음 PLUSTRACE라는 만들어진 ROLE을 사용할 계정에 .. 2014. 7. 16.
[Oracle]Trigger ip 차단 오라클 트리거로 아이피차단 [Oracle]Trigger ip 차단 오라클 트리거로 아이피차단 PL SQL에 트리거가 있죠트리거로 ip차단을 할 수 있습니다.의심스로운 사용자가 로그인해서 이상한작업을 한다면 ip를 차단해 놔야겠죠 ㅎ 위와같은 트리거로 ip를 차단할 수 있습니다.scott계정에 로그인할 시에 바로 이 pl sql문이 실행되는데요sys_context(....)이부분은 아이피를 확인할 수 있는 것입니다.if문으로 비교를 해준뒤 맞다면 raise_application_error로 에러를 출력해주고있습니다. 실제로 저 ip로 접속을 했을경우 이러한 에러메세지를 보이면서 차단을 해줍니다. 2014. 7. 16.