집 >데이터 베이스 >MySQL 튜토리얼 >DBMS_LOCK을 사용하지 않고 Oracle에서 데이터베이스 절전 기능을 구현하는 방법은 무엇입니까?
DBMS_LOCK이 없는 Oracle의 데이터베이스 절전 기능
Oracle에서는 DBMS_LOCK.sleep 함수를 사용하여 사용자가 지정된 기간 동안 실행을 일시 중지할 수 있습니다. 그러나 이 함수를 사용하려면 일반적으로 프로시저 소유자에게 특정 권한을 부여해야 합니다.
DBMS_LOCK.sleep 함수를 활용하는 다음 함수를 고려하십시오.
CREATE OR REPLACE FUNCTION MYSCHEMA.TEST_SLEEP ( TIME_ IN NUMBER ) RETURN INTEGER IS BEGIN DBMS_LOCK.sleep(seconds => TIME_); RETURN 1; EXCEPTION WHEN OTHERS THEN RAISE; RETURN 1; END TEST_SLEEP;
이 함수는 실행을 효과적으로 일시 중지하지만 사용하려면 DBMS_LOCK에 대한 액세스 권한을 부여해야 합니다. 이 요구 사항을 우회하기 위한 대체 솔루션이 있습니다.
IN_TIME INT; --num seconds v_now DATE; -- 1) Get the date & time SELECT SYSDATE INTO v_now FROM DUAL; -- 2) Loop until the original timestamp plus the amount of seconds <= current date LOOP EXIT WHEN v_now + (IN_TIME * (1/86400)) <= SYSDATE; END LOOP;
이 대체 방법은 LOOP를 활용하여 실행을 일시 중지합니다. 현재 날짜와 시간을 반복적으로 검색하고 이를 목표 지연과 비교합니다. 현재 시간이 지연 기간을 초과하면 루프가 종료되어 특별한 권한 없이도 수면 기능의 효과를 효과적으로 시뮬레이션합니다.
위 내용은 DBMS_LOCK을 사용하지 않고 Oracle에서 데이터베이스 절전 기능을 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!