DB LINK를 사용한 분산 쿼리의 튜닝
DB LINK를 이용한 분산 DB Query의 경우, 로컬 DB 와 다른 관점의 튜닝이 필요합니다. 1. 가급적 Nested Loop을 피하고, Hash Join 처리 하여, Network Round Trip 을 줄인다 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~…
DB Admin Knowhow
DB LINK를 이용한 분산 DB Query의 경우, 로컬 DB 와 다른 관점의 튜닝이 필요합니다. 1. 가급적 Nested Loop을 피하고, Hash Join 처리 하여, Network Round Trip 을 줄인다 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~…
Oracle Advisor 관련 오라클 메모리 조회 SQL — PGA target Advsior 보기 — estd_overalloc_count 가 0인 가장 작은 target_MB 가 적절한 PGA_target 이 된다. select ROUND(pga_target_for_estimate/1024/1024) TARGET_MB, estd_pga_cache_hit_percentage CACHE_HIT_PERC,estd_overalloc_count from…
로그버퍼(Log Buffer) 영역의 튜닝 – 사용자들이 데이카베이스에 접속한 후 INSERT, DELETE, UPDATE 작업을 실행하면 트랜젝션에 의해 만들어진 모든 변경 정보(UPDATE문이 실행되었다면 변경 전 데이타와 변경 후 데이타) 가…
Invisible Index Invisible Index는 11g에서 새로 나온 것으로 Virtual Index와는 달리 Optimizer에게 보이지 않을 뿐 실제로 세그먼트 형태로 존재하는 인덱스입니다. Invisible Index는 실제로 존재하는 인덱스 이고 따라서 통계 정보가 수집된다. 따라서 보다 정확한 테스트를…
Dynamic SQL, 동적 SQL은 상황에 따라 가변적으로 사용되는 SQL을 의미한다. Dynamic SQL의 기본적 개념 및 사용법을 다루도록 하겠다. Dynamic SQL? 대부분의 데이타베이스 응용프로그램은 특정한 일을 한다. 예를 들면, 단순한…
Bigfile tablespace(BFT)는 아주 큰 크기의 datafile을 가질 수 있는 tablespace이다. Oracle Database 10g의 새로운 addressing 기법에 의해, 하나의 datafile이 40억개의 block을 가질 수 있게 되었다. 그래서, 최대 datafile 크기는 block의…
어떤 세그먼트를 위해 공간이 크게 할당된 경우 High Water Mark 이후의 공간은 사용되지 않은 채로 남아 있게 될 수 있다. 또한 High Water Mark 이전의 영역에도 누적된 delete 연산의 결과로…
PL/SQL function result cache는 SQL query result cache 기능과 메커니즘을 공유한다. Cache 자체도 shared pool 내의 result cache memory 영역이 SQL query 용과 PL/SQL function 용으로 나누어져 있을 뿐이다. 따라서…
Result cache 기능은 Oracle11g의 성능 분야의 신 기능으로서 SQL query 또는 PL/SQL function의 결과를 메모리 내에 cache할 수 있는 기능이다. 결과가 cache 되어 있는 query를 수행하거나 PL/SQL function을 호출하면 해당…
SQL 힌트의 사용 방법 ● DBA는 특정데이터에 대하여 optimizer가 알 수 없는 정보를 가질 수 있음. ● DBA는 optimizer보다 더 좋은 execution plan을 선택할 수 있음. ● DBA는 힌트를…
<Optimization Approaches and Goals – Optimization 접근과 목적> /*+ ALL_ROWS */ explicitly chooses the cost-based approach to optimize a statement block with a goal of best throughput (that is, minimum…
SQL TRACE FACILITY 는SQL 문 사용에대한 성능을 분석하기위해서 사용된다. 이러한SQL TRACE FACILITY 를 이용하면 각SQL 문에 대해서 다음과 같은 정보를 얻을수 있다. . parse,execute,fetch count . CPU 와elapsed 시간…
WINDOWS 386 확장모드에서 설치후 PERFORMANCE 향상을 최대화하기 위한 방안을 다음과 같이 제시한다. (WINDOWS는 386확장모드에서 가상메모리를사용할 수 있다.) 이러한 제시 사항들은 표준 모드와 실제모드에 적용할 수 있으며 잘 작동한다. 물론 표준모드에서…
PERFORMANCE TUNING에는 3가지면에서의 APPROACH가 가능하다. ———————————————————– . SYSTEM LEVEL : HARDWARE AND SOFTWARE . DATABASE CONFIGURATION LEVEL : INIT.ORA AND STRUCTURE . APPLICATION LEVEL : APPLICATION SPECIFIC DEVELOPMENT 다음에서는…
– 응용프로그램들의 기능이 복잡해져가면서 Lock 문제가 빈번하게 발생함에 따라 이를 해결하는 것이 매우 중요한 일이 되었다. 도대체 어떠한 프로그램이 Lock을 발생시켜 데이타베이스를 Hangup 상태에 이르게 하는가를 알아내는 것은 쉬운 일이…
* db_file_multiblock_read_count 는 Full Table Scan 시에만 영향을 미치는 파라미터이다. 오라클의 최대 I/O 크기는 64KB 이므로 db_blocksize * db_file_multiblock_read_count <= 64KB 이어야 한다. Index를 이용한 Query 인 경우에는…
* db_file_multiblock_read_count 파라미터는 한번의 I/O 작업으로 읽어들이는 최대 블럭 수를 가리키며 Multi Block I/O 에 관련된 파라미터이다. 디폴트 값은 O/S에 따라서 다른데 보통 db_block_buffers와 Processes에 의해서 결정되며 4~32 정도가 많이…
Oracle10g 부터 세그먼트를 shrink 시킬 옵션이 존재하며, 이 기능을 활용하면 DBA가가 공간을 좀더 효율적으로 활용할 수 있다 이 기능은, 또한 질의 처리 속도 개선에도 도움이 된다. Explanation ———– 1. 준비…
1. Invisible Index란 Invisible Index기능은 Optimizer가 Execution Plan을 생성 시에 Invisible Index인 Index들을 무시 하게 되는 기능입니다. Session이나 System별로 OPTIMIZER_USE_INVISIBLE_INDEXES Parameter를 True로 설정하게 되면 Optimizer가 Invisible Index라고 할지라도 무시하지 않고…
모든 오라클 버전에서 가능한 방법 자기 세션에 대하여 alter session set timed_statistics = true; alter session set max_dump_file_size = unlimited; alter session set sql_trace = TRUE; 또는 exec dbms_session.set_sql_trace(TRUE); 또는…
개요 데이터베이스를 운영 중에 새로운 인덱스를 생성하거나, 기존의 인덱스 변경됨으로써 영향을 받아 사용되지 않는 인덱스가 생겨날 수 있다. 따라서 그러한 인덱스를 찾아 수정하거나 제거할 필요성이 제기된다. 실제로 튜닝작업…
Oracle Database 9i까지는 세그먼트 HWM이하에 할당된 공간은 오직 세그먼트를 이관하거나 재 정의할 때 반납되었습니다. Oracle Database 10g부터는 세그먼트의 빈 공간을 shrink 할 수 있습니다. 세그먼트가 shrink 될 때, 그 데이터는…
SQL #1 SELECT * FROM (SELECT T0.*, FLOOR((ROWNUM – 1) / :1 + 1) PAGE FROM ( SELECT a.entry_indexno, a.eventid, a.userid, a.name, a.reg_date, …
Latch & Lock 1. Latch 개요 가벼운 Lock(Light-weight Lock) 공유 Memory 영역(SGA)을 보호하기 위한 동기화 객체 1.1 Latch가 보호하는 Resource -Latch는 SGA의 모든 하위 Memory 영역을 보호 -Cache Buffer -Shared…
cfile27.uf.263DED3E5683308203110E.pdf Oracle Keep Buffer 활용 방안에 관련된 내용입니다.
1.SQL 작성시 유의사항 1.컬럼 가공으로 인한 비효율 2.확인자/제공자 역할의 SubQuery 3.최소,최대값(최초,최종) 구하기 4.함수 수행횟수 비효율 5.빈번한 OCI CALL과 LOOP QUERY 6.부분범위 처리 …
Tuning 이란 쓸데없는 일을 시키지 않는 것 병목현상을 없애어 모든 처리 과정이 최상의 성능을 발휘하도록 하는 것. 최소의 자원으로 최대의 일을 시키는 것. 놀고 있는 자원이 없도록 하는 것. …
Outer Join 어떤 집합을 기준으로 해서 조인되는 다른 집합과의 연결에 실패했더라도 그 결과를 추출하는 조인 특징 조인 순서가 미리 정해지므로 조인순서를 이용한 튜닝이 불가함 가능한 Outer Join은 피하도록 함 Outer…
0. 인덱스는 사용자가 임의적으로 생성 변경이 가능한 데이터 베이스에 저장가능한 물리적인 구조입니다. 하지만 인덱스는 단순하게 색인이라는 개념에 앞서 옵티마이저가 실행계획을 수립할 때 최적의 경로를 찾도록 하는 ‘전략적 요소’라는 시각에서 접근하여야…
Enterprise Edition 환경에서 테이블 별 I/O를 확인할 수 있는 쿼리 입니다. 해당하는 OWNER, OBJECT_NAME으로 쿼리 수행하셔서 SNAP_TIME 컬럼에서 해당기간을 확인하실 수 있습니다. 아래 쿼리는 AWR를 정보를 가지고 있는 뷰를 조회하기 때문에…
SE버전에서 v$segment_statistics view로 조회하는 쿼리입니다. 이 쿼리는 dba_tab_modifications 테이블에서 DML에 의해 변경된 건수와 dba_tables의 num_rows를 비교해 10% 이상 변경된 테이블 조회 쿼리로 확정치라고 볼 수 있습니다. select table_owner, m.table_name, num_rows,…
Buffer Cache Management Oracle은 cache buffer를 관리하기 위해서는 세가지의 내부적인 structure를 사용하는데, 그 각각은 cache buffer chain, dirty list, LRU(Least Recently Used list)이며, 아래에 자세히 설명하다. buffer…
Oracle Memory Model Oracle 의 주요 특징 중 하나가 SGA내에shared pool이란 structure를 도입한 것이다. shared pool을 잘 이해하고 관리하는 것은 Oracle을 사용하는데 있어서 성능 향상 및 문제…
조인은 2개 이상의 테이블들을 Relation Key로 연결하여 Merge시키는 것을 말한다. 조인 종류 -조인 메소드 : Nested Loop Join, Sort Merge Join, Hash Join- -조인 타입 : Basic(Natural) Join, Outer Join, Semi…
1. 터치 카운트 소개 오라클은 볼륨의 증가, 성능상의 요구 및 최근 시스템들의 복잡성 등의 이유로 Touch- Count 에 근간한 Data Buffer Management Algorithm을 제시하였다. 데이터 블록 버퍼들은 Modified LRU 알고리즘을 사용하여…
☞How to Use Indexs ● 인덱스 생성 시기 ● 인덱스 생성 대상 column 선택 ● 결합 인덱스 사용 방법 ● 인덱스 사용을 위한 SQL문 작성법 ♣ When to Create Indexes…
SQL Tuning CASE [ CASE1: 적절한 인덱스의 사용 ] <SQL> UPDATE TB_CCPIDSCNT SET END_DATE = DECODE (SIGN (( NVL (END_DATE,TO_CHAR (( ADD_MONTHS (TO_DATE (START_DATE,’YYYYMMDD’),36)– 1),’YYYYMMDD’))– :b0)),1, :b0,END_DATE) ,END_ORD_NO =…
1.데이터와 비즈니스 어플리케이션을 잘 알아야 한다. 동일한 정보는 다른 비즈니스 데이터 원천으로부터 검색될 수 있다. 이러한 원천에 익숙해야 한다. 당신은 당신의 데이터베이스 안의 데이터의 크기와 분포를 반드시 알아야…
RDB라면 아래의 규칙을 따르게 됩니다. ORACLE,MS_SQL,SYBASE .. 등등.. 1) RDBMS의 구성 관계형 데이터베이스 관리 시스템으로서 열과 행으로 이루어진 2차원의 테이블로 구성된다. 열(Column)과 행(Row)의 순서는 논리적으로 중요하지 않으며, 배열의…
정규화 정규화의 정의정규화 작업은 불필요하게 같은 데이터가 반복되어 나타나는 것을 방지하기 위한 작업으로 E-R Diegram의 검증 및 원시데이터의 관계형 테이블 전환시 사용된다. 정규화 작업은 총 6단계 또는 7단계로 구분 될…
LOCK의 유형 데이타의 concurrency를 보장하기 위해 오라클은 lock과 transaction을 사용한다. Lock은 같은 자원을 access하는 사용자들 사이에 상호간에 해를 끼치는 것을 예방하기 위해서 사용되는 메카니즘이다. Lock의 종류 –…
Cursor Life Cycle 모든 SQL(Select,Update, Delete)은 Cursor를 생성하여 실행됩니다. Pro*C 와 같은 툴을 사용하면 Cursor 의 각 단계를 프로그램에서 제어할 수 있고, 그렇지 않고 SQL*Plus 와 같은 툴을 사용할 경우에는…
– 오라클 프로세스가 Free Buffer 를 찾는 과정 – Database Buffer Cache 최근에 사용된 데이타베이스의 데이타 블록을 저장하고 있는 Database Buffer 영역으로 DBWR(Database Writer Process) 에 의해서 관리된다. Free Buffer는…
Oracle9i Online Document에서 New Feature를 조회해 보면 아래와 같이 Bind Variable Peeking에 대해 소개 합니다. Peeking of User-Defined Bind Variables The CBO peeks at the values of user-defined bind variables…
Statspack을 통한 시스템 튜닝 저자 Rich Niemiec Statspack 보고서에 대기 이벤트가 무엇을 의미하며, 이러한 이벤트를 튜닝하는 방법을 확인하십시오. Oracle 유틸리티를 단 두 개만 사용하여 Oracle9i Database 시스템의 성능 문제를 확인…
Statspack를 통한 고급 시스템 튜닝 By Rich Niemiec 데이타베이스 성능 모니터링 시리즈 중 두 번째 편 이전 칼럼에서 언급했던 것처럼, 시스템 성능 문제를 모니터하고 찾기 위해 Oracle9i 유틸리티를 두 개만…
Transaction 1. User DML 문장 수행 2. 문법 체크 , 권한 체크 수행 3. DML 문에 대하여 Hash 함수를 적용해서 Hash Value…
Latch가 SGA영역을 보호 한다면 Lock은 데이터 베이스를 보호 한다고 보면 된다. Lock은 Latch와 다르게 복잡한 메카니즘을 통하여 관리가 된다. 또, Lock은 관리 방법에 따라서 일반 Lock과 Enqueue Lock으로 분류를 할…
오라클에서 Latch는 Lock과 함께 잠금에 사용되는 장치이다. 그러나 Lock과 틀린것은 latch는 Lock보다 가볍고 SGA 내부의 공유 데이터에 대한 베타적인 잠금을 보장하여 (9i 이상에서는 cache buffer chains Latch는 읽기 전용일 경우…
SQL에서 사용하는 Bind 변수를 알아 내기 위한 몇가지 방법 – Create table create table big_table as select empno , ename , job , mgr , hiredate ,…
계층형 데이터 표현이란 ? 간단하게 설명하자면 상위 구조가 있고 하위구조가 존재할때에 그 구조를 표현하는것 이게 더 어려울수 있으니 예를 들자면 회사로 따지면 사장이 존재하고 부사장이 존재하고 각 부서의 짱들이 존재할텐데…
[ Query Optimizing ] – _optim_peek_user_binds=FALSE : _optim_peek_user_binds=TRUE일 경우 Bind Value가 있는 SQL의 해석과 FALSE일 경우에…
Library cache lock과 library cache pin 관련 설명은 밑에 여러번 언급을 하였으므로 .. 여기서는 단순히 Library cache lock과 library cache pin이 일어날 경우 모니터링 하는 쿼리를 만들어 보았다. …
Range 파티셔닝을 이용할 때, 정의되지 않은 파티션에 대해서 insert시 에러가 발생합니다. create table sales6 ( sales_id number, sales_dt date ) partition by range (sales_dt) ( partition p0701 values…