IT/Oracle2011. 4. 21. 18:57


CHAP 8장 데이터 및 동시성 관리
 - SQL사용법을 통해 데이터 관리
 - PL/SQL 객체 식별 및 관리
 - 트리거 및 트리거 이벤트 설명
 - lock 충돌 모니터 및 해결

INSERT명령

 한번에 하나의 행을 생성
 다른 데이블의 여러 행을 삽입한다.


insert into dept_80 (select * from employees where department_id  = 80);

하나 이상의 테이블에서 다른 테이블로 데이터를 대량으로 로드

insert into just_names (first, last)
 (select first_name, last_name from employees);

UPDATE 명령

 테이블의 0개 이상의 행을 변경이 가능하다.

DELETE 명령

 테이블의 0개 이상의 행을 제거한다.

MERGE명령

 단일 명령으로 INSERT및 UPDATE를 수행이 가능하다.

COMMIT및 ROLLBACK명령

다음 명령은 트랜잭션을 완료하는 데 사용됩니다.
  COMMIT : 변경 사항을 영구적으로 적용
  ROLLBACK : 변경 사항을 되돌린다.

PL/SQL

  Oracle의 PL/SQL은 4세대 프로그래밍 언어로 다음과 같은 기능 제공
  - SQL의 절차적 확장
  - 플랫폼과 제품 간의 이식성
  - 높은 수준의 보안 및 데이터 무결성 보호
  - 객체 지향 프로그래밍 지원

PL/SQL 객체 관리

  DBA는 다음을 수행이 가능함.
  - 문제가 되는 PL/SQL 객체 식별
  - 적절한 PL/SQL 사용법 제안
  - DB로 PL/SQL 객체 로드
  - PL/SQL 개발자의 문제 해결 지원

PL/SQL객체

다양한 유형의 PL/SQL 데이터 베이스 객체가 있습니다.
  - 패키지
  - Package Body
  - Type Body
  - 프로시저
  - 함수
  - 트리거

Lock

 - 다중 세션에서 동일한 데이터를 동시에 변경하는 것을 방지합니다.
 - 주어진 명령문에 대해 가능한 가장 낮은 레벨에서 자동으로 획득됩니다.
 - escalate하지 않습니다.

SQL> LOCK TABLE employees IN EXCLUSIVE MODE;

이 명령을 통해 lock된 테이블에서 행을 갱신하려는 다른 트랜잭션은 lock요청을 실행한 트랜잭션이 완료될 때가지 대기해야 합니다.

 몇가지 Lock모드

  - ROW SHARE : lock된 테이블에 대한 동시 엑세스를 허용하지만 세션이 배타적 엑세스를 위해 전체 테이블을 lock하는 것은 금지합니다.
  - ROW EXCLUSIVE : ROW SHARE와 동일하지만 SHARD모드에서 lock를 금지합니다.
  - SHARE : 동시 query는 허용하지만 lock된 테이블에 대한 갱신은 금지합니다.

Enqueue 메커니즘
 - lock을 대기하는 세션
 - 요청된 lock모드
 - 세션에서 lock을 요청하는 순서
- lock요청은 자동으로 큐에 저장됩니다. lock을 보유하는 트랜잭션이 완료되면 대기 중인 다음 세션이 lock을 보유하게 됩니다.
- Enqueue 메커니즘은 lock이 요청된 순서와 요청된 lock모드를 추적합니다.
- lock을 이미 보유한 세션은 큐의 끝으로 이동하지 않고 해당 lock의 변환을 요청할 수 있습니다.

Lock 충돌 유발 원인

- 커밋되지 않은 변경 사항
- 장기 실행 트랜잭션
- 필요 이상으로 높은 lock레벨

Lock충돌 감지

Enterprise Manager의 Blocking Sessions페이지를 사용하여 lock충돌을 찾습니다.
Session ID링크를 눌러 실제 SQL문을 포함하여 lock세션에 대한 정보를 확인합니다.

Lock충돌 해결

  - lock을 보유하는 세션을 커밋 또는 롤백합니다.
  - 최후의 수단으로 lock을 보유하는 세션을 종료합니다.

세션이 종료된 유저를 다시 실행하려고 할때 다음과 같은 오류 발생

ORA-03135 : connection lost contact

SQL을 사용하여 Lock충돌 해결

STEP1
SQL> select sid, serial#, username
from v$session where sid in
(select blocking_session from v$session)

STEP2

SQL> alter system kill session '144,8982' immediate;

 

 

Posted by 예영교육 연구소
IT/Network2011. 4. 20. 01:28

UDP(User Datagram Protocol)
 - Layer 4 계층 프로토콜
 - 비연결 지향성 서비스(Connetionless Service)
 
동작 원리
- TCP와 달리 송신측과 수신측간의 접속 절차 없이 수신측에서 요청을 실시하면, 송신측에서 바로 데이터를 전송한다.
- Three-way Handshaking, 데이터 스트림 서비스, 재전송 서비스, 혼잡 제어 기능 수행 안함.


장점

신뢰성을 보장하는 서비스 질의 응답을 실시하지 않기 때문에 신속한 데이터 전송이 가능하다.
따라서, 실시간으로 트래픽을 전송하는 멀티미디어 서비스 환경에서 주로 사용


단점

신뢰성이 보장되지 않아 데이타 손실률이 많다.


UDP 프로토콜을 사용하는 어플리케이션 프로토콜

DNS(Port53), DHCP(Port 67/68), TFTP(Port 69), SNMP(Port 161), NTP(Port 123), RIP(520)


UDP Header

 
(이미지 참조 : http://cs.uccs.edu/~cs522/msgformat/format.htm)






Posted by 예영교육 연구소
IT/Network2011. 4. 20. 01:05

TCP(Transmission Control Protocol)

- Layer 4계층 프로토콜

- 연결 지향 서비스(Connection-Oriented Service) - 무결성 보장

- 스트림 서비스 제공(Stream Data Service)

 

TCP는 3-Way Handshaking과정을 실시한다.

왜 3-Way Handshaking를 사용할까? 에러율이 낮고, 데이터 손실률이 적음.

 

흐름제어(Flow Control)

-TCP는 통신에 참여한 두 호스트가 송신할 수 있는 데이터 양을 네트워크 상황에 맞게 조절하는 기능을 제공.

즉, 매번 송신한 데이터에 대한 응답을 수신해야만, 그 다음 데이터를 송신할 수 있음.(Stop-and-Wait)

 

- TCP는 슬라이딩 원도우(Sliding Window) 기능을 이용하여 상호 협의한 원도우 크기만큼 데이터를 송신하고 수신함.

(Sliding window을 사용하므로서 데이터 전송 처리율과 메모리에 대한 효율성을 보장)

 

오류제어(Error Control)및 오류 정정(Error Correction)

- TCP는 세그먼트에 포함된 체크섬을 이용하여 세그먼트 손상 여부를 검사

 

동작원리

송신측 -----------------> 수신측

1. 세그먼트 송신

 

2. 수신측에서 만약 세그먼트 손상이 발견되면

수신측에서 해당 세그먼트 폐기, 송신측으로 응답을 보내지 않는다.

 

3. 송신측에서는 일정 시간이 초과되기 이전에 응답을 수신하지 못하면,

해당 세그먼트가 손상되었거나 손실되었다고 간주.

 

4. 송신측에서 각 세그먼트마다 시간 초과 카운터를 이용하여 주기적으로 확인.

카운터 값이 만기되면 해당 세그먼트 재전송

 

혼잡 제어 (Congestion Control)

전자 통신 네트워크로 들어가는 정보 소통량을 조절하여 네트워크가 혼잡해지지 않게 조절하는 것을 말한다.

 

각 호스트는 정보를 빨리 보내기 위하여 정해진 시간 내에 보낼 수 있는 최대의 패킷을 보냈고,

일부 라우터에서는 혼잡 현상이 발생하여 정해진 시간 내에 받은 패킷들을 모두 처리하지 못하였다.

정해진 시간 내에 패킷이 처리되지 않으면 호스트는 패킷을 재전송하였고, 라우터는 더 많은

패킷을 받게 되어서 혼잡 현상이 더 심해졌다.

 

동작 원리

TCP의 혼잡 제어는 패킷을 보내는 쪽에서 네트워크의 수용량을 결정하는 방식으로 동작한다.

패킷을 보내는 측에서 안전하게 보낼 수 있는 패킷의 수를 알고 있고, 패킷이 잘 도착하면 ACK 패킷을 받는다.

즉 이전에 보낸 패킷이 잘 도착되었다는 것을 ACK 패킷을 받은 것으로 알 수 있고, ACK 패킷을 받으면 안전하게

새 패킷을 더 보낼 수 있기 때문에 TCP의 혼잡 제어를 셀프클록 방식(self-clocking)이라고 한다.

(위키백과사전 참조)

Posted by 예영교육 연구소