문제

Oracle의 Afaik Rowid는 적절한 데이터 파일로 레코드의 물리적 위치를 나타냅니다. 어떤 경우에 레코드의 Rowid가 변경 될 수 있습니까?

나에게 알려진 사람은 레코드를 다른 파티션으로 "이동"하는 파티션 된 테이블에 대한 업데이트입니다.

다른 사례가 있습니까? 우리의 DBS의 대부분은 Oracle 10입니다.

도움이 되었습니까?

해결책

당신이 말했듯이, 행이 디스크에서 물리적으로 움직일 때마다 발생합니다.

  • 표의 수출/수입
  • ALTER TABLE XXXX 이동
  • ALTER TABLE XXXX 수축 공간
  • 플래시백 테이블 XXXX
  • 파티션 분할
  • 새로운 파티션으로 이동하도록 값을 업데이트
  • 두 파티션을 결합합니다

인덱스 구성 테이블에 있으면 기본 키에 대한 업데이트는 다른 Rowid도 제공합니다.

다른 팁

+1 @WW

여담으로:

Rowid for Index Organized Tables는 다르고 (Urowid라고도합니다) 행의 물리적 위치는 테이블로 업데이트 중 (트리 노드가 분할되거나 결합 될 때) 변경 될 수 있기 때문입니다.

인덱싱을 여전히 가능하게하기 위해 Urowid에는 "논리 ID"(기본 키)와 "가능한 물리적 ID"(일반 rowid)가 포함되며, 후자는 만료 될 수 있습니다.

또 다른 +1에서 WW, 그러나 약간의 추가를 추가하기 위해 ...

운전 문제가 나중에 사용하기 위해 Rowids를 저장할 수 있는지 여부라면 "하지 마십시오"라고 말할 것입니다.

트랜잭션 내에서 Rowids를 사용하는 것이 좋습니다. 예를 들어 후속 작업을 수행 할로드 세트를 수집하는 것과 같이 절대 rowids를 테이블에 보관하고 나중에 사용해도 괜찮을 것이라고 가정하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top