简单得说,通过dbms_random包调用随机数的方法大致有4种: 1、dbms_random.normal
# z# o. z& T) ]9 Q5 {& D 这个函数不带参数,能返回normal distribution的一个number类型,所以基本上随机数会在-1到1之间。
1 V5 p+ f: i/ q, Z/ S& ]6 q) i8 T 简单测试了一下,产生100000次最大能到5左右:
* q2 d. R- {3 y% i5 k( u$ ~ SQL> declare0 @6 d6 U2 c$ M3 n
2 i number:=0;7 X6 S$ w8 P; G$ y- D
3 j number:=0;; w/ G+ D0 d2 h8 C' h. \" Y
4 begin
, f7 t, y5 b1 `: O9 J; O 5 for k in 1 .. 100000 loop0 n/ I& W' m& x1 t1 v
6 i:= dbms_random.normal;' |" Q4 P* ^5 |( q* z' c& F
7 if i > j
9 o: b2 |7 K' c4 Y 8 then j:=i;# I* C7 I+ b/ z4 O9 h( z9 c
9 end if;) u& k/ C( B" W N
10 end loop;
$ ` D: U W5 U% q* }( l/ J 11 dbms_output.put_line(j);$ `0 U) f) y( v9 j6 n2 {! X
12 end;
* Z( H. O) {# G, f$ C 13 /
5 [6 n5 C7 }4 u: |1 N 5.15325081797418404136433867107468983182
( l9 Z4 p2 T$ g1 t PL/SQL procedure successfully completed. @1 `2 R1 P6 Z9 |
2、dbms_random.random5 a2 ?2 u1 H f% G5 _
这个也没有参数,返回一个从-power(2,31)到power(2,31)的整数值
; G" ]+ [6 N7 ~: w+ U e 3、dbms_random.value
$ g+ r! I! t* E6 g/ _% d 这个函数分为两种,一种是没有参数,则直接返回0-1之间的38位小数
" S8 l* n8 f. A9 [- S2 j$ C$ d3 { SQL > column value format 9.99999999999999999999999999999999999999
8 S) R0 I) A) I* I# J SQL > select dbms_random.value from dual;
9 D' }0 a5 q! J, s5 b VALUE: N1 B2 m7 x& z6 b0 U: I
-----------------------------------------& M4 S) F4 H v
.58983014999643548701631750396301271752
8 Z" b- p9 {/ p/ m- b! T. k+ q T : N. y* q! C/ B5 B
</p> RMAN> SWITCH DATAFILE 6 TO COPY;9 S7 S0 l9 s' x% U3 F
datafile 6 switched to datafile copy "+DGROUP1/toasm/datafile/users.265.683431079"+ j2 G$ I/ n, g7 Y( i
RMAN> SQL 'ALTER DATABASE DATAFILE 6 ONLINE';' [* P! }; a+ ?$ }( A6 W N; u1 C
RMAN> RECOVER DATAFILE 6;+ o( z) y6 f* k4 \! u
Starting recover at 06-APR-09 `8 b# c& G. t J: j* s& |! {
using channel ORA_DISK_1% J* a. L+ g3 R! a
starting media recovery$ G" G- h- h P! G5 U6 |
media recovery complete, elapsed time: 00:00:01
. U. m9 ?6 P3 }. M+ E" Q" E& l Finished recover at 06-APR-09
+ k3 X# f2 ?- ? V RMAN> SQL 'ALTER DATABASE DATAFILE 6 ONLINE';
( f2 H9 L7 G/ F! j, I8 x7 n sql statement: ALTER DATABASE DATAFILE 6 ONLINE
y; c! ?$ C W/ @ RMAN> REPORT SCHEMA;
7 z$ h1 t }. z, n! P# A# {/ G$ j& K3 | Report of database schema
5 y Y7 T: F+ m+ i. C- N4 y List of Permanent Datafiles
# X# U- ^5 \8 S8 |, x5 @/ m- H ===========================
9 i Y" S* [& l) o! p' X File Size(MB) Tablespace RB segs Datafile Name, J- I- O- K- r' g
---- -------- -------------------- ------- ------------------------+ t! m! W1 [: h3 ~) Z5 f/ B1 S
1 480 SYSTEM *** +DGROUP1/toasm/datafile/system.258.683428337
8 G% f( o' a8 r$ a3 u 2 25 UNDOTBS1 *** +DGROUP1/toasm/datafile/undotbs1.260.683428483
% n) z7 p7 c" ?8 c1 N1 Z* c5 b 3 230 SYSAUX *** +DGROUP1/toasm/datafile/sysaux.259.683428421
8 c& Q4 u& o7 b) d. s1 R7 j0 e 4 5 USERS *** +DGROUP1/toasm/datafile/users.262.683428489
6 ~+ b) }, ^# n. w K) [+ b- @ 5 100 EXAMPLE *** +DGROUP1/toasm/datafile/example.261.6834284675 T$ D( V/ Z/ j) U! \
6 10 USERS *** +DGROUP1/toasm/datafile/users.265.683431079) K5 e. T. V: g& S; T& N
List of Temporary Files
% M6 f! L" e7 F, J; C* |: N' U =======================
& P! v" E# k8 o% E' l File Size(MB) Tablespace Maxsize(MB) Tempfile Name! V" f- ?& u* o+ {
---- -------- -------------------- ----------- --------------------
4 c9 q2 z1 Z7 E- Y: g. T 2 100 TEMP 32767 +DGROUP1/toasm/tempfile/temp.263.6834289090 x* G* L, s- Q4 K, q! _9 h
RMAN> |