With sufficient privileges, it is possible to have Oracle generate compliant UUIDs.
1. By defining a SQL function
create or replace function random_uuid return RAW is
v_uuid RAW(16);
begin
v_uuid := sys.dbms_crypto.randombytes(16);
return (utl_raw.overlay(utl_raw.bit_or(utl_raw.bit_and(utl_raw.substr(v_uuid, 7, 1), '0F'), '40'), v_uuid, 7));
end random_uuid;
The function requires dbms_crypto and utl_raw. Both require an execute grant.
grant execute on sys.dbms_crypto to uuid_user;
2. Using a Java procedure
To create a Java procedure for creating a compliant UUID, see https://stackoverflow.com/a/13951615.