asmcmd
是 Oracle ASM(Automatic Storage Management)的一个命令行工具,用于直接管理和操作 ASM 实例和磁盘组。以下是一些常用的 asmcmd
命令及其使用方法的简要说明:
asmcmd
[grid@racdb2:/home/grid]$asmcmd
ASMCMD>
-- 或者,如果您以特定用户身份运行(例如 `grid` 用户),可以使用:
su - grid
asmcmd
-- 当前路径+
ASMCMD> pwd
+
-- 当前路径+DATA
ASMCMD> cd DATA
ASMCMD> pwd
+DATA
-- 切换目录到+DGDATA
ASMCMD> cd +DGDATA
-- 查看当前路径
ASMCMD> pwd
+DGDATA
在 ASM 中,根目录用 +
表示。例如,切换到某个磁盘组的根目录:
cd +mydg
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/
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/
lsdsk -G <diskgroup_name>
例如:
lsdsk -G mydg
要查看构成磁盘组的单个磁盘的大小,可以使用以下查询:
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是已使用的容量。通过这个查询,你可以清楚地了解每个磁盘组的存储使用情况。
mount <diskgroup_name>
例如:
mount mydg
umount <diskgroup_name>
例如:
umount mydg
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
rm <file>
例如:
rm +mydg/myfile.dbf
mkalias <alias_name> FOR <file_name>
例如:
mkalias myalias FOR +mydg/myfile.dbf
rmalias <alias_name>
例如:
rmalias myalias
虽然 asmcmd
不直接用于添加或删除物理磁盘(这通常通过操作系统级别的命令或 Oracle Enterprise Manager 完成),但您可以查看磁盘的状态和属性。
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
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
[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
要查看构成磁盘组的单个磁盘的大小,可以使用以下查询:
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
lsct
lsop
spbackup
spcopy
spmove
spset
asmcmd
之前,请确保您有足够的权限来执行所需的命令。这些命令提供了对 Oracle ASM 的基本管理功能。如果您需要执行更复杂的任务,可能需要结合使用 SQL*Plus 和其他 Oracle 管理工具。