테이블의 테이블스페이스정보가 서로다르게 구성이 되어있는데 자문을 구합니다. 0 3 4,131

by 손님 마이그레이션 export import [2009.08.17 15:08:11]


오늘도 이렇게 자문을 올립니다.

기존에 있던 테이블스페이스에서 export를 했습니다. 그리고 새로운 테이블스페이스를 만들어

기존에 있던 놈을 imp를 했습니다.

그런데..새롭게 생성된 테이블 스페이스의 테이블들이 서로 다른 테이블 스페이스를 가지고 있네요.

예를 들어서 A라는 테이블은 예전 테이블 스페이스를 B라는 테이블은 새롭게 생성된 테이블 스페이스 정보를 저장하는 겁니다.

사이트를 유지하는데는 별문제가 없긴 합니다만. 이렇게 저장이 되면 A라는 테이블은 예전 테이블스페이스의 물리적 경로에 저장되고 B라는 테이블 스페이스는 새롭게 생성된 테이블 스페이스에 저장될것 같은데요..

혹시나 해서 다른 테이블 스페이스를 만들어서 imp를 했는데도 각 테이블의 테이블스페이스 정보가 제각각 입니다.

이거 뭐가 잘못된건지 알수가 없네요.

제생각에는 imp한후에 이 테이블들의 테이블스페이스 정보를 새로운걸로 변경을 다 해줘야 할듯 한데..

오라클이 첨인지라 감이 안오네요...자문좀 드립니다.

참고로 각 테이블 스페이스는 user가 다 다릅니다. 

exp userid=test/test file=’./test.dmp’

imp userid=newtest/test file=’./test.dmp’

by 11 [2009.08.17 15:31:06]
userid = test/test@?? 해보셨는지요?

by TeLl2 [2009.08.17 16:21:15]
exp/imp 시에는 테이블 스페이스를 이동시키실 수 없습니다.
exp된 스크립티에 기존의 테이블 스페이스가 명시 되어 있기 때문에
기존과 똑같은 테이블 스페이스에 생성되게 됩니다.
테이블 스페이스를 이동시키기 위해서는
10g 이상이시면 expdp/impdp를 이용하셔서 테이블 스페이스를 이동시키실수 있으며,
9i이전 버젼이시라면
1. 인덱스 생성 스크립트 추출
imp id/password file=exp.dmp indexfile=obj.sql
2. 추출된 스크립트에서
1) REM 주석 일괄 제거
2) 테이블 스페이스명 일괄 변경
3) 사용자명 해당 사용자명으로 일괄 변경
4) FOREIGN KEY 지정 스크립트 삭제
3. 위에서 만든 스크립트로 테이블 생성
... 000 ROWS 의 에러는 무시하고 그냥 생성
4. 데이터 exp
5. exp 받은 파일 imp
imp id/password fromuser=id touser=id file=exp.dmp ignore=y
위와 같은 방식으로 작업 하셔야 합니다.

by 타락천사 [2009.08.18 16:21:39]
꽁수로..
기존의 TBS 를 만드세요
그리구 import 하는 유저에 대한 원래 TBS 에 대한 quota 를 0 으로 설정 하세요
그리구 원하는 TBS 를 IMPORT 하는 유저에 DEFAULT TABLESPACE 로
지정하시면 원하는 TBS 로 옮겨집니다.
사이즈가 그리 그지 않다면, 그리고 DISK 여유가 있다면
원래 TBS 로 일딴 IMPORT 하시구
ALTER TABLE .. MOVE
ALTER INDEX .. REBUILD 하시는게 더 편할듯 싶어요
상황 상황에 따라 달라지겠지만.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입