Search Results for 'urowid'

1 POSTS

  1. 2012|06 Oracle - ROWID / UROWID 타입

Oracle - ROWID / UROWID 타입

Posted 06 2, 2012 17:06, Filed under: DataBase/Oracle


# ROWID / UROWID 타입


ROWID는 테이블에서 로우의 주소다(데이터베이스에서 로우를 유일하게 인식하기 위한 테이블 명과 함께 ROWID를 관리한다는 것을 10장에서 언급했다).
충분한 정보는 디스크에서 로우의 위치로 ROWID에서 인코드되고, 테이블 등을 가리키는 ROWID의 객체를 인식한다.
ROWID의 다른 형태인 UROWID는 유니버설 ROWID고, IOT와 고정된 ROWID가 없는 이 기종 데이터베이스에 게이트웨이를 거쳐 액세스하는 테이블 등과 같은 테이블에 사용된다.
UROWID는 로우의 기본 키 값으로 표현되고, 해당 객체에 따라 크기가 다양할 수 있다.

모든 테이블의 로우는 ROWID나 UROWID를 가지고 있다.
테이블에서 조회될 때 pseudo 컬럼(로우와 함께 실제로 저장되는 것은 아니고 로우에서 파생된 속성이다)으로 간주된다.
ROWID는 로우의 물리적인 위치에 기초하여 생성되지만, 로우와 함께 저장되는 것은 아니다.
UROWID는 로우의 기본 키에 기초하여 생성되며, UROWID는 별개의 컬럼으로 존재하는 것이 아니라 컬럼의 함수처럼 실제는 아니지만 로우와 함께 저장되는 형태다.

일반적으로 ROWID를 가진 로우(IOT 로우를 제외하고 오라클에서 로우의 가장 일반적인 타입이고, 모든 로우는 ROWID를 가진다)에 대해 ROWID는 변하지 않는다.
로우가 입력되면 주소로 ROWID를 부여하고, 다음과 같이 ROWID가 변경되는 작업을 제외하고는 모든 ROWID는(데이터베이스에서 물리적으로 삭제된) 로우가 지워질 때까지 유지된다.

    * 파티션 테이블에서 로우가 다른 파티션으로 이동하는 등 로우의 파티션 키를 수정할 경우

    * 특정 시점의 이전 상태로 데이터베이스 테이블을 재저장하기 위하여 FLASHBACK 테이블 명령어를 사용하는 경우

    * MOVE 작업이나 파티션의 분리나 통합과 같은 작업을 할 경우

    * 세그먼트 shrink 성능을 위한 ALTER TABLE SHRINK SPACE 명령어를 사용할 경우

ROWID 는 시간이 지남에 따라 변경될 수 있기 때문에(더는 불변이 아니므로), 데이터베이스 테이블 컬럼에 물리적으로 저장하는 것을 추천하지는 않는다.
데이터베이스의 데이터타입으로 ROWID를 사용하는 것은 나쁜 사례로 간주하고 피해야 한다.
대신 (변하지 않는) 로우의 기본 키를 사용해야 하고, 이 경우 데이터 무결성을 보장하기 위한 참조 무결성을 유지할 수 있다.
ROWID에 의해 자식 테이블로부터 부모 테이블로 참조 키를 생성할 수 없으므로, 참조 무결성을 위해 ROWID를 사용할 수 없다.
기본 키 제약조건을 사용해야 한다.

언제 ROWID 타입을 사용하는가?(로우의 물리주소를 가진) ROWID는 어떤 테이블의 특정 로우를 액세스하기 위한 가장 빠른 방법이기 때문에 사용자가 데이터를 조작하는 애플리케이션에서 유용하다.
데이터베이스에서 데이터를 읽고 사용자에게 결과를 출력하는 애플리케이션이 로우를 수정할 때 ROWID를 사용할 수 있다.
애플리케이션은 다른 필드나 체크섬(애플리케이션의 락킹에 대한 내용은 '동시성과 멀티버저닝'을 참고)과 조합하여 ROWID를 사용해야 한다.
이 방법은 (로우를 찾기 위해 다시 인덱스를 액세스하지 않는 등) 최소한의 작업으로 로우를 수정할 수 있고, 로우가 처음에 읽은 로우와 컬럼값이 변경됨 없이 같다는 것을 보증한다.
ROWID는 낙관적 락킹(optimistic locking, 옮긴이_로우를 수정할 때 로우의 다른 버전이 존재하면 오류를 발생하고, 존재하지 않으면 수정하는 방식)을 사용하는 애플리케이션에 유용하다.


출처 : 전문가를 위한 오라클 데이터베이스 아키텍처 - 토마스 카이트

※ 위 내용은, 여러 자료를 참고하거나 제가 주관적으로 정리한 것입니다.
   잘못된 정보나 보완이 필요한 부분을, 댓글 또는 메일로 보내주시면 많은 도움이 되겠습니다.
06 2, 2012 17:06 06 2, 2012 17:06


Trackback URL : http://develop.sunshiny.co.kr/trackback/790

Leave a comment


Recent Posts

  1. HDFS - Python Encoding 오류 처리
  2. HP - Vertica ROS Container 관련 오류...
  3. HDFS - Hive 실행시 System Time 오류
  4. HP - Vertica 사용자 쿼리 이력 테이블...
  5. Client에서 HDFS 환경의 데이터 처리시...

Recent Comments

  1. Generally I do not read post on bl... 레기읏룸 셔츠룸 차이. 레깅스룸 부엉이 01 24,
  2. Wonderful site. A lot of useful in... /427 01 23,
  3. 안녕하세요^^ 배그핵
  4. 안녕하세요^^ 도움이 되셨다니, 저... sunshiny
  5. 정말 큰 도움이 되었습니다.. 감사합... 사랑은

Recent Trackbacks

  1. cabo packages cabo packages %M
  2. airbnb host insurance airbnb host insurance %M
  3. beaches in cabo beaches in cabo %M
  4. joe’s dj service joe’s dj service %M
  5. short term rental property insurance short term rental property insurance %M

Calendar

«   01 2020   »
      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 30 31  

Bookmarks

  1. 위키피디아
  2. MysqlKorea
  3. 오라클 클럽
  4. API - Java
  5. Apache Hadoop API
  6. Apache Software Foundation
  7. HDFS 생태계 솔루션
  8. DNSBL - Spam Database Lookup
  9. Ready System
  10. Solaris Freeware
  11. Linux-Site
  12. 윈디하나의 솔라나라

Site Stats

TOTAL 2824852 HIT
TODAY 471 HIT
YESTERDAY 443 HIT