본문 바로가기
Database/Oracle

[ORACLE] ROWIDTOCHAR()로 ROWID를 문자형으로 변환하는 방법

by Papa Martino V 2025. 6. 7.
728x90

오라클 ROWIDTOCHAR()로 ROWID를 문자형으로 변환하는 방법
[Oracle] ROWIDTOCHAR

 

1. ROWID란 무엇인가?

Oracle에서 ROWID는 데이터베이스 내 특정 행(row)의 고유한 물리적 주소를 나타냅니다. 이는 테이블 내에서 행을 유일하게 식별할 수 있는 값이며, Oracle 내부적으로는 검색 성능을 높이기 위해 자주 사용됩니다. ROWID는 다음 네 가지 구성 요소로 이뤄집니다:

  • 데이터 오브젝트 번호
  • 데이터 파일 번호
  • 블록 번호
  • 행 번호

2. ROWIDTOCHAR 함수란?

ROWIDTOCHAR 함수는 ROWID 값을 CHAR 데이터 형식으로 변환하는 Oracle 내장 함수입니다. 이 함수는 ROWID 값을 문자열로 표현할 수 있게 하여, 로그 기록이나 디버깅, 외부 시스템 연동 시 유용하게 사용됩니다.

ROWIDTOCHAR(rowid)

입력값: ROWID
반환값: CHAR(18)

3. 기본 사용 예제

다음 예제는 ROWID 값을 CHAR 형식으로 변환하는 가장 기본적인 사용법입니다.

SELECT ROWID, ROWIDTOCHAR(ROWID) AS rowid_char, EMPLOYEE_NAME
FROM EMPLOYEES;

위 결과는 각 행의 물리적 주소(ROWID)와 그 주소를 문자형으로 변환한 결과를 함께 보여줍니다.

4. 실무 활용 예제

4-1. 중복 행 추적

중복 데이터 제거 시 특정 행을 고유하게 식별하기 위해 ROWIDTOCHAR를 사용할 수 있습니다.

SELECT ROWIDTOCHAR(ROWID) AS row_id, NAME, COUNT(*)
FROM CUSTOMERS
GROUP BY ROWIDTOCHAR(ROWID), NAME
HAVING COUNT(*) > 1;

4-2. 로그 저장 시 ROWID 기록

오류 발생 시 해당 데이터 행을 추적하기 위해 로그 테이블에 ROWIDTOCHAR 값을 저장하는 방식입니다.

INSERT INTO ERROR_LOG (ERROR_MESSAGE, ROW_IDENTIFIER)
SELECT '데이터 이상', ROWIDTOCHAR(ROWID)
FROM ORDERS
WHERE ORDER_STATUS = 'INVALID';

5. ROWIDTOCHAR vs CHARTOROWID

ROWIDTOCHAR와 반대 역할을 하는 함수가 CHARTOROWID입니다. 이 두 함수는 상호 변환이 가능하며, 외부 입력값을 내부 ROWID로 변환할 때 유용합니다.

-- 문자형 ROWID 값을 다시 ROWID로 변환
SELECT CHARTOROWID('AAARaWAAEAAAAFmAAR') FROM DUAL;
항목 ROWIDTOCHAR CHARTOROWID
기능 ROWID → CHAR CHAR → ROWID
사용 목적 로깅, 디버깅, 외부 전달 ROWID 기반 쿼리 작성
반환값 CHAR(18) ROWID

6. 주의사항

  • ROWIDTOCHAR로 변환한 값은 물리적 주소를 반영하므로, 데이터 이동이나 재구성 시 변할 수 있음.
  • ROWID는 인덱스가 아닌 물리적 위치 기반이므로, 데이터 변경이 잦은 테이블에서는 활용 주의.
  • ROWID는 테이블 간 JOIN 조건으로 사용하지 않는 것이 바람직함.

7. 결론

Oracle의 ROWIDTOCHAR 함수는 데이터베이스 행의 고유 식별을 문자형으로 처리하고자 할 때 매우 유용한 도구입니다. 디버깅, 로그 저장, 중복 처리 등 다양한 실무 시나리오에서 활용 가능하며, CHARTOROWID와 함께 사용하면 강력한 데이터 추적 시스템을 구축할 수 있습니다. 개발자는 이러한 시스템 함수의 개념과 특징을 정확히 이해하고, 실전에서 상황에 맞게 적용할 수 있어야 합니다.

출처

  • Oracle 공식 문서: https://docs.oracle.com/en/
  • Oracle Database SQL Language Reference (ROWID Functions)
  • 실무 경험 기반 예제 및 테스트 쿼리
728x90