Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Oracle Architectural Components

Chapter 1
by

michaela Kim

on 15 May 2012

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Oracle Architectural Components

Oracle Architectural Components DB Server
Oracle DBMS
Instance Database Control
Files Online
Redo Log
Files Process Memory Datafiles SID DBName
DBID Single Instance RAC SID=DBName SID<>DBName 내부적으로 할당됨 Data files, Online Redo Log Files 위치 Data Dictionary, Tables, Indexes ... DDL, DML 관련 logs
Recovery 용도 필수 Background Processes System Global Area (Large pool, Java pool, Stream pool) select ename, salary
from emp
where empno=1000; Query Process 1)Parse

2)Execution

3)Fetch a)syntax check
b)semantic check
Object Resolution
Previlege Check
c)parse tree 생성
d)execution plan 생성 text
parse tree
execution plan Cursor Cusor Sharing
OLTP 성능 극대화 Library Cache에 parse결과 저장
(동일 쿼리시 c,d단계 생략) 해당 DB block Data Dictionary emp Table Start up시
Data Dictionary정보를 Cache로 Read Fetch to user process 결과행 (cc) image by nuonsolarteam on Flickr DML Process update emp
set salary=200
where empno=1000; 1)Parse

2)Execution

3)Fetch DML/DDL에서는 Fetch되지 않는다 Undo Segment emp Table 100 빈 Segment Undo Segment 역할
1) 읽기 일관성
2) 트랜잭션 복구/롤백 100 100
->200 1) 빈 undo segment를 DB Buffer Cache로 Read 2) 해당 DB block을 DB Buffer Cache로 Read 3) undo data를 undo segment로 write 4) Redo Log를 남긴다
t10 : 100->200 5) 해당 Row에 Lock을 건다
(row level lock) 6) 해당 컬럼을 새로운 값으로 변경한다 * Buffer 상태에 따른 구분
1) Free buffer : 사용 완료, 재사용 가능 버퍼
2) Pinned buffer : 사용되고 있는 버퍼
3) Dirty buffer : 변경된 값을 포함하는 버퍼, DBWn이 datafile에 기록해야할 버퍼 PMON *lock유지 : transaction 종료(commit/rollback)시 까지 User process 비정상 종료시 clean up
transaction rollback 시킨다
server process도 종료시킨다 SMON System Monitor
Auto Instance Recovery 담당
오라클 비정상 종료 후 재시작시에 자동 복구 기능
사용가능한 공간 병합
임시 세그먼트 할당 해제 DBWn LGWR CKPT * Check point event
File과 Memory 상태를 일치시키는 이벤트
일정 간격에 checkpoint이벤트가 발생함 check point 이벤트가 발생하면 동작함
1) CKPT가 DBWn을 Call하고, DBWn은 dirty buffer를 datafiles에 writing
2) CKPT는 각 Datafile Header와 Control file에 checkpoint#를 기록한다 Data Dictionary (System Catalog)
DB 유저 정보 : Account, Password, Previlege, Role
DB에 저장된 Object 정보 : Table, Index, Sequence, Package, Procedure, Function..
Storage 정보 : Tablespace, Segment, Extent * IO 최소 단위
OS : OS Block
DB : DB Block(2k,4k,8k,16k,32k ; 2^n k)
OS Block <= DB Block ; OS의 정수배 * Parameter File
DB를 구성하는 파일 아님
오라클 서버를 기동시키기 위해서는 반드시 필요
오라클 Instance구성을 위한 각종 Parameter가 설정되어 있는 파일
shared_pool_size, db_cache_size ... Database Tablespace Segment Extent DB Block OS Block Data file Logical structure Physical structure Oracle Storage 구조 Segments가 저장되는 논리적인 스토리지 공간 Storage 공간을 차지하는 object
(table, index, undo segment, temporary segment) Segment에 할당되는 스토리지 단위 IO 최소단위 Temporary segment : 정렬작업시 메모리공간이 부족하면 temporary segment할당하여 사용 data tablespace emp table DB block E1 E2 create table emp(
empno char(10),
ename varchar2(20),
salary number(8)
)
tablespace data
storage ( initial 200k
next 200k
pctincrease 50
minextents 2
maxextents 50); 200k 200k E3 300k 200+(200*0.5) 이전 extent size에 50%를 increase E4 450k 최소 2개 extent(생성시) 최대 50개 Database Mode
1) NOARCHIVELOG : default, complete recovery 불가능
2) ARCHIEVELOG : Redo log files를 Archive, complete recovery 가능 user process와 server process의 관계
dedicated server 에서는 user process : server process = 1 : 1
shared server 에서는 다수의 user process가 소수의 server process를 공유 (간략 방식 : user process -> dispatcher process 에 접속 -> server process 로 route)
user process : 사용자가 oracle에 connection 요청시 생성됨
server process : 세션이 설정될 때 시작됨 (session : DB connection 후 사용자 인증을 마치면 세션이 맺어진 것임) 물론 먼저 DB buffer cache를 찾고
없으면 데이터파일에서 block을 search
SQL Work Areas 에 포함되는 정보
Sort-based operators (order by , group by, rollup, windows function)
Hash join
Bitmap merge
Bitmap create Session의 variable, array 정보를 저장한다 Binding 정보를 저장하고, cursor가 닫힐 때 해제된다 Private SQL 영역은 Persistent 영역과 Runtime 영역으로 나누어진다.
Private SQL 영역의 할당과 해제는 User Process(User의 Application) 연관이 있다.
User Process가 할당할 수 있는 Private SQL영역은 초기화 파라메터 OPEN_CURSORS(default : 50) 에 의해 제한된다 Runtime 영역에는 SQL문을 실행하는 중에 사용하는 정보를 포함하게 되는데, SQL문의 복잡도, 처리해야할 데이터량 등에 따라 이 영역의 크기가 달라진다.
INSERT, UPDATE, DELETE는 명령이 실행된 후 해제되고 쿼리는 Fetch가 끝나거나 Rollback된 후 해제된다
WORKAREA_SIZE_POLICY=AUTO로 설정하면 자동관리됨 Checkpoint가 발생한 경우
Dirty Buffer가 임계값에 도달한 경우
사용가능한 Buffer가 없는 경우
시간초과가 발생한 경우 3초동안 작업이 없을 때 commit이 있을 경우
Redo log buffer가 1/3 찼을 때
1MB이상의 변경사항이 Redo log buffer에 기록되는 경우
3초마다
DBWn이 기록하기 전에 log switch 발생시, shutdown시에도 발생 필요한 객체에 대한 구문 분석 Lock를 획득하여 명령문 구문 분석을 수행하는 동안 객체 정의가 변경되지 않도록 한다. 원본과 내용이 다른 버퍼. 메모리의 변경 내용과 data의 내용이 다르면 Dirty Buffer가 된다. Undo data
update에서는 기존 데이터
delete에서는 삭제된 형의 열 값
insert에서는 행위치 DDL 문의 처리
Data Dictionary에 대한 쓰기 액세스 필요 * COMMIT문의 처리
사용자가 DML문 후 COMMIT실행
LGWR가 Redo log buffer의 log를 Redo log files에 write
서버프로세스는 사용자프로세스에게 commited 메시지를 전송하고 사용자프로세스는 화면에 메시지를 출력
LGWR이 리두로그버퍼안의 변경된 데이터를 wirte할 때 DBWn도 write할수 있도록 CKPT가 signal을 보내준다
DBWn이 Datafiles에 write하면 변경된 데이터를 완전하게 저장할 수 있게 된다.(완전한 committed) DB_BLOCK_SIZE = DB_CACHE_SIZE block size = 2k, 4k, 8k, 16k, 32k 중 하나로 설정
standard block size ; db_block_size=8k
non-standard block size ; db_block_size외의 block size (2k,4k,16k,32k) system, temporary TS의 block size가 됨.
변경불가, 재생성해야함 table 생성시 non-standard block size로 설정가능
create tablespace data01
....
blocksize 16k; block size별 buffer cache 따로 존재함
db_cache_size ; standard block size를 위한 버퍼캐쉬사이즈
db_2k_cache_size, db_4k_cache_size, db_16k_cache_size, db_32k_cache_size db_cache_size와 동일한 db_8k_cache_size를 중복 설정하면 error
db_nk_cache_size설정없이 create tablespace에서 해당 blocksize사용할 수 없음 default keep recycle db_cache_size (필수) db_keep_cache_size (선택) db_recycle_cache_size (선택) * standard block size를 위한 buffer cache 테이블 생성시 <buffer pool> Option을 통해
buffer cache중 어떤 영역에 캐싱할 것인지 정의할 수 있다
자주 사용되는 테이블은 keep buffer cache로 옵션을 정의하면 성능 향상을 기대할 수 있다.
alter table로 해당 option 변경 가능 DB_CACHE_ADVICE = off (비활성화)
ready (비활성화, 메모리공간 확보)
on (활성화) db cache advisor를 사용하기 위해서는 시뮬레이션 결과를 저장하기 위한 공간이 필요 shared pool 내 메모리 확보 필요함 DB CACHE ADVISOR
;버퍼캐시 시뮬레이션 기능 SQL> select block_size, size_for_estimate, size_factor from v$db_cache_advice;

BLOCK_SIZE SIZE_FOR_ESTIMATE SIZE_FACTOR
---------- ----------------- -----------
8192 16 .0816
8192 32 .1633
8192 48 .2449
8192 64 .3265
8192 80 .4082
8192 96 .4898
8192 112 .5714
8192 128 .6531
8192 144 .7347
8192 160 .8163
8192 176 .898

BLOCK_SIZE SIZE_FOR_ESTIMATE SIZE_FACTOR
---------- ----------------- -----------
8192 192 .9796
8192 196 1
8192 208 1.0612
8192 224 1.1429
8192 240 1.2245
8192 256 1.3061
8192 272 1.3878
8192 288 1.4694
8192 304 1.551
8192 320 1.6327
2048 4 .25

BLOCK_SIZE SIZE_FOR_ESTIMATE SIZE_FACTOR
---------- ----------------- -----------
2048 8 .5
2048 12 .75
2048 16 1
2048 20 1.25
2048 24 1.5
2048 28 1.75
2048 32 2

29 rows selected. 설정된 db_cache_size, db_nk_cache_size에 대한 I/O 비율을 확인할 수 있음 * Redo Entry
: 변경작업과 관련해서 기록되는 로그 단위 redo record undo record recover 시 사용 rollback 시 사용 t10: 100->200 t10: 200->100 update emp
set salary=200
where empno=1000;
where deptno=10; 10건에 해당 -------------> 10개 entry 생성 log는 binary 헥사코드로 저장됨
Log Miner라는 툴을 사용하면 log를 해석하여 실행된 문장 및 undo 문장 확인가능 * Password File
슈퍼DBA를 인증하는 파일 PGA_AGGREGATE_TARGET(PGA pool 사이즈를 의미함, 각 PGA의 사이즈는 자동할당됨. PGA_AGGREGATE_TARGET을 0이상의 값으로 설정하면 WORKAREA_SIZE_POLICY=AUTO가 됨 Tablespace가 OFFLINE인 경우
Tablespace가 READ ONLY인 경우
Table이 DROP 또는 TRUNCATE인 경우
Table이 BEGIN BACKUP인 경우 checkpoint queue가 full인 경우 스캔한 버퍼수가 search threshold를 초과한 경우 SYS : 데이터 딕셔너리 소유자 일반 DBA (예, system)
Object에 대한 full권한. DBA role이 부여된 사용자
슈퍼DBA처럼 startup, shutdown을 할 순 없음 * Auto Instance Recovery(by SMON)
1) roll forward ; 모든 로그 적용
2) database open ; warm start
3) roll back ; db open후 병렬로 roll back last checkpoint position 이후 로그에 대해서, * 롤포워드(roll forward)과정

리두로그파일에 적혀진 변경정보를 데이터파일의 데이블럭에 적용하기 위함이다
결국, 커밋되었지만 아직 데이터 파일에 내려히지 않은 데이터 블록이 존재하는 경우, 이를 리두로그 파일의 변경된정보를 사용하여 데이터 파일에 적어주는 과정이라고 이해하면 된다

* 롤백(roll back)과정
만약 데이터파일에 커밋되지 않은 블럭이 존재하고 언두세그먼트 해당 롤백블럭이 존재하지 않는 경우
오라클은 언두세그먼트에 커밋되지 않은 블럭에 대한 롤백 블록을 생성해준다
이렇게 생성된 언두세그먼트 블럭은 데이터파일 내부에 저장되어있는 커밋되어지지 않은 블럭에 해하여 언두세그먼트를 적용하는 과정이다
Full transcript