https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=kimsajang&logNo=220507834231
ROWID 정의
●ROWID는 ORACLE에서 INDEX를 생성하기 위하여 내부적으로 사용하는 PSEUDOCOLUMN 으로 사용자가 임으로 변경하거나 삭제 할 수 없다.
●단지 테이블의 한 컬럼처럼 참조만 가능하며 데이터베이스에 값이 저장되지 않는다.
●ROWID는 물리적인 ADDRESS를 가지고 있기 때문에 SINGLE BLOCK ACCESS로 찾고자 하는 ROW를 찾을 수 있어 물리적인 ROWID는 주어진 테이블에 가장 빠른 ACCESS 방법을 제공하게 된다.
●ROW ID를 분석해보면
AAAArs /AAD / AAAAUa / AAA
---------- ------ ------------- ---------
1 2 3 4
- 6자리 : 데이터 오브젝트 번호 (data object number)
- 오브젝트의 고유 번호
- 3자리 : 상대적 파일번호 (relative file number)
- 각각의 데이터파일에 할당되는 번호
- 6자리 : 블록 번호 (block number)
- 데이터 블록의 위치를 알려주는 번호
- 3자리 : 블록 내의 행 번호 (row number)
- 오라클 블록의 헤더에 저장된 row directory slot의 위치를 알려주는 고유 번호
ROWID를 이용하는 방법
ROWID는 ROW의 물리적인 주소값이다.
이값은 오라클 데이터베이스내에서 유일한 값이다.
즉, PK가없는 테이블에서 중복된값이 있더라도 ROWID는
서로 다르기때문에 중복된값을 걸러낼때 사용할 수 있다.
ROWID 형변환 FUNCTION
ROWIDTOCHAR(ROWID)
--ROWID를 문자형으로 바꿔준다.
CHARTOROWID(ROWID)
--문자형을 ROWID로 바꿔준다.
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=salinokl&logNo=220209561274
DBMS_ROWID는 SQL문장이나 PSM을 수행하여 얻은 ROWID에 담긴 정보를 보거나 임의의 ROWID를 만들기 위한 패키지이다.
DBMS_ROWID.ROWID_OBJECT(FB_ROWID)
--ROWID의 OBJECT_NUMBER를 반환한다
DBMS_ROWID.ROWID_TYPE(FB_ROWID)
--
DBMS_ROWID.ROWID_ROW_NUMBER(FB_ROWID)
DBMS_ROWID.ROWID_TO_ABSOLUTE_FNO(FB_ROWID)