본문 바로가기
Database

[ Oracle] 오라클 CHARTOROWID() 함수 완벽 가이드: 문자형 ROWID를 ROWID로 변환

by 코드개미 2025. 6. 6.

오라클 CHARTOROWID() 함수 완벽 가이드: 문자형 ROWID를 ROWID로 변환
[Oracle] CHARTOROWID

1. CHARTOROWID 함수란?

CHARTOROWID는 Oracle Database에서 문자열(CHAR)로 표현된 ROWID 값을 내부 식별자 형태의 ROWID로 변환해 주는 함수입니다. 주로 문자열로 저장된 ROWID 값을 쿼리에서 사용할 수 있도록 내부 표현 형식으로 변환할 때 사용됩니다.

2. 기본 문법

CHARTOROWID(char) RETURN ROWID

여기서 char는 유효한 ROWID 형식의 문자열이어야 하며, 결과는 Oracle의 ROWID 형식으로 반환됩니다.

3. 주요 사용 예제

예제 1: 문자열 ROWID를 ROWID로 변환

SELECT CHARTOROWID('AAAPr9AAEAAAAFnAAA') AS actual_rowid FROM dual;

예제 2: 테이블에 저장된 ROWID 문자열 활용

CREATE TABLE test_rowid (
  id NUMBER,
  rowid_str VARCHAR2(20)
);

INSERT INTO test_rowid VALUES (1, 'AAAPr9AAEAAAAFnAAA');

SELECT * FROM employees
WHERE rowid = CHARTOROWID(
  (SELECT rowid_str FROM test_rowid WHERE id = 1)
);

이 예제는 다른 테이블에 저장된 ROWID 문자열을 사용하여 정확한 레코드를 조회하는 데 유용합니다.

4. 활용 시 주의사항

  • 입력 문자열은 정확한 ROWID 포맷이어야 하며, 유효하지 않은 문자열은 ORA-01410 오류를 발생시킵니다.
  • 실제 테이블에서 ROWID를 사용할 경우 DML 작업 중 레코드 이동이 발생하지 않는지 확인이 필요합니다.

5. ROWID와 CHARTOROWID의 차이점

항목 ROWID CHARTOROWID
데이터 형식 ROWID (내부 포맷) CHAR → ROWID로 변환
용도 레코드 직접 접근 문자열로 된 ROWID를 실제 ROWID로 변환
함수 여부 내장된 PSEUDO 컬럼 함수 형태
사용 가능 시점 쿼리, 로그 추적 등 외부 저장된 ROWID 값을 사용할 때

6. 실무에서의 활용 사례

  • 로그 테이블에 저장된 ROWID 문자열을 원래 레코드 조회에 사용
  • 트리거 또는 백업 시스템에서 원본 레코드를 추적
  • 데이터 복원, 변경 추적 시스템에서 필수 도구

7. 함께 사용하면 좋은 함수

  • ROWIDTOCHAR: ROWID 값을 문자열로 변환
  • DBMS_ROWID: ROWID 분석 및 파싱 도구
  • SUBSTR: ROWID 문자열의 일부를 조건 비교로 활용 가능

8. 결론

Oracle에서 CHARTOROWID 함수는 문자열 형태로 저장된 ROWID를 실제 데이터 접근용으로 변환하는 강력한 도구입니다. 특히 데이터 감사, 백업 시스템, 트리거 기반 추적 등 고급 DBA나 개발 환경에서 자주 활용되며, ROWID 기반의 데이터 관리와 관련된 문제 해결에 큰 도움을 줍니다.