프린트 하기

OS 환경 : Oracle Linux 8.4 (64bit)

 

DB 환경 : Oracle Database 23.9.0.25.07 ai for Oracle Cloud and Engineered Systems

 

방법 : 오라클 23ai 신기능 uuid 생성 함수

오라클 23ai 23.9 버전부터 sql에서 uuid를 생성할 수 있는 uuid함수가 새롭게 도입되었음

이 함수는 rfc 9562 규격에 따라 버전 4, 변형(variant) 1 uuid를 생성하며, 예측 불가능하고 무작위적인 128비트 고유 식별자(uuid)를 생성함
uuid()는 테이블의 기본 키, 트랜잭션 id, 세션리스 트랜잭션 등 다양한 용도로 사용할 수 있고
기존의 sys_guid()가 항상 예측 가능한 값을 생성했던 것과 달리 보안성과 무작위성이 강화된 식별자를 제공함
함수는 기본적으로 raw(16) 값을 반환하며, 가독성을 위해 하이픈이 없는 32자리 16진수 문자열 형태로 출력됨
uuid(), uuid(0), uuid(4)는 모두 같은 동작을 하며, 다른 버전 번호를 입력할 경우 오류가 발생함

 

 

사용 예제
1. uuid 사용 테스트
2. 여러번 조회
3. uuid() 여러번 사용
4. uuid(), uuid(0), uuid(4) 각각 확인

 

 

사용 예제
1. uuid 사용 테스트

1
2
3
4
5
SQL> select uuid();
 
UUID()
--------------------------------
1F4D280209564F2CBF3D783FAFF2DD07

정상적으로 사용됨

 

 

2. uuid 여러번 조회

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
SQL> select uuid();
 
UUID()
--------------------------------
1F4D280209564F2CBF3D783FAFF2DD07
 
SQL> /
 
UUID()
--------------------------------
249118D12C0D4F4ABF64416E455B91E9
 
SQL> /
 
UUID()
--------------------------------
DA38E935F7284FFEBF0ACE0CC0362AD5
 
SQL> /
 
UUID()
--------------------------------
1D40FC2DF97F4FF9BFDC44C9C6D72691
 
SQL> /
 
UUID()
--------------------------------
4F860E24051E4F81BFF4BB6614DA603B

매번 다른 값이 출력됨

 

 

3. uuid를 한 쿼리에 여러번 사용

1
2
3
4
5
SQL> select uuid(), uuid(), uuid();
 
UUID()                           UUID()                           UUID()
-------------------------------- -------------------------------- --------------------------------
F49AF63894BE4F6CBF111D6CA3B464B7 C8F01A52BD3C4F84BF06E51F3FA95540 B20A7FE0B3FD4F17BF840A49366389C4

모두 다른 값이 출력됨

 

 

4. uuid(), uuid(0), uuid(4) 각각 확인

1
2
3
4
5
SQL> select uuid(), uuid(0), uuid(4);
 
UUID()                           UUID(0)                          UUID(4)
-------------------------------- -------------------------------- --------------------------------
723F21F191DA4F1ABF8924B22A33E780 297EE71AB3F44FB3BF088855E3F9CF9C 1D40D2479E924F83BF1A81F470C2FA9B

uuid(), uuid(0), uuid(4) 모두 동일한 기능을 함

 

 

결론 :
oracle 23ai의 uuid() 함수는 보안성과 무작위성이 뛰어난 128비트 고유 식별자를 sql에서 손쉽게 생성할 수 있도록 도와주는 실용적인 기능임
기존의 sys_guid()는 예측 가능한 값이었지만, uuid()는 rfc 9562 기반으로 만들어져 진짜 랜덤 uuid(버전 4, 변형 1)를 생성함
이 함수는 기본 키 생성, 트랜잭션 식별자, 세션리스 트랜잭션 등 다양한 상황에서 활용 가능하며
uuid(), uuid(0), uuid(4) 모두 동일하게 동작함

 

 

참조 : 

https://apex.oracle.com/pls/apex/features/r/dbfeatures/features?feature_id=2072
https://docs.oracle.com/en/database/oracle/oracle-database/23/nfcoa/ru_23_9.html#GUID-102576-1
https://docs.oracle.com/en/database/oracle/oracle-database/23/sqlrf/uuid.html#SQLRF-GUID-2A0ECCC2-3DA1-442F-AC9D-A6FE643F381D
https://tuna.tistory.com/213