반응형
Oracle ROWID를 변경하는 원인은 무엇입니까?
Oracle의 FAIK ROWID는 적절한 데이터 파일에 있는 레코드의 물리적 위치를 나타냅니다.어떤 경우에 레코드의 ROWID가 변경될 수 있습니까?
제가 아는 것은 레코드를 다른 파티션으로 "이동"하는 파티션 테이블의 UPDATE입니다.
또 다른 사례가 있습니까?대부분의 DB는 Oracle 10입니다.
말씀하신 대로 다음과 같이 행이 Disk에서 물리적으로 이동될 때마다 발생합니다.
- 테이블 내보내기/가져오기
- 다른 테이블 XXXXX 이동
- 대체 테이블 XXXXX 축소 공간
- 플래시백 테이블 XXXX
- 파티션 분할
- 새 파티션으로 이동하도록 값 업데이트
- 두 개의 파티션 결합
가 인덱스 구성 테이블에 있는 경우 기본 키를 업데이트하면 다른 ROWID도 제공됩니다.
+1 @WW
부차적으로:
인덱스 구성 테이블의 ROWID는 테이블 업데이트 중(트리 노드가 분할되거나 결합될 때) 행의 물리적 위치가 변경될 수 있으므로 UROWID라고 합니다.
인덱싱을 계속 가능하게 하기 위해 UROWID에는 "논리 ID"(기본 키)와 "물리적 ID일 가능성이 높은"(일반 ROWID)가 포함되며, 이 중 후자가 만료될 수 있습니다.
WW에 +1이 더 있지만, 조금 더 추가하자면...
ROWID를 나중에 사용할 수 있도록 저장할 수 있는지 여부가 문제가 될 경우 "하지 마십시오.
다음 작업을 수행할 ROWID 집합을 수집하는 등 트랜잭션 내에서 ROWID를 사용해도 괜찮지만, ROWID를 테이블에 저장해서는 안 되며 나중에 사용해도 괜찮을 것이라고 가정하면 됩니다.
언급URL : https://stackoverflow.com/questions/435109/what-can-cause-an-oracle-rowid-to-change
반응형
'programing' 카테고리의 다른 글
SQL(Oracle)을 사용하여 문자열의 크기를 계산하는 방법은 무엇입니까? (0) | 2023.06.26 |
---|---|
문자열에서 고유 식별자로 변환할 때 변환 실패 - 두 개의 GUID (0) | 2023.06.26 |
CTE를 사용하여 표 업데이트 (0) | 2023.06.26 |
오라클 DB에 마지막으로 삽입된 레코드의 ID 가져오기 (0) | 2023.06.26 |
꺼내기 요청으로 병합을 취소하시겠습니까? (0) | 2023.06.26 |