Oracle/Admin2009. 12. 1. 22:10
● 개요

- SQL을 사용하여 데이터를 관리하는 방법을 알아보자.
- PL/SQL 객체에 대해 알아보고 관리하는 방법을 알아보자.
- 트리거와 트리거링 이벤트에 대해서 알아보자.
- LOCK 경합을 모니터하고 해결하는 방법을 알아보자.


● DML
  ◎ INSERT
  ◎ UPDATE
  ◎ DELETE
  ◎ MERGE
     - 연관 포스트 : http://aozjffl.tistory.com/134

● TCL
  ◎ COMMIT
  ◎ ROLLBACK

● PL/SQL
  ◎ 정의
      : 4GL언어,  SQL에 절차적 처리를 가능하게 해줌

  ◎ PL/SQL 오브젝트의 관리

  ◎ PL/SQL 오브젝트의 종류와 EM을 이용한 생성 및 관리 방법
     ○ Package
         Database instance > Packages
     ○ Package body
         Database instance > Package Bodies
     ○ Type body
     ○ Procedure
         Database instance > Procedure
     ○ Function
         Database instance > Functions
     ○ Trigger
        - 트리거링 이벤트 : DML, DDL, Database


SQL> select type from dba_source;
SQL> select * from dba_triggers;

종속성 관련 valid, invalid --> 추후에~

● Lock
  ◎ 정의
     : 여러 세션이 동시에 같은 데이터를 변경하는 것을 막는 것을 말한다.

  ◎ Lock의 매커니즘       
     ○ DML
        - TM lock : 이 장의 주요 관심사
           RX    : Row exclusive Table Locks
           RS    : Row Share Table Locks
           S      : Shared Table Locks 다른 DML을 막는 역할
                      테이블에 index생성시에 걸리는 락
           SRX  : Share Row Exclusive Table Locks
           X      : Exclusive
           ※ 연관 포스트 : http://aozjffl.tistory.com/
               Exclusive : I have it and you can not have it.
               Share       : I have it and you can share it with me.
                                But if you try to get it exclusively, I will not let you.
        - TX lock : row level lock

     ○ DDL : 자동 commit이므로 lock에 대해 별 문제가 없다.
       system lock : ST, BF     
       v$lock에 관한 소개 : manual 참조할 것

  ◎ 데이터 일치성
  ◎ DML Locks
  ◎ Enqueue 매커니즘
     ○ Lock vs Latch
        - Lock : 로우에 있는 자원을 보호
                     queuing 되다.
                     v$lock
                     latch보다 덜 엄격하다.(공유 가능한 lock이 많다.)

        - Latch : 메모리에 있는 자원을 보호
                     queuing 되지 않는다. spinning. 복불복 시스템
                     v$latch
                     lock보다 엄격하다.(완전 독점)

  ◎ Lock의 경합
     ○ 원인
         - commit되지 않은 변경
         - 긴 transaction
         - 필요하지 않은 높은 락 레벨

     ○ Lock 경합을 찾는 방법
     ○ Lock 경합을 해결하는 방법
         - EM을 이용한 방법
            Database instance > Blocking Sessions를 이용
            
         - SQL을 이용한 방법

SQL> select sid, serial#, username from v$session;       -- session의 정보를 본다.
SQL> alter system kill session '88','96';                        -- 세션을 죽인다. 88:session id, 96:serial number

     ※ 왜 session id와 serial number를 같이 넣어줄까? 
         -> session의 유일성을 보장하기 위해서.
              session id는 재이용된다. serial number는 계속 증가된다.

     ○ Dead Lock

참고 메뉴얼 : transaction 133page 
                  http://download.oracle.com/docs/cd/B19306_01/server.102/b14220/consist.htm#sthref2026

'Oracle > Admin' 카테고리의 다른 글

Lock의 종류  (0) 2009.12.03
Managing Schema Objects-2  (0) 2009.12.02
Managing Schema Objects-1  (0) 2009.11.30
Administering User Security  (0) 2009.11.27
2009년 11월 26일 수업내용  (0) 2009.11.26
Posted by 자수성가한 부자