7. 使用asmcmd命令
asmcmd實(shí)用程序是Oracle 10g版本2的新增特性,它是一個(gè)命令行實(shí)用工具,提供了一種簡(jiǎn)單的方法,可以使用類似于Linux外殼命令(例如ls和mkdir)的命令集,瀏覽和維護(hù)ASM磁盤(pán)組中的對(duì)象。ASM實(shí)例所維護(hù)對(duì)象的分層性質(zhì)適合于采用類似Linux文件系統(tǒng)中瀏覽和維護(hù)文件所使用的命令集。
在使用asmcmd之前,必須確保將環(huán)境變量ORACLE_BASE、ORACLE_HOME和ORACLE_SID設(shè)置為指向ASM實(shí)例。對(duì)于本章所使用的ASM實(shí)例,這些環(huán)境變量的設(shè)置如下所示:
ORACLE_BASE=/u01/app/oracle ORACLE_HOME=/u01/app/oracle/product/11.1.0/db_1 ORACLE_SID=+ASM |
此外,必須以dba組中的用戶登錄到操作系統(tǒng),因?yàn)閍smcmd實(shí)用程序使用SYSDBA權(quán)限連接到數(shù)據(jù)庫(kù)。操作系統(tǒng)用戶通常是oracle,但也可以是dba組中的任何其他用戶。
可以采用asmcmd command格式,一次使用一條asmcmd命令,或者也可以在Linux外殼提示符下輸入asmcmd來(lái)交互式地啟動(dòng)asmcmd。為獲得可用命令列表,可以在ASMCMD>提示符下輸入help,這會(huì)得到更多的詳細(xì)信息。表4-7列出了asmcmd命令及其簡(jiǎn)單說(shuō)明,注意有些asmcmd命令只在Oracle Database 11g中可用。
表4-7 asmcmd命令匯總
asmcmd命令 |
是否只在11g中可用 |
說(shuō) 明 |
cd |
|
改變目錄到指定目錄 |
cp |
是 |
在ASM磁盤(pán)組之間復(fù)制文件,既可以在相同實(shí)例中復(fù)制,也可以在遠(yuǎn)程實(shí)例中復(fù)制 |
du |
|
循環(huán)顯示當(dāng)前目錄和所有子目錄的總體磁盤(pán)利用率 |
exit |
|
終止asmcmd,并返回到操作系統(tǒng)外殼提示符 |
find |
|
從指定目錄開(kāi)始查找名稱的所有匹配(也可以使用通配符) |
help |
|
列出asmcmd命令 |
ls |
|
列出當(dāng)前目錄的內(nèi)容 |
lsct |
|
列出當(dāng)前ASM客戶數(shù)據(jù)庫(kù)的有關(guān)信息 |
lsdg |
|
列出所有磁盤(pán)組及其屬性 |
lsdsk |
是 |
列出此ASM實(shí)例可見(jiàn)的所有磁盤(pán) |
md_backup |
是 |
為指定磁盤(pán)組創(chuàng)建元數(shù)據(jù)備份腳本 |
md_restore |
是 |
從備份恢復(fù)磁盤(pán)組 |
mkalias |
|
為系統(tǒng)生成的ASM文件名創(chuàng)建一個(gè)別名 |
mkdir |
|
創(chuàng)建一個(gè)ASM目錄 |
pwd |
|
顯示當(dāng)前的ASM目錄 |
remap |
是 |
修理磁盤(pán)上遭到破壞或損壞的一系列物理塊 |
rm |
|
刪除ASM文件或目錄 |
rmalias |
|
刪除一個(gè)ASM別名,但不刪除此別名的目標(biāo) |
當(dāng)啟動(dòng)asmcmd命令時(shí),從ASM實(shí)例的文件系統(tǒng)的根節(jié)點(diǎn)開(kāi)始。與Linux文件系統(tǒng)不同,根節(jié)點(diǎn)不是由前導(dǎo)正斜杠(/)來(lái)指明,而是由加號(hào)(+)來(lái)指明,但以下各級(jí)目錄則使用正斜杠。在此示例中,啟動(dòng)asmcmd命令,并查詢現(xiàn)有的磁盤(pán)組以及所有磁盤(pán)組中使用的總磁盤(pán)空間:
[oracle@dw ~]$ asmcmd ASMCMD> ls -l State Type Rebal Unbal Name MOUNTED NORMAL N N DATA/ MOUNTED HIGH N N DATA2/ MOUNTED NORMAL N N RECOV/ ASMCMD> du Used_MB Mirror_used_MB 2143 4399 ASMCMD> pwd + ASMCMD> |
與Linux外殼的ls命令一樣,如果想要得到此命令所檢索出來(lái)的對(duì)象的詳細(xì)信息,可以在ls命令后追加-l參數(shù)。ls命令顯示了本章所用的ASM實(shí)例中的3個(gè)磁盤(pán)組+DATA、+DATA2和+RECOV。
另外需要注意的是,du命令只顯示已用的磁盤(pán)空間以及跨鏡像磁盤(pán)組所用的總磁盤(pán)空間。想要獲得每個(gè)磁盤(pán)組中的空閑空間量,則需要使用lsdg命令。
此示例查找文件名中包含字符串user的所有文件:
ASMCMD> pwd + ASMCMD> find . user* +DATA/DW/DATAFILE/USERS.259.627432977 +DATA/DW/DATAFILE/USERS2.267.627782171 +DATA/purch/users.dbf +DATA2/DW/DATAFILE/USERS3.256.627786775 ASMCMD> ls -l +DATA/purch/users.dbf Type Redund Striped Time Sys Name N users.dbf => +DATA/DW/DATAFILE/USERS.259.627432977 ASMCMD> |
注意包含+DATA/purch/users.dbf的這一行:find命令查找所有ASM對(duì)象。在此例中,它查找一個(gè)別名以及與此模式相匹配的數(shù)據(jù)文件。
最后可以對(duì)外部文件系統(tǒng)甚至其他ASM實(shí)例進(jìn)行文件備份。在此示例中,使用cp命令將數(shù)據(jù)庫(kù)的SPFILE備份到主機(jī)文件系統(tǒng)的/tmp目錄中:
ASMCMD> pwd +data/DW ASMCMD> ls CONTROLFILE/ DATAFILE/ ONLINELOG/ PARAMETERFILE/ TEMPFILE/ spfiledw.ora ASMCMD> cp spfiledw.ora /tmp/BACKUPspfiledw.ora source +data/DW/spfiledw.ora target /tmp/BACKUPspfiledw.ora copying file(s)... file, /tmp/BACKUPspfiledw.ora, copy committed. ASMCMD> exit [oracle@dw ~]$ ls -l /tmp/BACKUP* -rw-r----- 1 oracle oinstall 2560 Jul 13 09:47 /tmp/BACKUPspfiledw.ora [oracle@dw ~]$ |
此示例也展示了數(shù)據(jù)庫(kù)dw的所有數(shù)據(jù)庫(kù)文件是如何存儲(chǔ)在ASM文件系統(tǒng)中的。看起來(lái)這些數(shù)據(jù)庫(kù)文件好像存儲(chǔ)在傳統(tǒng)的主機(jī)文件系統(tǒng)中,但實(shí)際上是由ASM進(jìn)行管理的,其所提供的內(nèi)置性能和冗余特性(為用于Oracle Database 11g已進(jìn)行了優(yōu)化)使DBA可以更輕松地管理數(shù)據(jù)文件。 |