빅데이터과정/OWI 썸네일형 리스트형 #43_140812_RAC_PARAMETER # PARAMETER l RAC 환경에서 parameter file 관리1. parameter file : 인스턴스의 구조정보2. RAC 환경에서는 파라미터 파일이 공유 디스크에 있고 양쪽 인스턴스에서 같은 파라미터 파일을 공유해서 사용한다 n Spfile parameter 값 확인 SQL> SELECT sid, NAME, VALUE FROM v$spparameterWHERE NAME = 'db_file_multiblock_read_count'; - SID가 * 이기 때문에 모든 인스턴스가 16 값을 가지는 것을 의미한다- SID 3가지: * - 모든 인스턴스: yudb1 - 1번 인스턴스: yudb2 :-2번 인스턴스 >> db_file_multiblock_read_count 파라미터를 64로 변경 S.. 더보기 #42_140811_OWI_REDO LOG BUFFER # REDO LOG BUFFER l Redo log buffer에 관한 대기 이벤트 - log buffer space- log file sync l Redol buffer 내용을 Redo logfile에 기록하는 시점 - 매 3초마다 - log buffer의 1/3 또는 1MB 가 저장될 때 - user process가 commit또는 rollback으로 transaction을 종료할 때 (log force as commit) - DBWR process에 의해 신호를 받을 때(Write ahead logging) l Redo log 관련한 튜닝방법 처리 1. log buffer의 사이즈를 늘린다 2. commit을 너무 적게 사용 하도록 프로그래밍한다 3. storage를 빠른 스토리지로 구성한다 l L.. 더보기 #44_140811_OWI_LOCK # LOCK l 오라클의 Lock 발생에 대한 정리 표 - RS : Row shared- RX : Row exlusive- X : exclusive- 예를 들를 RX mode인 insert, update, delete 같은 명령어를 한 세션에서 수행하면 exclusive인 alter나 drop를 같은 세션인 다른 terminal에서는 수행할 수 없다 n Lock Mode 테스트 # scott 계정SQL> update emp set sal = 8000 where ename='KING'; # 다른 terminal 창의 scott 계정 SQL> drop table emp; ERROR at line 1:ORA-00054: resource busy and acquire with NOWAIT specified or.. 더보기 #41_140808_OWI_I/O EVENT # I/O EVENT l Direct path I/O 가 발생하는 경우 1. 정렬작업 2. prallel 힌트를 쓴 쿼리문 3. parallel 힌트를 쓴 dml 문 4. insert /*+ append *? into 테이블명 5. SQL*Loader 사용시- $sqlldr scott/tiger control=control01.ctl direct = y l Buffer cache를 통과하는 Conventional path I/O 일때 발생하는 이벤트 1. db file sequential read- index를 넓게 읽으면서 테이블을 엑세스 할 때 발생- 해결 방법 - index를 넓게 읽지 않도록 해야 한다: SQL 튜닝: 인덱스 재구성 2. db file scattered read- full tabl.. 더보기 #41_140808_OWI_DB BUFFER CACHE # DB BUFFER CACHE 1. DB buffer cache의 용도- database의 data file에서 읽은 데이터를 메모리에 올려놓으면 다음번에 빠르게 데이터를 검색할 수 있게 하기 위한 용도 2. DB buffer cache의 성능 저하로 발생하는 대기 이벤트 1) buffer busy wait- 하나의 buffer 안의 특정 data를 읽거나 수정하려면 buffer lock을 획득해야 하는데 이 락을 누가 쓰고있다면 waiting 하는데 이떄 발생하는 대기 이벤트이다- 특정 버퍼안의 데이터에 대해 update가 집중되는 경우 buffer busy wait이 발생한다- busy buffer wait를 해결하는 방법: 테이블의 pctfree를 늘림(pct free와 HWM과의 차이점은 pct.. 더보기 #40_140807_OWI_ROW CACHE LOCK # ROW CACHE LOCK l Row cache lock- sequence의 캐쉬속성을 nocache로 했을 때 발생하는 대기 이벤트 l Row cache lock 테스트 n Awr reportSQL> connect owi/owiSQL> alter sequence seq_sq_enqueue nocache;SQL> exec dbms_workload_repository.create_snapshot;SQL> @execEvent name to simulate: sq_enqueueSession count [10]: 10Expired by time(1) or looping count(2) [1]: 1Execution internval(sec or count) [30]: 120Enable_trace (1=TRUE.. 더보기 #40_140807_OWI_ENQUEUE # ENQUEUE l LOCK 1. Latch : 메모리를 보호하기 위한 락2. enqueue : 디스크를 보호하기 위한 락3. Enqueue의 종류- TX enqueue : update 하려다 wating 할때 발생하는 현상- SQ enqueue : 동일한 sequence를 서로 사용할 때 wating 하는 현상- HW enqueue : 동일한 테이블에 서로 동시에 insert하려 할 때 wating 하는 현상- US enqueue : Undo segment를 서로 사용하려 할 때 발생하는 waiting 현상 l LOCK 테스트 - 2개의 터미널 창으로 동시에 scott 계정으로 접속한다- 양쪽 동시에 update 문으로 scott의 월급을 접근하면 한쪽은 Lock이 걸린다 # SQLGATE # ORA.. 더보기 #40_140807_OWI_UPDATABLE JOIN VIEW # UPDATABLE JOIN VIEW l updatable join view - 아래의 update 문장은 90만건 이상을 가진 테이블을 update 하는문장인데 이런 경우에 메인쿼리를 읽고 서브쿼리를 읽어들이기 때문에 date_id의 rn이 맞는 row를 하나하나 찾아서 90만* 90만 = 1800만 건의 update를 수행한다- 이럴 경우 updatable join view가 필요하다- 이 조인방법은 다른 조인방법에 비해서 속도가 빠르다 update sales200 s set date_id = ( select date_idfrom time2 t where t.rn = s.rn ); l updatable join 예 - 위 쿼리를 보면 emp_loc 컬럼은 비어있는 컬럼이고 dept_loc는 각각의 .. 더보기 #40_140807_OWI_LATCH # LATCH l Lock 1. Latch : 메모리를 보호하기 위한 락- 대기 이벤트가 latchf를 잡을 떄 많은 CPU가 사용되기 때문에 느려진다- Latch는 잡아서 사용하기가 어렵다- Latch는 내가 확보해놓은 공간을 다른 것들이 쓰지 못하게 한다 2. enqueue : 디스크를 보호하기 위한 락 l Latch 테스트 16:35:30 SQL> @execEvent name to simulate: cache_buffers_chains_latchSession count [10]: 30Expired by time(1) or looping count(2) [1]: 1Execution internval(sec or count) [30]: 60Enable_trace (1=TRUE, 0=FALSE) [0]:.. 더보기 #40_140807_OWI_WAIT EVENT # WAIT EVENT l SQL 튜닝을 해도 전반적으로 오라클 DB의 성능이 저하되는 문제가 발생 한다면 OWI 활용한 서버튜닝을 해야한다 1. OWI(Oracle Wait Interface) : 오라클에서 발생하는 성능상의 문제들에 대해서 오라클 개발자들이 원인에 대한 현상을 정의했는데 그 현상의 이름이 대기 이벤트이다- 예) Oracle wait event 목록 확인SQL> select name from v$event_name; 2. 총 대기시간(Response time) = 서비스 시간(Cpu time) + 대기시간(wait time) Wait event 테스트 1. Orange ~> tool ~> session monitor 2. Orange- update 문이 왜 오래 걸리는지 이유를 알려주고.. 더보기 #40_140807_OWI_SHARED POOL에서 LATCH 경합 # SHARED POOL에서 LATCH 경합 l shared pool 의 역할 - parsing을 최소화 하기 위한 메모리 영역- SQL과 실행계획, parse tree(실행코드)의 코드를 공유함으로써 파싱을 최소화 할 수 있다 l Shared pool의 구조 - chunck : 메모리 저장 최소단위 - soft parse : 똑 같은 SQL이 존재하면 parsing 생략한다 - hard parse : 똑 같은 문장이 없기 때문에 다시 parse한다 - soft parse를 위해서는 Library cache latch를 잡아야 한다 - hard parse를 위해서는 Shared pool latch가 필요하다 - Library cache latch : 똑 같은 SQL이 있는지 검색할 때 필요 - Share.. 더보기 #39_140806_OWI_UPDATABLE JOIN VIEW # UPDATABLE JOIN VIEW l updatable join view - 아래의 update 문장은 90만건 이상을 가진 테이블을 update 하는문장인데 이런 경우에 메인쿼리를 읽고 서브쿼리를 읽어들이기 때문에 date_id의 rn이 맞는 row를 하나하나 찾아서 90만* 90만 = 1800만 건의 update를 수행한다- 이럴 경우 updatable join view가 필요하다- 이 조인방법은 다른 조인방법에 비해서 속도가 빠르다 update sales200 s set date_id = ( select date_idfrom time2 t where t.rn = s.rn ); l updatable join 예 - 위 쿼리를 보면 emp_loc 컬럼은 비어있는 컬럼이고 dept_loc는 각각의 .. 더보기 #39_140806_OWI_LATCH # LATCH l Lock 1. Latch : 메모리를 보호하기 위한 락- 대기 이벤트가 latchf를 잡을 떄 많은 CPU가 사용되기 때문에 느려진다- Latch는 잡아서 사용하기가 어렵다- Latch는 내가 확보해놓은 공간을 다른 것들이 쓰지 못하게 한다 2. enqueue : 디스크를 보호하기 위한 락 l Latch 테스트 16:35:30 SQL> @execEvent name to simulate: cache_buffers_chains_latchSession count [10]: 30Expired by time(1) or looping count(2) [1]: 1Execution internval(sec or count) [30]: 60Enable_trace (1=TRUE, 0=FALSE) [0]:.. 더보기 #39_140806_OWI_WAIT EVENT # WAIT EVENT l SQL 튜닝을 해도 전반적으로 오라클 DB의 성능이 저하되는 문제가 발생 한다면 OWI 활용한 서버튜닝을 해야한다 1. OWI(Oracle Wait Interface) : 오라클에서 발생하는 성능상의 문제들에 대해서 오라클 개발자들이 원인에 대한 현상을 정의했는데 그 현상의 이름이 대기 이벤트이다- 예) Oracle wait event 목록 확인SQL> select name from v$event_name; 2. 총 대기시간(Response time) = 서비스 시간(Cpu time) + 대기시간(wait time) Wait event 테스트 1. Orange ~> tool ~> session monitor 2. Orange- update 문이 왜 오래 걸리는지 이유를 알려주고.. 더보기 이전 1 다음