用Oracle AMDU 抽取ASM磁碟組的資料檔案
amdu -diskstring '<disk string>' -extract '<diskgroup name>.<file number>'
資料檔案號 可以根據asm 執行個體 查詢 v$asm_file視圖得出
也可以查v$datafile,如果用了別名,可以用v$asm_alias;
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
+DATA/db1/datafile/system.256.794361477
+DATA/db1/datafile/sysaux.257.794361477
+DATA/db1/datafile/undotbs1.258.794361477
+DATA/db1/datafile/users.259.794361477 <(=== this files need to be extracted
+DATA/db1/datafile/example.261.794361601
+DATA/db1/datafile/testasm.263.817147851
+DATA/db1/datafile/dbfs_ts.264.822088469
比如我們要抽取users資料表空間下面對應的資料檔案
Full File name = "+DATA/db1/datafile/users.259.794361477"
File Number = "259"
Disk String = "/dev/Oracleasm/disks/*"
Diskgroup Name = "DATA"
Extracted File = DATA_259.f
amdu -diskstring '/dev/oracleasm/disks/*' -extract 'DATA.259'
在目前的目錄下會產生amdu_加日期格式的檔案夾
[grid@dbaasm ~]$ cd amdu_2013_08_31_00_17_17/
[grid@dbaasm amdu_2013_08_31_00_17_17]$ ls -l
total 2099228
-rw-r--r-- 1 grid oinstall 2147491840 Aug 31 00:18 DATA_259.f
-rw-r--r-- 1 grid oinstall 14514 Aug 31 00:18 report.txt
產生資料檔案的格式為磁碟組+資料檔案號,並且加尾碼名為點f,然後重新命名為對應資料表空間名字users.dbf即可
[grid@dbaasm amdu_2013_08_31_00_17_17]$ mv DATA_259.f users.dbf
[grid@dbaasm amdu_2013_08_31_00_17_17]$ ls -l
total 2099228
-rw-r--r-- 1 grid oinstall 14514 Aug 31 00:18 report.txt
-rw-r--r-- 1 grid oinstall 2147491840 Aug 31 00:18 users.dbf <(======
上個周末,因為儲存故障,asm磁碟不能正常載入,就用這種方法幫客戶恢複資料。
在CentOS 6.4下安裝Oracle 11gR2(x64)
Oracle 11gR2 在VMWare虛擬機器中安裝步驟
Debian 下 安裝 Oracle 11g XE R2
Oracle 11g從入門到精通 PDF+光碟片原始碼
RHEL6 ASM方式安裝Oracle 11g R2
Oracle 10g 手工建立ASM資料庫
Oracle 10g R2建立ASM執行個體Step By Step