본문 바로가기

SAP셀프스터디/22일만에 이지아밥 1회독 하기

[chapter08] Lock Object

최초 작성일: 23년 2월 21일

최종 작성일:

 

chapter 08. lock object

 lock object는 시스템이 데이터를 변경하는 동안, 데이터의 불일치가 발생하지 않도록 한다.

lock object의 개념과 생성 그리고 프로그램에서 lock을 사용하는 실습을 통해 sap 시스템의 lock 매커니즘을 이해한다.

01. overview

dbms은 데이터 변경 요청이 오면, 물리적으로 테이블 데이터에 lock을 설정한다. 데이터에 접근하려는 사용자는 lock 설정이 해지될 때까지 기다려야 한다.

sap lock object는  lock object를 생성하여 개별 프로그램 마다 lock을 설정하거나 해지하는 구문을 추가해야한다.

그리고 사용자가 프로그램을 실행하여 데이터에 접근할때, lock이 설정되어 있는지 확인하는 스크립트를 추가해야한다.

lock object는 t-code : se11에서 생성/변경/조회할 수 있는 abap dictionary로서, 여러 프로그램이 같은 데이터에 접근할 수 있도록 동기화 하는 역할을 담당한다.

lock을 설정하려면 abap dictionary에 lock object가 생성되어 있어야 한다.

 

프로그램1이 데이터를 수정할때, 프로그램2가 변경 중인 데이터에 접근하지 못하도록 한다.

이때 프로그램1은 해당 데이터에 lock을 설정하게 된다.

lock 매커니즘은 다음 두가지 주요 기능을 제공한다.

  • 프로그램이 데이터를 읽고 변경한 후에 다른 프로그램에 완료하였다고 전한다.
  • 프로그램이 다른 프로그램에 의해 변경 중인 상태의 데이터를 읽는 것을 방지 한다.

lock 설정 순서

1. request lock : 프로그램에서 데이터에 대한 lock을 요청한다. 잠긴 상태의 테이블 데이터 레코드는 논리적인 조건에 의해 관리 된다.

2. enter lock

3. set lock

데이터가 잠긴 상태에서 다른 프로그램에서 데이터에 접근하면 이 요청은 lock table에 저장된다.

작업하고자 하느 ㄴ데이터를 정확하게 설정하기 위해, lock object는 테이블의 key필드로 구분될 수 있도록 설정하는 것이 바람직 하다.

4. access data

lock을 설정한 프로그램에서만 해당 데이터에 접근하여 작업할 수 있다.

출처: 이지 아밥

Lock mode

  • E: Exclusive lock 한 명의 사용자만이 테이블에 접근할 수 있다. 다른 exclsive lock이나 shared lock에 대하여 수용하지 않는다
  • S:Shared lock 여러 명의 사용자가 같은 시간에 같은 데이터를 읽을 수 있다. 하지만, 한 사용자가 데이터를 변경하기 시작하면, 다른 사용자는 더는 그 데이터에 대해 접근할 수 없다. 또한, 다른 사용자에 의해 발생하는 shared lock에 대해서는 수용하지만, exclsive lock에 대해서는 수용하지 않는다.
  • X: Exclusive but not cumulative lock exclusive lock은 하나 이상의 같은 transaction 내에서 lock을 요청할 수 있다. 그러나 해당 transaction 내에서 단 한번 만 lock을 요청할 수 있으며 이외 모든 lock 요청을 수용하지 않는다.

02.lock object 생성

02-1. lock object 생성

allow RFC를 체크하면 다른 서버의 프로그램에서도 호출하여 사용할 수 있다.
no suitable relashionthips defined for the tables????

 

-> 이외 추가되는 모든 테이블은 primary table과 외부 키로 연결되어 있어야한다.

table에서 where used list 확인하는 방법
기존 db테이블에서 lock object 설정 하는 방법 (where used list 선택하면 됨)

02-2. function module의 파라미터 속성

03. lock 프로그램 예제

04. lock 확인

05. table 전체 lock

06. T-CODE lock 설정

07. 기타

07-1. enqueue_read 함수

07-2. editor lock 해지