Oracle ASM命令行工具asmcmd命令及其使用方法

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命令,可以参考我的这个文章

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-2~blog~first_rank_ecpm_v1\~rank_v31_ecpm-1-141400539-null-null.nonecase\&utm_term=run\&spm=1018.2226.3001.4450

五、其他命令

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 管理工具。

相关推荐
小龙在山东3 小时前
memcached的基本使用
数据库·缓存·memcached
亦世凡华、3 小时前
MySQL--》快速提高查询效率:SQL语句优化技巧与实践
数据库·经验分享·sql·mysql·sql优化
不是二师兄的八戒4 小时前
深入 Redis:高级特性与最佳实践
数据库·redis·缓存
drebander5 小时前
SQL 分析函数与聚合函数的组合应用
大数据·数据库·sql
LLLuckyGirl~5 小时前
node.js之---集群(Cluster)模块
数据库
ccmjga5 小时前
Spring Boot 3 配置大全系列 —— 如何配置用户的登录与认证?
java·数据库·spring boot·后端·spring·单元测试·gradle
Dann Hiroaki5 小时前
文献分享:跨模态的最邻近查询RoarGraph
数据库·图搜索
泰山小张只吃荷园6 小时前
软件体系结构、设计模式、课程期末复习知识点全总结-SCAU
网络·数据库·sql·计算机网络·设计模式·sqlserver
JM_life7 小时前
Python入门系列之九-数据分析与可视化
数据库·python·数据分析
欣慰的三叶草(● ̄(エ) ̄●)7 小时前
Navicat 17 for Mac 数据库管理软件
数据库·macos·数据库管理·navicat·数据库连接工具·navicat17·mysql连接