Идентификатор GUID Oracle SYS не изменяется

у меня есть проект Oracle, который хорошо подходит для использования GUID в качестве ключа. Я нашел следующий фрагмент

SET SERVEROUTPUT ON
BEGIN
FOR indx IN 1 .. 5
LOOP
DBMS_OUTPUT.put_line ( SYS_GUID );
END LOOP;
END;
/

от http://feuerthoughts.blogspot.com/2006/02/watch-out-for-sequential-oracle-guids.html

когда я запускаю его против моей базы данных (я пробовал его на версиях 10g и Версии 11), я получаю вывод, как

64FE4083D6BA7CB4E0400F0A0E0A18B0
64FE4083D6BB7CB4E0400F0A0E0A18B0
64FE4083D6BC7CB4E0400F0A0E0A18B0
64FE4083D6BD7CB4E0400F0A0E0A18B0
64FE4083D6BE7CB4E0400F0A0E0A18B0

т. е. значение никогда не меняется! Есть ли что-то, что я должен сделать, чтобы настроить это на работу как ожидаемые?

Edit: я не очень наблюдателен - GUID меняются, но похоже, что я страдаю от последовательной проблемы GUID, о которой говорит ссылка выше.

2 ответов


ОК. Из описания:

SYS_GUID генерирует и возвращает глобальный уникальный идентификатор (необработанное значение) состоит из 16 байт. На большинстве платформы, сгенерированный идентификатор состоит из идентификатора узла, в идентификатор процесса или потока процесс или поток, вызывающий функция, и не повторяется значение (последовательность байтов) для этого процесса или нити.

из своего пример:

64FE4083D6BA7CB4E0400F0A0E0A18B0
64FE4083D6BB7CB4E0400F0A0E0A18B0
64FE4083D6BC7CB4E0400F0A0E0A18B0
64FE4083D6BD7CB4E0400F0A0E0A18B0
64FE4083D6BE7CB4E0400F0A0E0A18B0

никто ничего не говорил о распределении этих значений GUID. Они не должны повторяться, и так оно и есть. Если вы не получаете точно такой же результат каждый раз.


значение изменяется....

           *
64FE4083D6BA7CB4E0400F0A0E0A18B0
64FE4083D6BB7CB4E0400F0A0E0A18B0
64FE4083D6BC7CB4E0400F0A0E0A18B0
64FE4083D6BD7CB4E0400F0A0E0A18B0
64FE4083D6BE7CB4E0400F0A0E0A18B0
           *