asmcmd
是 Oracle ASM(Automatic Storage Management)的一个命令行工具,用于直接管理和操作 ASM 实例和磁盘组。以下是一些常用的 asmcmd
命令及其使用方法的简要说明:
一、基本命令
1.1、启动 asmcmd
[grid@racdb2:/home/grid]$asmcmd
ASMCMD>
-- 或者,如果您以特定用户身份运行(例如 `grid` 用户),可以使用:
su - grid
asmcmd
1.2 、查看当前路径
-- 当前路径+
ASMCMD> pwd
+
-- 当前路径+DATA
ASMCMD> cd DATA
ASMCMD> pwd
+DATA
1.3、切换目录
-- 切换目录到+DGDATA
ASMCMD> cd +DGDATA
-- 查看当前路径
ASMCMD> pwd
+DGDATA
在 ASM 中,根目录用 +
表示。例如,切换到某个磁盘组的根目录:
cd +mydg
1.4、列出目录内容
ls
-- 示例
[grid@racdb2:/home/grid]$asmcmd
ASMCMD> ls
RACDB/
racdbscan/
[grid@racdb2:/home/grid]$asmcmd ls
DATA/
DGDATA/
DGRECOVERY/
DGSYSTEM/
GRID2/
要列出详细信息(包括文件大小、权限等),可以使用:
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、列出所有磁盘组
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、列出磁盘组中的磁盘
lsdsk -G <diskgroup_name>
例如:
lsdsk -G mydg
2.3、查看特定磁盘(ASM Disk)的大小信息
要查看构成磁盘组的单个磁盘的大小,可以使用以下查询:
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、挂载磁盘组
mount <diskgroup_name>
例如:
mount mydg
2.5、卸载磁盘组
umount <diskgroup_name>
例如:
umount mydg
三、文件管理
3.1 、显示文件占用的磁盘空间
du <file_or_directory>
ASMCMD> pwd
+
ASMCMD> du
Used_MB Mirror_used_MB
6810 7012
例如:
-- du +mydg/myfile.dbf
ASMCMD> du +DGDATA/RACDB/DATAFILE/testusertbs.261.1178133947
Used_MB Mirror_used_MB
0 0
3.2、删除文件
rm <file>
例如:
rm +mydg/myfile.dbf
3.3、创建别名
mkalias <alias_name> FOR <file_name>
例如:
mkalias myalias FOR +mydg/myfile.dbf
3.4、删除别名
rmalias <alias_name>
例如:
rmalias myalias
四、磁盘管理
虽然 asmcmd
不直接用于添加或删除物理磁盘(这通常通过操作系统级别的命令或 Oracle Enterprise Manager 完成),但您可以查看磁盘的状态和属性。
4.1、列出所有磁盘**
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、查看磁盘组的属性
lsattr -l -G <diskgroup_name>
例如:
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为磁盘组名
[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磁盘列表
[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)的大小信息
要查看构成磁盘组的单个磁盘的大小,可以使用以下查询:
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命令,可以参考我的这个文章
https://blog.csdn.net/zxrhhm/article/details/141400539?ops_request_misc=%257B%2522request%255Fid%2522%253A%25227b15f721888f197528ef059f04c0b5ed%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=7b15f721888f197528ef059f04c0b5ed&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2blogfirst_rank_ecpm_v1~rank_v31_ecpm-1-141400539-null-null.nonecase&utm_term=run&spm=1018.2226.3001.4450
五、其他命令
5.1、显示当前 ASM 客户端
lsct
5.2、显示 ASM 操作
lsop
5.3、备份 ASM SPFILE
spbackup
5.4、拷贝 ASM SPFILE
spcopy
5.5、移动 ASM SPFILE
spmove
5.6、设置 ASM SPFILE 的位置
spset
六、注意事项
- 在使用
asmcmd
之前,请确保您有足够的权限来执行所需的命令。 - 谨慎使用删除命令,因为删除操作通常是不可逆的。
- 某些命令可能需要特定的磁盘组或文件名称作为参数,请确保您提供了正确的名称。
这些命令提供了对 Oracle ASM 的基本管理功能。如果您需要执行更复杂的任务,可能需要结合使用 SQL*Plus 和其他 Oracle 管理工具。