문제발생 : 기존 사용자(아래 예에서는 BASEMAP)의 테이블스페이스, 데이터 파일, 사용자를 오라클에서 물리적으로 삭제 후 새로 BASEMAP 사용자를 생성한 상태에서 ArcCatalog 등에서 피쳐클래스 및 테이블을 업로드 할 경우 이미 테이블이 있다고 나오는 경우
: 이는 SDE 시스템 테이블에 기존 데이터 정보가 남아 있어서 발생하는 오류이며 아래 순서대로 관련 테이블의 BASEMAP 사용자 관련 테이블 정보를 삭제하면 됨
1. SQL/PLUS 등에서 SDE 유저로 접속
2. SDE 시스템 테이블은 지오데이터베이스로 관리하는 GDB_*로 시작하는 테이블 및 SDE 관리테이블(LAYERS, SPATIAL_REFERENCES 등)이 있습니다.
: 수정 대상 테이블은 다음과 같으며 하나씩 확인해 가면서 수정하세요.
: UI 도구를 사용한다면 되도록이면 수정 전에 테이블에 어떤 내용이 들어 있는지 확인해 보세요. ArcSDE 테이블 이해에 도움이 됩니다.
: 만약 버저닝을 사용하면 더 많은 테이블이 관련되어 있습니다. 자세한 내용은 다음을 참고하세요
3. 테이블 수정 내용
▣ LAYERS
: SELECT COUNT(*) FROM LAYERS WHERE OWNER = 'BASEMAP';
: 갯수가 0개 이상이면 다음을 수행
: DELETE FROM LAYERS WHERE OWNER = 'BASEMAP';
▣ GEOMETRY_COLUMNS
: SELECT COUNT(*) FROM GEOMETRY_COLUMNS WHERE F_TABLE_SCHEMA = 'BASEMAP';
: 갯수가 0개 이상이면 다음을 수행
: DELETE FROM GEOMETRY_COLUMNS WHERE F_TABLE_SCHEMA = 'BASEMAP';
▣ COLUMN_REGISTRY
: SELECT COUNT(*) FROM COLUMN_REGISTRY WHERE OWNER = 'BASEMAP';
: 갯수가 0개 이상이면 다음을 수행
: DELETE FROM COLUMN_REGISTRY WHERE OWNER = 'BASEMAP';
▣ TABLE_REGISTRY
: SELECT COUNT(*) FROM TABLE_REGISTRY WHERE OWNER = 'BASEMAP';
: 갯수가 0개 이상이면 다음을 수행
: DELETE FROM TABLE_REGISTRY WHERE OWNER = 'BASEMAP';
▣ GDB_USERMETADATA
: SELECT COUNT(*) FROM GDB_USERMETADATA WHERE OWNER = 'BASEMAP';
: 갯수가 0개 이상이면 다음을 수행
: DELETE FROM GDB_USERMETADATA WHERE OWNER = 'BASEMAP';
▣ GDB_FIELDINFO
: SELECT COUNT(*) FROM GDB_FIELDINFO WHERE CLASSID IN (SELECT ID FROM GDB_OBJECTCLASSES WHERE OWNER = 'BASEMAP');
: 갯수가 0개 이상이면 다음을 수행
: DELETE FROM GDB_FIELDINFO WHERE CLASSID IN (SELECT ID FROM GDB_OBJECTCLASSES WHERE OWNER = 'BASEMAP');
▣ GDB_FEATUREDATASET
: SELECT COUNT(*) FROM GDB_FEATUREDATASET WHERE OWNER = 'BASEMAP';
: 갯수가 0개 이상이면 다음을 수행
: DELETE FROM GDB_FEATUREDATASET WHERE OWNER = 'BASEMAP';
▣ GDB_FEATURECLASSES
: SELECT COUNT(*) FROM GDB_FEATURECLASSES WHERE OBJECTCLASSID IN (SELECT ID FROM GDB_OBJECTCLASSES WHERE OWNER = 'BASEMAP');
: 갯수가 0개 이상이면 다음을 수행
: DELETE FROM GDB_FEATURECLASSES WHERE OBJECTCLASSID IN (SELECT ID FROM GDB_OBJECTCLASSES WHERE OWNER = 'BASEMAP');
▣ GDB_OBJECTCLASSES
: 마지막 수정해야 할 테이블입니다.
: SELECT COUNT(*) FROM GDB_OBJECTCLASSES WHERE OWNER = 'BASEMAP';
: 갯수가 0개 이상이면 다음을 수행
: DELETE FROM GDB_OBJECTCLASSES WHERE OWNER = 'BASEMAP';
마지막으로 커밋 하시면 됩니다.