본문 바로가기

DataBase/Oracle

오라클에서 RANDOM NUMBER를 생성하는 방법(DBMS_RANDOM)

Bulletin no : 11514 참고

Oracle8부터는 Random Number를 생성하는 DBMS_RANDOM package를 제공 합니다.

DBMS_RANDOM패키지를 이용해서 Random Number를 생성하는 방법을 간단히 알아 보겠습니다.

 ☞ Random Number는 -9999999999 부터 9999999999사이의 숫자입니다.

 ☞ DBMS_RANDOM함수의  리턴 데이터형은 BINARY_INTEGER 입니다.


아래의 내용은 Win2000Pro Oracle8.1.7에서 테스트한 내용 입니다.


 1. SYS USER 로 접속하여 아래의 script를 수행 합니다.

script의 위치는 $ORACLE_HOME/rdbms/admin에 있습니다. .

실행할 script : dbmsoctk.sql, prvtoctk.plb, dbmsrand.sql

(경우에 따라서는 utlraw.sql, prvtrawb.plb 를 먼저 수행해야 할 수도 있습니다.)
 
 -- sys유저로 접속 합니다.
SQLPLUS>sys/change_on_install
 
 -- 스크립트를 실행 시킵니다.
SQL>@C:\oracle\ora81\RDBMS\ADMIN\dbmsoctk.sql
SQL>@C:\oracle\ora81\RDBMS\ADMIN\prvtoctk.plb
SQL>@C:\oracle\ora81\RDBMS\ADMIN\dbmsrand.sql
 
 
 -- 테스트를 하기 위해서 scott유저로 접속 합니다.
SQL>conn scott/tiger


 


2. Random Number Generator 초기화

Random Number Generator를 다음과 같이 초기화 합니다.

 - Randomness를 보장 받기 위하여 seed는 적어도 5digits 이상으로 해야만 합니다.

 
SQL>EXEC DBMS_RANDOM.INITIALIZE (12345);
 PL/SQL 처리가 정상적으로 완료되었습니다.

 

 


3. Random Number를 생성하는 예제.

Random Number를 생성하는 예제 입니다.
 

[예제1]

SQL>DECLARE
            random_number BINARY_INTEGER;
       BEGIN
            random_number := DBMS_RANDOM.RANDOM;
            DBMS_OUTPUT.PUT_LINE(TO_CHAR(random_number));
       END;
      /
 
     510714365
 
     PL/SQL 처리가 정상적으로 완료되었습니다.


[예제2]

SQL>SELECT TO_CHAR(DBMS_RANDOM.RANDOM) FROM DUAL
 
TO_CHAR(DBMS_RANDOM.RANDOM)
----------------------------------------
-610488908
 
 


4. Random Number Generator를 종료

Memory를 Release 하기 위하여 Random Number Generator를 종료 합니다.

 
SQL>EXEC DBMS_RANDOM.TERMINATE;
     PL/SQL 처리가 정상적으로 완료되었습니다.


 


5. RANDOM NUMBER GENERATOR를 초기화한 이후에 seed 를 변경합니다.

SQL>EXEC DBMS_RANDOM.SEED(12346);
    PL/SQL 처리가 정상적으로 완료되었습니다.


 


6. 참고사항

  DBMS_RANDOM.TERMINATE 을 이용하여 정상적으로 Random Number Generator를
종료한 이후에 다시 DBMS_RANDOM.RANDOM을 수행하면 Error는 발생하지 않으나
값은 Return되지 않습니다.