asmcmd
是 Oracle ASM(Automatic Storage Management)的一个命令行工具,用于直接管理和操作 ASM 实例和磁盘组。以下是一些常用的 asmcmd
命令及其使用方法的简要说明:
一、基本命令
1.1、启动 asmcmd
bash
[grid@racdb2:/home/grid]$asmcmd
ASMCMD>
-- 或者,如果您以特定用户身份运行(例如 `grid` 用户),可以使用:
su - grid
asmcmd
1.2 、查看当前路径
bash
-- 当前路径+
ASMCMD> pwd
+
-- 当前路径+DATA
ASMCMD> cd DATA
ASMCMD> pwd
+DATA
1.3、切换目录
bash
-- 切换目录到+DGDATA
ASMCMD> cd +DGDATA
-- 查看当前路径
ASMCMD> pwd
+DGDATA
在 ASM 中,根目录用 +
表示。例如,切换到某个磁盘组的根目录:
bash
cd +mydg
1.4、列出目录内容
bash
ls
-- 示例
[grid@racdb2:/home/grid]$asmcmd
ASMCMD> ls
RACDB/
racdbscan/
[grid@racdb2:/home/grid]$asmcmd ls
DATA/
DGDATA/
DGRECOVERY/
DGSYSTEM/
GRID2/
要列出详细信息(包括文件大小、权限等),可以使用:
bash
ls -ls
[grid@racdb2:/home/grid]$asmcmd
ASMCMD> ls -ls
Type Redund Striped Time Sys Block_Size Blocks Bytes Space Name
Y RACDB/
Y racdbscan/
-- 也可以不进入ASM命令模式下操作
[grid@racdb2:/home/grid]$asmcmd ls -ls
State Type Rebal Sector Logical_Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files Name
MOUNTED NORMAL N 512 512 4096 4194304 3072 1900 1024 438 0 Y DATA/
MOUNTED EXTERN N 512 512 4096 4194304 2048 432 0 432 0 N DGDATA/
MOUNTED EXTERN N 512 512 4096 4194304 4096 3916 0 3916 0 N DGRECOVERY/
MOUNTED EXTERN N 512 512 4096 4194304 8192 2836 0 2836 0 N DGSYSTEM/
MOUNTED NORMAL N 512 512 4096 4194304 3072 2472 1024 724 0 N GRID2/
二、磁盘组管理
2.1、列出所有磁盘组
bash
ASMCMD> lsdg
State Type Rebal Sector Logical_Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files Name
MOUNTED NORMAL N 512 512 4096 4194304 3072 1900 1024 438 0 Y DATA/
MOUNTED EXTERN N 512 512 4096 4194304 2048 432 0 432 0 N DGDATA/
MOUNTED EXTERN N 512 512 4096 4194304 4096 3916 0 3916 0 N DGRECOVERY/
MOUNTED EXTERN N 512 512 4096 4194304 8192 2836 0 2836 0 N DGSYSTEM/
MOUNTED NORMAL N 512 512 4096 4194304 3072 2472 1024 724 0 N GRID2/
2.2、列出磁盘组中的磁盘
bash
lsdsk -G <diskgroup_name>
例如:
bash
lsdsk -G mydg
2.3、查看特定磁盘(ASM Disk)的大小信息
要查看构成磁盘组的单个磁盘的大小,可以使用以下查询:
bash
SYS@racdb2> SELECT name, total_mb, free_mb, (total_mb - free_mb) used_mb FROM v$asm_diskgroup;
NAME TOTAL_MB FREE_MB USED_MB
------------------------------ ---------- ---------- ----------
DATA 3072 1900 1172
DGDATA 2048 432 1616
DGRECOVERY 4096 3916 180
DGSYSTEM 8192 2836 5356
GRID2 3072 2472 600
其中name是磁盘组的名称,total_mb表示磁盘组的总容量(以 MB 为单位),free_mb表示磁盘组的可用容量,used_mb是已使用的容量。通过这个查询,你可以清楚地了解每个磁盘组的存储使用情况。
2.4、挂载磁盘组
bash
mount <diskgroup_name>
例如:
bash
mount mydg
2.5、卸载磁盘组
bash
umount <diskgroup_name>
例如:
bash
umount mydg
三、文件管理
3.1 、显示文件占用的磁盘空间
bash
du <file_or_directory>
ASMCMD> pwd
+
ASMCMD> du
Used_MB Mirror_used_MB
6810 7012
例如:
bash
-- du +mydg/myfile.dbf
ASMCMD> du +DGDATA/RACDB/DATAFILE/testusertbs.261.1178133947
Used_MB Mirror_used_MB
0 0
3.2、删除文件
bash
rm <file>
例如:
bash
rm +mydg/myfile.dbf
3.3、创建别名
bash
mkalias <alias_name> FOR <file_name>
例如:
bash
mkalias myalias FOR +mydg/myfile.dbf
3.4、删除别名
bash
rmalias <alias_name>
例如:
bash
rmalias myalias
四、磁盘管理
虽然 asmcmd
不直接用于添加或删除物理磁盘(这通常通过操作系统级别的命令或 Oracle Enterprise Manager 完成),但您可以查看磁盘的状态和属性。
4.1、列出所有磁盘**
bash
ASMCMD> lsdsk
Path
/dev/sdb
/dev/sdc
/dev/sdd
/dev/sde
/dev/sdf
/dev/sdg
/dev/sdh
/dev/sdi
/dev/sdj
ASMCMD> exit
[grid@racdb2:/home/grid]$asmcmd lsdsk
Path
/dev/sdb
/dev/sdc
/dev/sdd
/dev/sde
/dev/sdf
/dev/sdg
/dev/sdh
/dev/sdi
/dev/sdj
4.2、查看磁盘组的属性
bash
lsattr -l -G <diskgroup_name>
例如:
bash
lsattr -l -G mydg
[grid@racdb2:/home/grid]$asmcmd
ASMCMD> lsattr -l -G DATA
Name Value
access_control.enabled FALSE
access_control.umask 066
appliance._partnering_type GENERIC
ate_conversion_done true
au_size 4194304
cell.smart_scan_capable FALSE
cell.sparse_dg allnonsparse
compatible.asm 19.0.0.0.0
compatible.rdbms 10.1.0.0.0
content.check FALSE
content.type data
content_hardcheck.enabled FALSE
disk_repair_time 12.0h
failgroup_repair_time 24.0h
idp.boundary auto
idp.type dynamic
logical_sector_size 512
phys_meta_replicated true
preferred_read.enabled FALSE
scrub_async_limit 1
scrub_metadata.enabled TRUE
sector_size 512
thin_provisioned FALSE
vam_migration_done true
[grid@racdb2:/home/grid]$asmcmd lsattr -l -G DATA
Name Value
access_control.enabled FALSE
access_control.umask 066
appliance._partnering_type GENERIC
ate_conversion_done true
au_size 4194304
cell.smart_scan_capable FALSE
cell.sparse_dg allnonsparse
compatible.asm 19.0.0.0.0
compatible.rdbms 10.1.0.0.0
content.check FALSE
content.type data
content_hardcheck.enabled FALSE
disk_repair_time 12.0h
failgroup_repair_time 24.0h
idp.boundary auto
idp.type dynamic
logical_sector_size 512
phys_meta_replicated true
preferred_read.enabled FALSE
scrub_async_limit 1
scrub_metadata.enabled TRUE
sector_size 512
thin_provisioned FALSE
vam_migration_done true
4.3、查看磁盘I/O信息,DATA为磁盘组名
bash
[grid@sgcracdb2 ~]$ asmcmd lsdsk --statistics -G DATA
Reads Write Read_Errs Write_Errs Read_time Write_Time Bytes_Read Bytes_Written Voting_File Path
1344966 134613 0 0 1205.274707 185.49928 6502797312 1910693888 Y /dev/sdb
96736 100339 0 0 100.346839 144.279242 1534566400 1666269184 Y /dev/sdc
81117 162253 0 0 79.850107 216.041288 1298251776 2194731008 Y /dev/sdd
或者简要显示读写,包括ASM磁盘列表
bash
[grid@sgcracdb2 ~]$ asmcmd iostat -G DATA
Group_Name Dsk_Name Reads Writes
DATA DATA_0000 6502797312 1910693888
DATA DATA_0001 1534566400 1666269184
DATA DATA_0002 1298251776 2194731008
4.4、查看特定磁盘(ASM Disk)的大小信息
要查看构成磁盘组的单个磁盘的大小,可以使用以下查询:
bash
SYS@racdb1> set linesize 300
SYS@racdb1> run
1 SELECT dg.name as diskgroup_name, d.name as disk_name, d.total_mb, d.free_mb, (d.total_mb - d.free_mb) used_mb
2 FROM v$asm_disk d
3* JOIN v$asm_diskgroup dg ON d.group_number = dg.group_number
DISKGROUP_NAME DISK_NAME TOTAL_MB FREE_MB USED_MB
------------------------------ ------------------------------ ---------- ---------- ----------
DGRECOVERY DGRECOVERY_0000 4096 3916 180
DGDATA DGDATA_0000 2048 432 1616
DGSYSTEM DGSYSTEM_0000 8192 2836 5356
GRID2 GRID2_0002 1024 824 200
GRID2 GRID2_0001 1024 824 200
GRID2 GRID2_0000 1024 824 200
DATA DATA_0002 1024 632 392
DATA DATA_0001 1024 628 396
DATA DATA_0000 1024 640 384
9 rows selected.
此处run命令,可以参考我的这个文章
五、其他命令
5.1、显示当前 ASM 客户端
bash
lsct
5.2、显示 ASM 操作
bash
lsop
5.3、备份 ASM SPFILE
bash
spbackup
5.4、拷贝 ASM SPFILE
bash
spcopy
5.5、移动 ASM SPFILE
bash
spmove
5.6、设置 ASM SPFILE 的位置
bash
spset
六、注意事项
- 在使用
asmcmd
之前,请确保您有足够的权限来执行所需的命令。 - 谨慎使用删除命令,因为删除操作通常是不可逆的。
- 某些命令可能需要特定的磁盘组或文件名称作为参数,请确保您提供了正确的名称。
这些命令提供了对 Oracle ASM 的基本管理功能。如果您需要执行更复杂的任务,可能需要结合使用 SQL*Plus 和其他 Oracle 管理工具。