오라클 데이터를 제외한 모든 DB구조 (스키마) 백업/복구 (복제) 질문 0 0 5,992

by guest [Oracle 백업/복구] oracle dump backup restore db database schema [2019.06.21 09:36:30]


원격 DB를 백업 받으려고 하는데요...

exp 아이디/비번@아이피/서비스네임 옵션1 옵션2 ... 이런 식으로 하니까 

800여개 중에 400여개만 가져오더라구요. 

찾아보니까 사용하지 않은 테이블은 가져오지 않는다던데 (오라클 11g 부터는 설정값이 다른 게 있다는데)

세그먼트를 잡아주면 가져온다고 하길래 

ALTER SYSTEM SET DEFERRED_SEGMENT_CREATION=FALSE SCOPE=BOTH; 

구문을 실행했습니다.

 

아니면

SELECT 'ALTER TABLE ' || TNAME || ' MOVE ;' FROM TAB;

이걸 조회해서 돌리라는데 인덱스가 틀어질 수 있으니 

SELECT 'ALTER INDEX ' || INDEX_NAME || ' REBUILD ;' FROM USER_INDEXES; 

로 리빌드를 해야된다네요? 근데 수많은 테이블을 고치는 건 개인DB도 아닌데 겁나서 못하겠어요.

 

또는

SELECT 'ALTER TABLE '||table_name||' ALLOCATE EXTENT;' FROM user_tables WHERE segment_created = 'NO';

로 돌려보라는데 레코드값이 없습니다.

 

exp 아이디/비번@아이피/서비스네임 파일경로 옵션1 옵션2 ... 구문을

expdp 아이디/비번@아이피/서비스네임 파일경로 옵션1 옵션2 ... 으로 하는데 옵션에 content=metadata_only 이 부분을 추가하라는데 

이렇게 돌리니까 덤프파일이 원격 서버에 저장이 됩니다. ftp로 어찌됐든 가져와서 impdp 시켜보니까 이건 복구 메시지도 이상하고(한글 메시지가 많음) 금방 끝나버립니다.

db를 열어서 결과를 보니 테이블은 하나도 없고 메시지만 완료되었대요. 

 

SELECT * FROM user_tables WHERE initial_extent IS NULL; 이걸로 조회하면 임시테이블 하나 나오고 SEGMENT_CREATED 항목은 YES 입니다.

임시테이블이라서 ALTER TABLE table_name ALLOCATE EXTENT; 는 안 돼요.

 

스크립트 만들어서 돌리려고 하면 내용이 많은지라 프로그램이 뻗어버리거나 생성된 스크립트 자체도 구문 오류가 많아서 안 되겠더라구요. 

SQL SERVER(이하 MSSQL) 은 툴에서 간단하게 백업 후 복원이 가능한데 오라클은 툴에서 하면 더 뻗어버리거나 무한로딩이니까 더 안 되고 

어떻게 방법이 없을까요...? 구글링해봐도 답답한 건 매한가지네요.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입