2020. 5. 19.

[Oracle] 관리자 1장 오라클 구성요소


* 딕셔너리 목록을 외워야한다.
데이터베이스를 조회할떄 어떻게하냐라고한다면
tab 조회한다고 하면 안된다.
user_tables 조회한다. user_cons_columns 조회한다.

테이블을 2차원배열하고 똑같이 생겼지만 행안의 데이터가 분리되지않는다.

주요 구성 요소 개요


오라클은 데이터베이스와 인스턴스로 나눠서간다.

인스턴트는 로직컬 스트럭쳐 논리적인 구조
instance 메모리에 있기에 종료하면 없어진다.
데이터베이스는 피지컬 스트럭쳐 물리적인 구조

mysql 데이터베이스와 오라클의 데이터베이스는 완전 다른 뜻이다.
대상 자체가 다르다.

mysql에서의 데이터베이스는 세가지 종류의 파일을 데이터베이스라 한다.
데이터파일, 컨트롤파일, 리드로그파일도 여러 있다.
크기나 갯수가 변하지않고 사용할수 있는 양도 정해져있다.

SDLC  - 시스템을 폐기처분할떄까지 구성을 바꿀일은 없다.
어떤 시스템을 기획단계에서부터 사용하고 폐기한다.

데이터파일은 많은 설정과 조정과 관리작업이 필요하다.
데이터베이스의 열려있는 파일을 말한다.

인스턴스는 셧다운 하면 없어진다.
인스턴스는 두개로 나눠진다. SGA 백그라운드(동그라미)로나눠진다.


데이터베이스 마운티드는 컨트롤파일이 메모리에 열리는 것이다.
데이터베이스 오픈은 컨트롤파일을 제외한 나머지 파일을 여는것이다.
이렇게 되면 오라클을 사용할수 있게 된다.

기본 백그라운드 프로세스는 읽는방식이 정해져있다.
PMON(피몬) : 프로세스 모니터
SMON(에스몬) : 시스템 모니터
DBWR(디비라이터) : 데이터베이스(datafiles) 쓰는
LGWR(로그라이터) : 로그 정보(redo log) 쓰는
CKPT(체크포인트) : 데이터베이스 무결성 확보, 데이터베이스 동기화 정보 맞추라
  • 디비라이터와 로그라이터를 동시에 기동하는 체크포인터를 발생시키세요

기본 백그라운드 프로세스 5개중 한개라도 죽으면 프로그램이 없게 해둠

sqlplus - userprocess이다. 윈도우든 어디서든 실행할수있다.
user process :  사용자 인터페이스이다. 처리하진 못한다.
server process : 명령어에 대한 처리한다.

SGA 세가지로 구성되어있음

database buffer cache(데이터베이스 버퍼 캐쉬) :
library caache(라이브러리 캐쉬) :
data dictionary cache(데이터 딕셔너리 캐쉬) :
redo log buffer(리드로그버퍼) :
  • cpu * 128k 권장크기
java pool :
large pool :
shared pool :

유저프로세스를 통해 서버 프로세스에 접속한다.
데이터베이스 컨넥션은 유저프로세스부터 서버프로세스까지이다.
서버프로세스가 유저프로세스에게 서비스를 하는것이다.
서버프로세스 한개당 유저프로세스 하나씩 관리한다.
메모리에서 folk 하여자신을 복제함.
멀티쓰레드 : 서버프로세스 1개당 여러 유저프로세스를 관리

select userprocess에게 보내면
user process server process에게 요청한다.
server process 실행하는 과정에 들어간다.

*server process select 명령어 실행 과정
select ename from emp; 받으면 sql문의 오타를 검사한다.
emp 라는 테이블과 ename라는 열이 있는지 확인한다.
(모든테이블은 datafiles 안에 있다.)
메모리를 하드보다 먼저 뒤져본다. - get 한다라고 한다.
메모리에 있으면 - hit 이라고 한다.
hitration 검사한다.
하드는 instance보다 느리기 때문에 data dictionary cache 올려서
검색한다.
(실행계획 : 어떻게 데이터베이스를 읽을지 정하는것)
library cache 실행계획을 뒤져본다.
없으면 새로운 실행계획을 만든다. 이것을 파싱이라고 부른다.
데이타를 읽는 방식은 2가지가 있다.(스캔 - 테이블에 있는것을 읽는다. )
  • full table 스캔 : 처음부터 끝까지 읽음
  • index 스캔 : 인덱싱목록을 읽음
database buffer cache emp테이블이 없으면 데이터 파일로 간다.
datafiles 있는것을 database buffer cache 올려서 읽는다.
database vuffer cache LRU 알고리즘을 쓴다.

*다른 명령어 실행 과정

같은 문장으로 인식하게 해야한다.
update database buffer cache 에서 한다. 명령이 끝나서 commit 하면
datafiles 저장됬는지 아무도 모른다. 이것을 디비라이터가 해준다.
database buffer cache 찰거같으면 datafiles 저장한다.
디비라이터가 동작하지 않았는지 확인하는것은 하드드라이브의 I/O 확인한다.
commit 안해도 메모리가 꽉찰거같으면 그냥 쓴다.. (싸가지가 없다..말도 안듣고 지멋대로하네..)
redo log buffer 모든 log 저장해뒀다가 commit 하면 언제 무엇을 했는지 redo log files 저장한다. (정전되더라도 보험이 있다는 ...인가)
redo log buffer 백만건의 insert 하면 백만건의 엔트리(작업갯수) 쌓인다.
  • 우리가 commit 해서 commit complete 뜨면 redo log buffer 정보를 redo log files 내린것이다.
rollback하면 테이블 구조가 바뀐다.. ( 그래서 롤백 기능이 없음 )

DBA - 테이블을 누군가(데분 만세) 망쳐놓으면 원상복구시켜야한다.
(DBA인데 이거 모르면 연봉 적다)
네트워크관리자 - 연봉적게 주면 사장이 나쁜놈
유닉스관리자 - 연봉 적으면 일못해서 안주는거

작업일지는 시간순서가 제일 중요하다.

트랜잭션 작업하면 바뀜
롤백해도 데이터베이스작업 바뀜
에그리게이션 - 하위자료를 가지고 융합해서 고급정보가 되는것

create, drop, alter 롤백안됨 - 우리가 하는게아니라 관리자에게 허가받아야함.

* 기본백그라운드 프로세스의 역할

pmon : 메모리를 돌아다니며 콜링을 건다.
smon : 정전이후 startup 전에 redo log files 뒤져봐서 복구한다. (인스턴트 리커버리) 동기화
인스턴트 페일리얼 : 메모리가 날라가는 정전상태
dbwr : 데이터베이스버퍼캐쉬에 있는 내용이 바뀐거만 데이터파일에 내린다.
lgwr : redo log buffer (로그) 있는걸 redo log files 저장
ckpt : check point 인벤트 발생, dbwr,lgwr 동시에 움직일떄(데이터를 내리지않음)

약자가 아닌건 한글로
약자인건 영어로
번역이 안되는 고유명사는 한글로
# 구분하기 싫으면 영어로 써라
# 단계적으로 외워야하고 박스 그려라

데이터파일에는 세그먼트
리그로그파일은 엔트리

데이터파일은 리커버리가 가능 - 하지만 drop 하면 절대 안해줌
컨트롤파일은 정말 작은크기인데 이게 손상시 일부 datafiles 손상가능성

정상적인 오라클을 운영하려면 최소 5개이상의 하드가 잇어야한다.
아니면 Raid시스템을 쓰면서 컨트롤러파일과 리두 로그파일은 외부에 하나 미러링이 잇어야함. raid라고 믿을 없다.
하드를 분리해야한다.
control files 가장 먼저 읽는다.
그리고 datafiles 이나 redo log files 경로를 이동시키면 컨트롤 파일이 감지하고 망가뜨린다.

archived log files : redo log files 꽉차면 대신 로그정보를 저장해주는

parameter file(매우 중요함) : 파라미터값이 들어감, 인스턴트를 운영하는 방법 ex) DB size 5MB
0으로 설정되있으면 instant 올라옴
버전업하면서 파라미터파일이 2개가 . 기존에 쓰던 파라미터 파일은 p파일(텍스트 파일), 새로 생긴 파라미터파일은 sp파일(지금은 주로 , 바이너리 파일)
sp파일은 시작시 처음 한번 읽힌다.

password file : 오라클 관리자용 패스워드 하나만 저장된다. 리눅스 관리자 아이디(ora12c)로만 로그인하려면 이걸 지워버리면 된다. orapwt 라는 외부프로그램으로 삭제한다.



댓글 없음:

댓글 쓰기