본문 바로가기

데이터베이스(DA, AA, TA)/Oracle

(21)
[오라클] RAC 튜닝 방법(1) - gc cr/current block 2-way/3-way gc cr/current block 2-way/3-waygc cr/current block 2-way 이벤트는 gc cr/current request 이벤트에 대한 Fixed-up 이벤트로, 블록을 요청한 프로세스가 마스터 노드로부터 직접 블록 이미지를 전송 받았다는 것을 의미합니다. gc cr/current request 이벤트가 gc cr/current block 2-way 이벤트로 바뀌는(Fixed-up되는) 흐름은 다음과 같습니다. - 요청 노드의 유저 프로세스가 특정 데이터 블록을 CR 모드 또는 Current 모드로 읽고자 한다.- 유저 프로세스는 해당 데이터 블록의 적절한 버전이 로컬 버퍼 캐시에 없는 것을 확인하고, 마스터 노드의 LMS(Lock Monitor Services) 프로세스에 ..
[오라클] RAC(Real Application Cluster)이란? 일반적인 Oracle Server 구성방식* Process: A는 작업장1로 복사해와서 작업을 하고, B는 작업장2로 복사를 해와서 작업을 하며, 저장을 database에 합니다. 이렇게 instance와 database 사이를 왔다갔다 하면서 작업을 해주는 구성요소입니다. (Server Process / Background Process) * Oracle Server의 구성 방식 1) Single Server 구성하나의 database에 하나의 instance가 할당되는 구성입니다. 일반적으로 DB서버 구현시 1개의 서버를 사용하게 되는데, 이런 경우 instance 역할을 하는 서버에 장애가 발생했을때 storage에 저장된 데이터를 사용할 수 없게 되는 위험이 존재합니다. 2) OPS(8i버전까지)..
[오라클] Redo Log 튜닝 방법 log buffer space리두 버퍼에 리두 레코드를 기록하려는 프로세스는 리두 버퍼 내에 필요한 공간을 확보하기 위해 redo allocation 래치를 획득해야 합니다. redo allocation 래치를 획득한 상태에서 리두 버퍼에 공간을 확보하려는 순간에 적절한 여유공간이 없는 경우, 공간이 확보되기를 기다려야합니다. 이 때, 경우에 따라 두가지 종류의 이벤트를 대기하게 됩니다. 만일 현재 사용 중인 리두 로그 파일이 꽉 차서 더이상 여유 공간을 확보할수 없다면, LGWR 프로세스는 로그 파일 스위치를(log file swtich)를 수행하고, 서버 프로세스는 log file switch completion 이벤트를 대기합니다. 그외의 경우에는 log buffer space 이벤트를 대기하게 됩..
[오라클] Lock 튜닝 방법 enq: TX - row lock contentionenq: TX - row lock contention 이벤트는 로우 레벨 락(row level lock)에 의한 경합이 발생했다는 것을 의미합니다. 다음과 같은 세 가지 경우에 로우 레벨 락 경합이 발생합니다. - 여러 세션이 동일 로우를 변경하는 경우 - 여러 세션이 동일 Unique Key 충돌을 일으키는 경우 - 여러 세션이 비트맵 인덱스 충돌을 일으키는 경우 * 여러 세션이 동일 로우를 변경하는 경우(mode=6)동일 로우 변경은 TX 락에 의한 경합이 발생하는 가장 보편적인 경우입니다. 특정 프로세스가 특정 로우를 변경하기 위해 해당 로우를 방문했을 때, 현재 로우가 변경된 상태라면 ITL로부터 해당 로우를 변경한 트랜잭션을 확인하고, 자기 자..
[오라클] Library Cache 튜닝 방법 SQL의 작성과 파싱 데이터베이스에서 어떤 결과값을 얻기 위해 SQL문을 작성할때에도 개발자 개개인마다 이를 표현하는 방법은 다릅니다. 데이터베이스는 같은 결과를 얻는 경우에도, SQL문의 표현이 다르면 새롭게 파싱해야합니다. SQL문을 실행하면, 데이터베이스는 아스키 값으로 계산합니다. 즉, 대문자, 띄어쓰기, 주석에 따라 아스키 값이 다르므로 표현이 달라지면 다른 SQL문으로 인식하게됩니다. 같은 결과를 얻지만 표현이 다른 SQL문은 실행할때마다 library Cache에서 하드파싱됩니다. 하드파싱은 SQL문의 검색과 공간확보를 위해 Shared Pool Latch와 Library Cache Latch를 필요로 합니다. 잦은 하드파싱은 리소스를 과도하게 사용하고 래치를 오래 점유하므로 SQL문의 수행..