• .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