WHEN NO_DATA_FOUND THEN

Oracle Databaseについてつらつらと。。。

順序を使い果たすにはどのくらいの時間がかかる?

Oracle Databaseにて一意な数値を採番する機能として、順序というものがあります。この順序ですが、実は最大桁数は28桁です。NUMBER型の精度が38桁なのに比べると、10桁も短いです。このことから、順序を大量に採番するとその順序が尽きてしまうのでは、という心配をなさる方もいらっしゃること思います。実際にそういった相談をされたこともあります。ということで、実際に28桁の順序がどの程度もつのか計算してみました。例えば毎秒100億回という、現実的にありえなさそうな回数採番し続けたら何年で順序が尽きるでしょうか?

SQL> select (power(10,28)-1)/(power(10,10)*60*60*24*365) from dual;

(POWER(10,28)-1)/(POWER(10,10)*60*60*24*365)
--------------------------------------------
                              31,709,791,984

ということで、なんと約317億年も耐えられます。うるう年を考慮していないのはご愛嬌ということで。もっとも、うるう年を考慮しても、順序が尽きるという心配をする必要はなさそうです。。。