boyeon

10강 - PACKAGE / TRIGGER / 오라클 구조 본문

...

10강 - PACKAGE / TRIGGER / 오라클 구조

bo_yeon 2019. 1. 23. 15:51

- USER : LEE

 

  1. PACKAGE

a. 프로시져의 묶음

b. PACKAGE + BODY

--1.PACKAGE 부분

CREATE OR REPLACE PACKAGE 패키지명

IS

PROCEDURE 프로시져명1;

PROCEDURE 프로시져명2;

...

END;

 

--2.BODY 부분

CREATE OR REPLACE PACKAGE BODY 패키지명

IS

 

PROCEDURE 프로시져명1

IS

BEGIN

...

END;

PROCEDURE 프로시져명2

IS

BEGIN

...

END;

...

END;

 

--실행 부분

EXECUTE 패키지명.프로시져명1;

EXECUTE 패키지명.프로시져명2;




  1. TRIGGER

a. 테이블에 대한 이벤트를 자동으로 실행 해 주는 것이다

b. 종류

   - AFTER TRIGGER : 조작어 실행 후에 자동으로 실행되는 트리거

   - BEFORE TRIGGER : 조작어 실행 전에 자동으로 실행되는 트리거

c. TRIGGER은 COMMIT과 ROLLBACK 불가능




  1. INSERT TIRGGER

CREATE OR REPLACE TRIGGER 트리거이름

AFTER INSERT --테이블에 값이 INSERT된 직후에 자동으로 실행

ON 사용자이름.테이블이름

FOR EACH ROW --:NEW.컬럼명/:OLD.컬럼명을 사용하려면 반드시 추가해야함

BEGIN

...

END;



  1. UPDATE TIRGGER

CREATE OR REPLACE TRIGGER 트리거이름

AFTER UPDATE OF 컬럼명 --지정한 특정 컬럼이 UPDATE된 직후에 자동으로

 실행

ON 사용자이름.테이블이름

FOR EACH ROW

BEGIN

...

END;



  1. DELETE TIRGGER

CREATE OR REPLACE TRIGGER 트리거이름

AFTER DELETE --테이블이 DELETE된 직후에 자동으로 실행

ON 사용자이름.테이블이름

FOR EACH ROW

BEGIN

...

 

END;

 

 

- ORACLE ARCHITECTURE

 

 

  1. SGA(System Grobal Area)의 가장 중요한 3가지
 
- Shared Pool
= 사용자가 SQL문을 써서 컴파일 해서 Shared SQL Area에 저장
= 만약 다른 사용자가 똑같은 SQL문을 쓴다면 컴파일 하지 않고 바로 여기서 가져다가 쓴다.
= 가장 최근에 실행한 sql문 or 데이터정의가 저장되어있음
 
- Database Buffer Cache
= 기본은 8K BYTE가 저장공간의 사이즈인데
= 저장할 데이터 양이 적으면 공간 낭비를 줄이기 위해서 2K,4K로 저장공간을 할당한다.
 
- Redo Log Buffer
= 선기록 후조치

* log에 먼저 기록하고 CKPT를 건드려서 DBWn이 내려쓰도록

  = 모든 과정이 LOG에 기록된다
  = LGWR(펜)을 통해서 LOG파일(공책)에 내려쓴다.

             * WHY? 만약 그대로 메모리에 내비두면 메모리가 잘못되면 다 지워지기 때문에

= 로그는 복구(데베 자체가 망가졌을때)만 사용
 
* LRU List
= 가장 오래전에 메모리상에 올라와서 가장 오랫동안 사용되지 않은 데이터를 저장하는 곳

     = 사용을 중지하지 않지만 언제 사용할지 몰라서 잠시 치워놓는 위치(지금 당장은 불필요)

 

 

 

  1. Background Processes
 

 

PMON (Process Monitor)

= server는 문제가 없는데 시스템에 문제가 생기면 다른 사용자가 접근할 수 없게 lock이 걸려있는 상태로 계속 있어야 하고 / 다음 로그인에 문제가

생긴다(이미 로그인이 되어있는 상태로 인식되어서)

= server가 시스템에 문제가 생긴 것을 모니터

= 커밋은 사용자만 할 수 있는 것이기 때문에 server는 롤백해서 lock걸려있는 것을 풀어준다. (다른 사용자가 사용해야 되기 때문에)

= 또한 다음번에 로그인할때 문제가 되지 않도록환경을 만들어줌

 

- SMON (System Monitor)

= 단순히 데이터를 수정하는 것은 log를 사용해서 복구 하는 것이 아니라 undo파일을 이용해서 복구

= undo 파일을 commit을 해야지 저장

= 로그파일에는 commit하지 않아도 저장

= smon은 문제가 생겨서 컴퓨터가 꺼졋을때  로그파일에서 데이터를 가져와 undo와 비교해서 일치하면 가져오고 아니면 가져오지 않는다

=> 데이터를 일치 시켜줌

 

 

 

 

3. Instance

 

     

 

 

 

     = instance ( sga + background processes )

= 인스턴스가 완료됫다는 소리는 정상적으로 실행이 되었다는 소리

 

 

 

 

 

 

 

 

 

4. WR

 

 

DBWn

  = Database Buffer Cache에 있는 내용을 쓸때 DBWn을 사용(하나의 블럭마다 따로 존재 때문에 n이 붙음)

 

LGWR

  = Redo Log Buffer의 내용을 commit시 파일로 내려씀 CKPT를 건드려서 DBWn이 내려쓰도록시킴

(LGWR가 쓴 내용과 DBWn이 쓴 내용이 일치)

  = commit을 안해도 3초마다 자동으로 내려쓴다.

 

CKPT

  = 데이터파일에 있는 번호 / 컨트롤 파일에 있는 번호 / 로그파일에 있는 번호 -> 3가지의 번호가 일치 데이터베이스를 열어 볼 수 있다.(보안)

 

 

 

 

5. Archived Log files

 

 

= 로그파일은 다 꽉차면 다음 그룹에 쓴다. 마지막 그룹까지 다 차면 다시 앞으로 = 덮어쓰기(순환식)

= 덮어쓰기 때문에 ROLLBACK이 불가능 => Archived Log files가 필요한 이유

= 로그 스위치 => 다음그룹으로 넘어가는 것

= 로그 스위치할때 Archived Log files에 그대로 그 그룹을 기록한다(데이터베이스에서 관리 안함)

= 데이터베이스에서 관리하지 않기 때문에 삭제 가능(외부에 공간에 저장) - 관리자 권한 필요

= Archived Log files가 있기 때문에 거의 100%복구가 가능하다 => 중요한 파일

 

 

 

 

6. Server/User Process

 

 

  - User Process

   =제일 먼저 연결해야함

= pga영역을 정해야함

 

  - Server Process

   = user가 server process에 연결하려고 시도

 

  - Background Pprocess

   = oracle instance가 시작된 후에 시작

 

 

 

 

 

 

 

 

  7.  Tablespace

Table space

 = 논리적 구조

 

Segment

 = 나만 쓰는 내 공간

 = 논리적인 공간(oracle에만 있는 용어)

 = 오브젝트가 만들어져서 하드디스크에 저장된 있는 공간

 

Datafile

 = os에서의 개념