我想知道Oracle的NOORDER语句(enabled by default)的CREATE SEQUENCE是否可以用作安全的随机数生成器? 我的意思是,这是真的随机还是可以预测?
我无法找到有关此规范的文档。
提前致谢。 柠檬
答案 0 :(得分:2)
没有。如果您想要随机数,请使用dbms_crypto
package。
指定NOORDER
的序列仍将在非RAC系统中提供顺序的有序数字。但是,如果使用RAC,则每个节点将具有单独的值缓存,并且一个节点将生成同时大于其他节点的值。例如,如果您有一个3节点集群和一个缓存为20的序列,则节点1将缓存值1-20,节点2将缓存值21-40,而节点3将缓存值41-60。如果节点3上的会话请求nextval
,则它将获得41.然后,如果节点1上的另一个会话请求nextval
,则它将获得值1.节点3上的下一个请求将获得42,节点1上的下一个请求将获得2,节点2上的下一个请求将获得21.当然,一旦每个节点耗尽其缓存,它将缓存接下来的20个值。如果一个节点持续获得更多nextval
个请求,则它可以比其他节点上的nextval
更进一步。