7 x 24 在线支持!
오라클 최후의 복원 툴 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