DBAtlas · 데이터베이스 운영 아틀라스

ORA-01466: unable to read data - table definition has changed (데이터를 읽을 수 없음 - 테이블 정의 변경됨)

Oracle

의미

과거 시점의 데이터를 읽는 쿼리(Flashback Query, AS OF 또는 consistent read)가 조회한 과거 시점과 현재 사이에 테이블 정의(DDL)가 변경되어 실패했다. Oracle은 현재 정의로 그 시점의 데이터를 안전하게 읽을 수 없다.

원인

Flashback/AS OF 쿼리가 대상으로 하는 타임스탬프 이후에 테이블에 DDL(컬럼 추가/삭제, 타입 변경)이 적용되었다. 또한 클라이언트와 서버 간 시계 차이나 아주 최근(몇 초 전) 과거에 대한 쿼리도 SCN/시간 해상도 때문에 이 오류를 발생시킬 수 있다.

해결 방법

테이블의 DDL 변경 이전 시간/SCN을 대상으로 flashback 쿼리를 실행한다. 가능하면 타임스탬프 대신 정확한 SCN을 사용한다(AS OF SCN). 아주 최근 과거를 조회할 때는 몇 초 더 이전으로 간다. 영구적인 이력 접근이 필요하면 DDL 대신 버전 관리 또는 아카이브 테이블 설계를 고려한다.

DBAtlas에서 열기 →

같은 데이터베이스의 다른 항목