programing

Oracle ROWID를 변경하는 원인은 무엇입니까?

skycolor 2023. 6. 26. 21:12
반응형

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

반응형