프린트 하기

OS환경 : Oracle Linux6.8(64bit)


DB 환경 : Oracle Database 11.2.0.4


방법 : dbms_lock

PL/SQL을 작성할때 가끔 특정 시간 만큼 Sleep 을 원할 경우가 있음

이때 dbms_lock Package를 사용하면 편리함

일반 user가 execute 권한이 없을 경우엔 SYS user로 접속하여 권한 부여하여야 함



명령어

SQL> grant execute on dbms_lock to public;



사용 예시

dbms_lock들어있는 PLSQL 실행

SQL> begin

for i in 1 .. 7000 loop

  insert into EMP values( i, 'TEST', 'DBA', 7839, sysdate, 100, 10, 10);

  commit;

  dbms_lock.sleep(1/10);

end loop;

end;  2    3    4    5    6    7  

  8  /

  dbms_lock.sleep(1/10);

  *

ERROR at line 5:

ORA-06550: line 5, column 3:

PLS-00201: identifier 'DBMS_LOCK' must be declared

ORA-06550: line 5, column 3:

PL/SQL: Statement ignored


정의되어 있지 않다고 나옴


권한부여

SQL> grant execute on dbms_lock to public;


PLSQL 재실행

begin

for i in 1 .. 7000 loop

  insert into EMP values( i, 'TEST', 'DBA', 7839, sysdate, 100, 10, 10);

  commit;

  dbms_lock.sleep(1/10);

end loop;

end;


PL/SQL successfully completed.

=> 정상 실행됨


참조 :