TECH
QUESTION
자주하는 질문답변 입니다.
Oracle
작성자 | 유건데이타 | 등록일 | 2015-05-07 |
제목 | (V7.2)EXPORT/IMPORT에 대한 Q&A | ||
---|---|---|---|
(V7.2)EXPORT/IMPORT에 대한 Q&A
============================== PURPOSE ------- 이 자료는 Oracle 7.2의 export/import에 관한 FAQ 자료이다. Explanation ----------- 1.Q) CATEXP.SQL은 어떤 스크립트 화일인가? A) Export는 데이타베이스 내의 모든 오브젝트들에 대해 SQL 문장들을 generation해주는 역할을 한다. 이를 위해, Export는 데이타 딕셔너리를 조회하 여 각 오브젝트에 관한 모든 정보를 얻어야 한다. 많은 정보들은 여러 개의 데이 타 딕셔너리 테이블에 흩어져 있기 때문에, export는 필요한 정보들을 얻기 위해 CATEXP.SQL 안에 있는 뷰 definition을 사용한다. CATEXP.SQL 에는 각 타입의 오브젝트에 대해 적어도 하나의 뷰가 존재한다. (예를 들어, EXU7TBS는 모든 테이블스페이스를 가지고 있으며, EXU7ROL은 모든 롤들을 가진다. ) 참고로, 이 화일은 Release 7.1 이전에는 EXPVEW.SQL이라는 이름으로 제공되었 다. 2. Q) Export를 수행하던 중, ORA-942가 발생하였다. 해결 방법은? A) ORA-942는 테이블이나 뷰가 존재하지 않는다는 전형적인 에러 메시지이다. 이것은 아마도 CATEXP.SQL을 실행시키지 않아서 Export 뷰를 인스톨하지 않았다 는 메시지일 것이다. 만약, CATEXP.SQL을 실행을 했는데, 이 에러가 발생했다면 그것은 적용되지 않는 버젼을 사용했을 가능성이 가장 크다. 맞는 버젼인지 다시 확인해 보아야 한다. 3. Q) Import를 하기 위해서 CATEXP.SQL을 실행해야 하는가? A) YES. Import는 Export와 몇 개의 뷰를 공유하며, 이러한 뷰들은 CATEXP.SQL 을 실행시킴으로써 로드된다. 이러한 뷰들은 같은 뷰이기 때문에, 별도의 CATIMP.SQL과 같은 화일은 존재하지 않는다. Oracle 7 Release 7.2의 경우에는 공통적인 뷰들은 CATEXP.SQL 스크립트의 윗 부분에 옮겨 놓았기 때문에 Import만을 수행할 때에는 import와 관련되지 않 은 뷰는 제외하고 스크립트 일부만을 수행시켜주면 된다. 4. Q) CATEXP.SQL 을 실행하기 전에 CATALOG.SQL도 실행해야 하는가? A) NO. CATEXP.SQL은 CATALOG.SQL에서 불려지기 때문에 CATEXP.SQL에는 CATALOG.SQL 내에 정의된 뷰에 의존하는 뷰는 없다. CATEXP.SQL에서 만들어지는 뷰들은 SYS를 owner로 가지기 때문에, SYS 유저로만 실행시킬 수 있다. 5. Q) CATEXP.SQL에서 정의되는 뷰들의 owner는 누구인가? A) SYS 유저이다. 스크립트의 윗 부분을 보면 알 수 있다. 6. Q) Export/Import 실행 화일들을 찾을 수가 없다. 해결 방법은? A) 실행 화일의 이름은 exp와 imp이다. 만약, 존재하지 않는다면, manual하게 만들어야 한다. 이 화일들은 Oracle 실행 화일들과 같은 디렉토리에 존재한다. 사용하는 환경이 유닉스 환경이라면, $ORACLE_HOME/bin 디렉토리 내에 존재해야 한다. 7. Q) Export와 Import와 관련된 일반적인 compatibility 원칙은? A) Export와 Import는 client utility이기 때문에, 데이타베이스 버젼과 다를 수 있다. 데이타베이스 버젼과 Export 버젼을 고려하여 4가지 가능성을 생각하기로 한다. 데이타베이스 버젼(또는 Export 버젼)을 X, Y라 하고, Y > X라 가정한다. 1> Base Compatibility 데이타베이스 X로부터 Export 버젼 X를 사용하여 export하고, 데이타베이스 X로 Import 버젼 X를 사용하여 import할 수 있다. 2> Upward Compatibility 데이타베이스 X로부터 Export 버젼 X를 사용하여 export하고, 데이타베이스 Y로 Import 버젼 Y를 사용하여 import할 수 있다. 3> Downward Compatibility 데이타베이스 Y로부터 Export 버젼 Y를 사용하여 export하고, 데이타베이스 X로 Import 버젼 X를 사용하여 import할 수 있다. 4> Cross Compatibility 데이타베이스 Y로부터 export하기 위해 SQL*Net과 같은 접속을 통해 Export 버젼 X를 사용하고, Import할 때 X나 Y버젼을 사용하여 import할 수 있다. Upward Compatibility는 항상 가능한 반면, Downward Compatibility는 많은 작업이 필요하다. Cross Compatibility는 export 코드와 synchronize되지 않을 수 있기 때문에 더 어려운 작업이다. 예를 들어, 데이타베이스 X로부터 export 버젼 Y를 사용하여 export하였는데, 새로운 버젼에는 이전에 데이타베이스에서 돌린 CATEXP.SQL이 생성하지 않았던 새로운 뷰나 컬럼들이 존재할 수 있다. 이 때의 해결방법은 새로운 뷰의 생성을 위해 export 버젼과 일치하는 스크립 트를 수행하여 현재 사용 중인 export usage 환경을 맞추어 주는 것이다. 새로운 스크립트를 돌려주더라도, 이전의 export 버젼에서 사용하던 뷰나 컬럼 들은 중복이 되어도 삭제되지 않는다. 8. Q) Cross Compatibility가 중요한 이유는? A) Cross Compatibility는 다른 Oracle 버젼을 갖는 여러 다른 machine들이 존재하는 환경에서 데이타를 다루어야 하기 때문에 중요한 내용이다. 데이타베이스 관리자는 하나의 시스템에서 모든 export를 하기를 원할 것이다. 문제는 Export 버젼은 각각의 데이타베이스 버젼에 대하여 다를 수 있다는 것 이다. 9. Q) 최신 export 버젼을 사용하여 생성한 화일을 import할 때, 최신 release 의 new feature를 사용할 경우 어떤 현상이 발생할 수 있는가? A) 이 경우는 downward compatibility의 예이다. New feature는 이전 release 에 의해서 사용될 수 없기 때문에, warning이나 에러가 발생할 수 있다. export는 계속 진행될 것이고, 남아 있는 export 화일들을 처리하려고 할 것이다. 마지막에는 결국, 예상했던 대로 warning과 함께 끝날 것이다. 10. Q) Downward Compatibility가 실패로 끝나는 경우의 예? A) Oracle 7.2에는 hash cluster를 만들 때, 자신만의 hash 함수를 명시할 수 있도록 'hash cluster expressions' 라는 옵션이 있다. 이 옵션은 Release 7.1과 7.0에서는 지원되지 않는다. 그 결과, Release 7.2 hash cluster에 대한 CREATE CLUSTER 명령을 실행하면 이 옵션을 가지고 수행될 경우, Release 7.0과 7.1에서는 실패할 것이다. 단, 이 옵션을 사용하지 않고, Release 7.2에서 생성된 클러스터들은 Release 7.0과 7.1에서는 성공적으로 import될 것이다. 또 다른 예를 하나 든다면, Release 7.1에 추가된 job queue이다. Release 7.0으로 import할 때, job queue를 만들기 위해 실행한 DDL 명령문은 수행이 되 지 않을 것이다. 11. Q) Export를 수행하던 중, ORA-904 에러가 발생하였다. 해결 방법은? A) ORA-904는 일반적으로, 뷰 안에 컬럼이 빠졌다는 에러이다. 이것은 현재 사용 중인 export의 버젼이 CATEXP.SQL의 버젼과 맞지 않아, 필요한 뷰가 존재 하지 않기 때문에 발생한 것이다. 이 문제를 해결하려면 현재 사용 중인 export의 버젼과 매치되는 CATEXP.SQL 을 수행시켜 주어야 한다. 12. Q) Export를 수행하던 중, EXP-37 에러가 발생하였다. Export 뷰가 데이타 베이스 버젼과 일치하지 않는다는 메시지였다. 해결 방법은? A) 데이타베이스에 존재하는 뷰가 export 뷰 버젼보다 이전 버젼이라는 점에서 Cross-compatibility 문제이다. 해결방법은 export 뷰의 버젼과 매치되는 뷰를 인스톨하는 것이다. 이 compatibility 메시지는 ORA-904 에러를 피하기 위해 Release 7.1에 추가되었다. 13. Q) Oracle 7 DB의 내용들을 Oracle 6 DB로 가져오는 방법은? A) Oracle 7 데이타베이스를 export 버젼 6로 export한다. 이 때, export 버젼 6는 나중에 import 버젼 6를 사용하여 버젼 6 데이타베이스로 import될 수 있는 export 화일을 생성한다. Export 버젼 7으로 export하여 버젼 6로 import하는 것은 불가능하다. 왜냐하면, Oracle 6와 7은 화일 format이 다르고, 새로 변경된 format은 Import 버젼 6를 지원하지 않기 때문이다. 14. Q) Export 버젼 6는 trigger, procedure, role과 같은 Oracle 7 New feature들을 export할 수 있는가? A) NO. Export 버젼 6는 버젼 6가 지원하는 오브젝트만 export할 수 있다. 15. Q) CATEXP6.SQL은 어떤 스크립트 화일인가? A) 이 화일에는 export 버젼 6가 지원하는 뷰들을 생성하는 스크립트가 있다. 만약, Oracle 7 데이타베이스에서 이 스크립트를 실행한다면, Export 버젼 6 는 Oracle 7 데이타베이스를 버젼 6로 인식할 것이다. Release 7.1 이전에는 이 화일이 EXPVEW6.SQL이라는 이름으로 사용되었다. 16. Q) Oracle 버젼 5로 export하여 버젼 7에서 import할 수 있는가? A) YES. Oracle 5에서 생성한 'CREATE SPACE DEFINITION'과 같은 문장은 똑같은 형태의 Oracle 7 문장으로 변환된다. 17. Q) Export 화일 format은 release에 따라서 다른가? A) YES. 모든 export화일은 대부분의 release에 따라 다르다. 특히, Downward Compatibility의 경우에는 각각의 release 사이에 호환이 되게 하기 위해 많은 작업이 필요하다. 만약, format이 바뀌더라도, 여전히 이전 화일들을 사용할 수 있다. 18. Q) Export 화일이란 무엇인가? A) Export 화일에는 테이블 데이타와 관련된 SQL 문장과 그 밖의 DDL 문장에 따르는 헤더가 존재한다. 19. Q) Export 화일은 readable하거나 portable한가? A) 비록 이 화일은 binary 화일이지만, 유닉스 시스템 상에서 emacs와 같은 에디터로 불러오거나, od를 사용하여 가져와 보면, 사용자가 읽을 수 있는 형태로 번역될 수 있다. 이 화일은 모든 데이타가 다양한 플랫폼에 걸쳐 이식성이 있는 오라클 DB format으로 export될 수 있기 때문에 portable하다고 할 수 있다. 20. Q) Export 화일이 전송되는 방식은? A) Export 화일은 binary 화일이므로, binary 모드로 FTP를 사용하거나 기타 프로토콜을 사용하여 전송될 수 있다. 21. Q) Export 화일은 수정될 수 있는가? A) NO. Export 화일을 수정하는 것은 불가능하다. 22. Q) 일반적으로, export와 import는 Positional 또는 Keyword method를 이용하여 수행된다. 이 두 가지 방법의 차이점은? A) Keyword를 사용하는 방법은 사용자로 하여금 명령 라인 상에서 각각의 keyword에 대한 특정 값을 명시할 수 있도록 해 준다. 예제는 다음과 같다. > exp userid=system/manager recordlength=1024 buffer=102400 file=test.dmp 위 예제에서 각 keyword(USERID, RECORDLENGTH, BUFFER, FILE)는 사용자가 지정한 특정값을 가지고 명시되어 있다. 아래에 제시하는 예제는 위의 예제와 동일하다. > exp system/manager 1024 102400 test.dmp 이 방법은 Positional method이다. 만약, keyword가 명시되지 않는다면, 파라미터 값은 export가 예상하는 순서대로 인식된다. 예를 들어, BUFFER는 세번 째 파라미터이고, 그 값은 102400이다. 그러나, 이 방법은 순서를 따로 기억해야 하는 단점이 있으므로, 가능하면 keyword method를 사용하는 것이 낫다. 23. Q) Export나 Import를 수행하는 중에 프로세스가 hanging 상태가 되었을 때 얼마 만큼의 row가 처리되었는지 확인하는 방법은? A) FEEDBACK 옵션을 사용하면 된다. 이 옵션은 디스플레이 상에 dot를 사용하여 프로세스 진행 상황을 보여준다. 스크린 상의 각 dot는 사용자가 명시한 row의 갯수와 일치한다. 이 옵션은 Release 7.2부터 적용된다. 24. Q) 사용자모드 export의 종류와 방법은? A) 사용자모드 export 방법에는 두 가지가 있다. 1> 사용자 자신이 만든 오브젝트를 export하는 방법이다. exp scott/tiger file=myexp.dmp 2> system/manager로 접속한 DBA가 여러 유저가 사용하고 있는 화일을 export 하는 방법이다. exp system/manager owner=scott raghu file=user.dmp 위의 두 가지 방법은 user level export로 분류된다. 두번 째 방법의 경우 에는 import를 할 때에도 DBA 권한이 있어야 한다. FROMUSER/TOUSER 옵션은 두번 째 방법을 사용하여 생성된 export 화일을 import할 때에 사용될 수 있다. Example ------- none Reference Documents ------------------- 출처 : Technical Bulletin (Korean) |
Comment | |||
---|---|---|---|
등록된 코멘트가 없습니다. |