Email: service@parnassusdata.com 7 x 24 online support!

오라클 최후의 복원 툴 DUL

오라클 최후의 복원 툴 DUL

  • DUL(Database Un-Loader)의 특징!

 

1)        최후의 recovery utility이다. 2) 공식 지원 utility가  아니다.

  • datafile이 있어야 만 한다.

Ex)tablespace drop후 backup이 없는 상태에서 아직 unix rm 명령어를 적용하여 removed되지 않은 상태에  유용함.

  • sql*loader의 *.ctl,*.dat형태의 file을 제공한다.
  • 일부 column에 제한이 있다.(long raw datatype)

 

 

  • .TEST SCENARIO

 

  • 먼저 dul directory를 만든다.

$ cd $ORACLE_HOME

$ mkdir dul

$ cd dul

$ mkdir bin

$ cd bin

$ mkdir common

이곳에 가면 v2,v3 두개의 directory가 나오는데 dul version별로 utility가 있으며 각 directory에는 os별로 압축file들이   있다.

 

V2로 가면 common과 각 os별 압축file이 존재하는데 common에는 dictv7.ddl(dul definition language)이 있다.이것을 download받아

$ORACLE_HOME/dul/bin/common에 저장한다.

 

각 os별 dul file을 download 받아 다음과 같이 압축을    푼다.

$ tar xvf dul4hp.tar.bin으로 uncompress시킨다.(hp-ux의 경우) 이 file을 $ORACLE_HOME/bin/common에 놓는다.)

 

  • dul을 만든다.

이 file은 db 가 기동시 처음 startup시 읽는    parameter file과

비슷한 역할을 하는 file로써 $ORACLE_HOME/dul/bin/common에 만들어 vi로 편집하며 각parameter의 지정value는 다음의 위치에 자세히   설명되어 있다.(또는 Oracle Technical Notes를  참조함.)

 

 

기존에 사용 했던 init.dul file을 copy해서 사용 하는 게 안젂하다.   (Test machine ukhp55.uk.oracle.com을 usupport/Dontw8로 접속하여

$ORACLE_HOME/dul/bin/common/init.dul을 참조한다.)

 

  • test data생성.

test machine에 접속하여 tablespace를 create하고 test  table을

create한후 test row를 insert한후 export를  받는다.

 

$ cd $ORACLE_HOME/dul/bin/common

$ exp userid/password file=expdat.dmp tables=(user.test)

$ imp userid/password file=expdat.dmp indexfile=test.sql …. (Export file로 부터 table script를  만든다.)

 

  • datafile offline drop and dul생성.

 

sqldba)alter database datafile ‘/oracle/dbs/test.dbf’ offline drop; sqldba)spool control.dul

sqldba)select * from v$dbfile; sqldba)spool off;

sqldba)drop tablespace test including contents; sqldba)exit

 

  • dul editting

vi로 control.dul을 열어 datafile name만 남기고 나머지는   삭제함.

 

  • /oracle1/V723/dbs/systV723.dbf
  • /oracle1/V723/dbs/rbsV723.dbf
  • /oracle1/V723/dbs/tempV723.dbf
  • /oracle1/V723/dbs/toolV723.dbf
  • /oracle1/V723/dbs/usrV723.dbf
  • /oracle1/V723/dbs/ebu_testV723.dbf
  • /oracle1/V723/dbs/pms770125.dbf
  • /oracle1/V723/dbs/fifiV723.dbf
  • /oracle1/V723/dbs/tar844526.dbf

 

  • dictionary 정보를 받는다.

 

$cd $ORACLE_HOME/bin/common

$dul dictv7.ddl

UnLoader: Release 2.2.0.2 – Very Restricted on Mon Mar 10 1997

Copyright (c) 1994/95 Oracle Corporation, The Netherlands. All rights reserved.

. unloading table OBJ$ 1960 rows unloaded
. unloading table TAB$ 299 rows unloaded
. unloading table COL$ 9371 rows unloaded
. unloading table USER$ 52 rows unloaded

 

  • table unload

droped tablespace의 object를 user또는 table단위로  unloading함.

$dul

DUL> unload user test1;

About to unload TEST1’s tables …

.  unloading  table                  TEST      100 rows unloaded DUL>quit;

$ ls

COL.ctl TAB.ctl USER.ctl dictv7.ddl
COL.dat TAB.dat USER.dat dul*
OBJ.ctl TEST1_TEST.ctl control.dul init.dul

OBJ.dat            TEST1_TEST.dat    dictv6.ddl

 

  • SQL*LOADER로 data loading

import로 만든 test.sql로 table을 생성후 sql*loader로   data load!

$ sqlplus  user/passwd @test

$   sqlldr    user/passwd control=TEST1_TEST.ctl data=TEST1_TEST.dat