java.sql.SQLException: IO 예외 상황: The Network Adapter could not establish the connection
No. 11514
(Oracle8)dbms_random package 를 이용하여 random number 를 생성하는 방법
=====================================================================
Oracle8 에서는 random number 를 생성하는 dbms_random package 를 제공한다.
이를 이용하여 random number 를 생성하는 방법을 알아본다.
1. sys user 로 접속하여 (또는 svrmgrl 에 connect internal) 다음의
script를 수행한다. script의 위치는 $ORACLE_HOME/rdbms/admin 이다.
dbmsoctk.sql, prvtoctk.plb, dbmsrand.sql
경우에 따라서는 utlraw.sql, prvtrawb.plb 를 먼저 수행해야 할 수도 있다.
2. random number generator 를 다음과 같이 초기화한다. randomness 를 보장
받기 위하여 seed 는 적어도 5 digits 이상으로 해야만 한다.
Example :
SQL> exec dbms_random.initialize (12345);
PL/SQL procedure successfully completed.
3. random number 를 생성한다.
Example 1 :
SQL> set serveroutput on
SQL> declare
2 random_number binary_integer;
3 begin
4 random_number := dbms_random.random;
5 dbms_output.put_line(to_char(random_number));
6 end;
7 /
2116177396
PL/SQL procedure successfully completed.
Example 2 :
DECLARE
i BINARY_INTEGER;
BEGIN
dbms_random.initialize(19254);
i := dbms_random.random;
INSERT INTO some_table VALUES(i);
dbms_random.terminate;
END;
4. memory 를 release 하기 위하여 random number generator 를 종료한다.
Example:
SQL> exec dbms_random.terminate;
PL/SQL procedure successfully completed.
5. random number generator 를 초기화한 이후에 seed 를 변경한다.
Example:
SQL> exec dbms_random.seed (12346);
PL/SQL procedure successfully completed.
6. 참고사항
a. dbms_random.terminate 을 이용하여 정상적으로 random number
generator 를 종료한 이후에 다시 dbms_random.random 를 수행하면
error 는 발생하지 않으나 값은 return 되지 않는다.
b. random 함수를 바로 SQL 문장에 사용할 수 없다.
Example:
SQL> exec dbms_random.initialize (12345);
PL/SQL procedure successfully completed.
SQL> insert into x values(dbms_random.random);
insert into x values(dbms_random.random)
*
ERROR at line 1:
ORA-06571: Function RANDOM does not guarantee
not to update the database.