u/config.txt
odu/control.txt
odu/data/
odu/odu
解压后,我门只需要对asmdisk.txt这个配置文件进行下设置,只需要设置磁盘号和路径,我们可以通过kfod di=all得到,如下;
[oracle@rac01odu]$ kfod di=all
--------------------------------------------------------------------------------
Disk Size Path User Group
================================================================================
1: 8189 Mb/dev/asm-disk1 oracle dba
2: 8189 Mb/dev/asm-disk2 oracle dba
3: 509 Mb/dev/asm-disk3 oracle dba
KFOD-00313:No ASM instances available. CSS group services were successfully initilized bykgxgncin
KFOD-00311:Error scanning device /dev/asm
ORA-15059:invalid device type for ASM disk
Linux-x86_64Error: 16384: Unknown system error
Additionalinformation: 42
[oracle@rac01odu]$ more asmdisk.txt
#disk_no disk_path group_name meta_block_size ausize disk_size header_offset
1 /dev/asm-disk1
2 /dev/asm-disk2
3 /dev/asm-disk3
进入odu的asmcmd工具,具体操作如下:
[oracle@rac01odu]$ ./odu
OracleData Unloader trial version 4.1.3
Copyright(c) 2008,2009,2010,2011 XiongJun. All rights reserved.
grp#dsk# bsize ausize disksize diskname groupname path
-------- ----- ------ -------- --------------- -----------------------------------------------------------
1 0 4096 1024K 8189 DATA_0000 DATA /dev/asm-disk1
1 1 4096 1024K 8189 DATA_0001 DATA /dev/asm-disk2
2 0 4096 1024K 509 ARCH_0000 ARCH /dev/asm-disk3
loadasm disk file 'asmdisk.txt' successful
loadingdefault control file ......
ts# fn rfn bsize blocks bf offset filename
-------- ---- ----- -------- -- ------ --------------------------------------------
loadcontrol file 'control.txt' successful
loadingdictionary data......done
loadingscanned data......done
ODU> asmcmd
Enteringasmcmd module.
ASMCMD>ls
Currentdirectory:
DiskGroup
------------------------------------
DATA
ARCH
至此,我们就进入了ODU的ASMCMD工具中,这个工具的命令数据库自带的有所细微的区别,给演示下我们如何利用它查询数据文件的文件号:
ASMCMD>cd+data
ASMCMD>cd ORCL
Currentdirectory: +DATA/ORCL
ASMCMD>ls
Currentdirectory: +DATA/ORCL/DATAFILE
Name
----------------------------------------
SYSTEM.256.883666707
SYSAUX.257.883666707
UNDOTBS1.258.883666707
USERS.259.883666707
UNDOTBS2.267.883667019
ZLTOOLSTBS.273.884105179
zltoolstbs.dbf =>+DATA.273.884105179
ZL9BASEITEM.274.884105185
zl9baseitem.dbf =>+DATA.274.884105185
ZL9PATIENT.275.884105191
zl9patient.dbf =>+DATA.275.884105191
ZL9EXPENSE.276.884105193
zl9expense.dbf =>+DATA.276.884105193
ZL9MEDLST.277.884105197
zl9medlst.dbf =>+DATA.277.884105197
ZL9DUEREC.278.884105203
zl9duerec.dbf =>+DATA.278.884105203
ZL9CISREC.279.884105207
zl9cisrec.dbf => +DATA.279.884105207
ASM实例中所有文件,都有自己的文件号,如上面每个文件的后缀中的数字,后续我们就根据文件号,利用amdu抽取出数据文件。
3. 利用amdu抽取数据文件
这里我们尝试控制文件文件抽取出来,让数据库能够启动到mount状态
ASMCMD>cdcontrolfile
Currentdirectory: +DATA/ORCL/CONTROLFILE
ASMCMD>ls
Currentdirectory: +DATA/ORCL/CONTROLFILE
Name
----------------------------------------
Current.261.883666805
Current.260.883666805
这里我们就看到了,控制文件的文件号是260和261,接下来通过amdu进行数据抽取
[oracle@rac01~]$ amdu -diskstring '/dev/asm*' -extract data.260
amdu_2015_07_23_16_15_50/
[oracle@rac01~]$ amdu -diskstring '/dev/asm*' -extract data.261
amdu_2015_07_23_16_16_01/
可以看到,生成了2个文件夹,进入其中的一个
[oracle@rac01~]$ cd amdu_2015_07_23_16_15_50/
[oracle@rac01amdu_2015_07_23_