http://database.sarang.net/?inc=read&aid=19951&criteria=oracle&subcrit=&id=&limit=20&keyword=sam&page=5
aix oracle의 데이터를 linux oracle로 옮기려 합니다.
양쪽다 9i이고요.
데이터의 양이 적지 않기에 exp/imp를 사용하는것 이외의 방법을 찾고 있습니다.
이곳 게시판과 otn에서 찾아보니.. 파일시스템이 다르기에 가능하지 않다라는 말도 있고.. dbf, ctl, init<sid>.ora, redolog파일등을 옮겨 처리하면 가능하다고 하는 얘기도 있던데요.. 가능한건지요..
전 단순하게 dbf파일 옮겨서 control파일을 생성하려 했습니다만...
A-01503: CREATE CONTROLFILE failed
ORA-01565: error in identifying file
'/data/oracle/ora02/oradata/ORCL92/temp_data.dbf'
ORA-27047: unable to read the header block of file
Linux Error: 2: No such file or directory
이런 에러가 나는 군요.
여기서 보면 헤더를 읽을수 없다고 나오는데 이게 파일시스템의 차이로 안되는건지. 잘못된 방법으로 해서 그런지도 잘 모르겠군요. 아시는 분은 답글 남겨 주십시요. 만일 가능하다면... 어떻게 해야 하는지요.
===============================================================================
OS가 다르기 때문에 불가능합니다. 즉, 호환이 되지가 않습니다.
10g부터는 이기종간에도 Tablespace등을 전송가능한 기능이 추가되었지만 9i까지는 불가능하다고 보시면 됩니다. 오로지 운영체제 독립적인 exp/imp를 통해서 진행하시는 수 밖에는 없습니다. 이 방법은 데이타량이 많다면 사용하실 수 없는 방법입니다. imp는 insert 를 그대로 재현하는 과정이라고 보시면 되고... 그러므로 수행시간이 exp의 최소 2배에서 2.5배 이상 걸립니다.
imp 속도를 빠르게 하는 노하우는 많이 있습니다.
첫째, 색인은 빼고 imp를 한 후 색인은 imp 작업이 끝난 후 Sort_area_size를 크게 할당하고 nologging parallel 등을 활용하여 빠르게 생성하는게 더욱 효율적이다.
그리고 imp에 buffer 사이즈를 지정해줄 수 있는데 이걸 크게 잡아주는 것이 좋습니다.
또한 매건 commit하는게 아니라 테이블 단위로 commit이 가능하도록 옵션을 셋팅하고 그 정도의 트랜잭션을 커버할 수 있을 정도로 Rollback size를 미리 크게 잡아주는게 중요하겠죠.
Redo log가 너무 작으면 Log switch가 잦아져서 checkpoint가 자주 발생하므로 이거 역시 imp 발목을 잡는 주범입니다.
imp시 Redo log file size는 수백메가 정도로 잡아서 checkpoint가 자주 발생하지 않도록 하는 것도 하나의 방법입니다.
물론 사전에 Physical Design을 잘해두어야 합니다.
그 말은 Disk Layout 를 구성할 때 RAID-5 처럼 쓰기 오버헤드가 있는 곳에 Redo log file이나 Archive log, rollback, temp 등을 두어서는 안됩니다. (어떤 벤더들은 RAID-5의 쓰기 오버헤드를 자체 솔루션으로 극복하기 위해 수정한 경우도 있으니 이 경우 체크바랍니다.)
--------------------------------------------------------------
위의 방법으로도 IMP로 만족할 만한 속도를 얻기가 힘드시다면...
SAM파일로 text형식으로 떨군 다음에... SQL*LOADER를 통해서 로딩하는 것이 가장 빠른 방법중에 하납니다. direct 로딩이 가능하기 때문이죠.
aix oracle의 데이터를 linux oracle로 옮기려 합니다.
양쪽다 9i이고요.
데이터의 양이 적지 않기에 exp/imp를 사용하는것 이외의 방법을 찾고 있습니다.
이곳 게시판과 otn에서 찾아보니.. 파일시스템이 다르기에 가능하지 않다라는 말도 있고.. dbf, ctl, init<sid>.ora, redolog파일등을 옮겨 처리하면 가능하다고 하는 얘기도 있던데요.. 가능한건지요..
전 단순하게 dbf파일 옮겨서 control파일을 생성하려 했습니다만...
A-01503: CREATE CONTROLFILE failed
ORA-01565: error in identifying file
'/data/oracle/ora02/oradata/ORCL92/temp_data.dbf'
ORA-27047: unable to read the header block of file
Linux Error: 2: No such file or directory
이런 에러가 나는 군요.
여기서 보면 헤더를 읽을수 없다고 나오는데 이게 파일시스템의 차이로 안되는건지. 잘못된 방법으로 해서 그런지도 잘 모르겠군요. 아시는 분은 답글 남겨 주십시요. 만일 가능하다면... 어떻게 해야 하는지요.
===============================================================================
OS가 다르기 때문에 불가능합니다. 즉, 호환이 되지가 않습니다.
10g부터는 이기종간에도 Tablespace등을 전송가능한 기능이 추가되었지만 9i까지는 불가능하다고 보시면 됩니다. 오로지 운영체제 독립적인 exp/imp를 통해서 진행하시는 수 밖에는 없습니다. 이 방법은 데이타량이 많다면 사용하실 수 없는 방법입니다. imp는 insert 를 그대로 재현하는 과정이라고 보시면 되고... 그러므로 수행시간이 exp의 최소 2배에서 2.5배 이상 걸립니다.
imp 속도를 빠르게 하는 노하우는 많이 있습니다.
첫째, 색인은 빼고 imp를 한 후 색인은 imp 작업이 끝난 후 Sort_area_size를 크게 할당하고 nologging parallel 등을 활용하여 빠르게 생성하는게 더욱 효율적이다.
그리고 imp에 buffer 사이즈를 지정해줄 수 있는데 이걸 크게 잡아주는 것이 좋습니다.
또한 매건 commit하는게 아니라 테이블 단위로 commit이 가능하도록 옵션을 셋팅하고 그 정도의 트랜잭션을 커버할 수 있을 정도로 Rollback size를 미리 크게 잡아주는게 중요하겠죠.
Redo log가 너무 작으면 Log switch가 잦아져서 checkpoint가 자주 발생하므로 이거 역시 imp 발목을 잡는 주범입니다.
imp시 Redo log file size는 수백메가 정도로 잡아서 checkpoint가 자주 발생하지 않도록 하는 것도 하나의 방법입니다.
물론 사전에 Physical Design을 잘해두어야 합니다.
그 말은 Disk Layout 를 구성할 때 RAID-5 처럼 쓰기 오버헤드가 있는 곳에 Redo log file이나 Archive log, rollback, temp 등을 두어서는 안됩니다. (어떤 벤더들은 RAID-5의 쓰기 오버헤드를 자체 솔루션으로 극복하기 위해 수정한 경우도 있으니 이 경우 체크바랍니다.)
--------------------------------------------------------------
위의 방법으로도 IMP로 만족할 만한 속도를 얻기가 힘드시다면...
SAM파일로 text형식으로 떨군 다음에... SQL*LOADER를 통해서 로딩하는 것이 가장 빠른 방법중에 하납니다. direct 로딩이 가능하기 때문이죠.
'DB' 카테고리의 다른 글
DB Import (0) | 2008.05.30 |
---|---|
DB Export (0) | 2008.05.30 |
[QUERY] 중복데이터 제거 (0) | 2006.07.21 |
[대용량데이터베이스] 조인의 최적화 (0) | 2006.07.20 |
SQL로 들어가서 XML로 나온다 (0) | 2006.07.16 |