Oracle中生成跨系统的唯一识别符UUID非常方便比生成序列还简单直接用sys_guid()就行例如select sys_guid() from dual会产生一个跟MAC地址、生成时间相关的一个32位16进制的随机数。直接认准SYS_GUID()——它是 Oracle 唯一原生、无需额外权限、跨版本稳定的全局唯一标识生成方式。SYS_GUID()是服务器端生成依赖 Oracle 实例的 MAC 地址 时间戳 进程 ID保证集群内唯一性能比序列 触发器高无锁争用适合高并发插入场景但注意它不保证单调递增不适合做主键索引会导致索引分裂除非你用反向键索引或换成IDENTITY列可能我们的uuid 做PK导致index 碎片多RAC 序列只在单实例内唯一跨 RAC 节点需要ORDER和缓存控制而SYS_GUID()天然支持 RAC每个节点生成的 RAW 值从物理源头就隔离。数据类型是 raw(16) 有32个字符。它的生成机制足以保证全球所有系统产生的海量guid重复可能性非常小。这在AIXM概念中非常重要。如果要让返回的uuid满足标准格式可利用如下函数实现create or replace FUNCTION GET_UUID RETURN VARCHAR ASguid VARCHAR2 (64);BEGINguid : lower(RAWTOHEX(sys_guid()));RETURN substr(guid,1,8)||-||substr(guid,9,4)||-||substr(guid,13,4)||-||substr(guid,17,4)||-||substr(guid,21,12);END GET_UUID;select get_uuid from dual;得到结果a8f662b8-6e7a-13fe-e040-970a437c6bd7