Oracle查看ASM磁盘组中各目录大小

在实际生产中,往往会碰到一套RAC中运行多个数据库,ASM某磁盘组中按照各数据库创建目录,因此ASM某磁盘组中会有很多个目录,例如环境描述为:

[grid@ray01 ~]$ asmcmd
ASMCMD> lsdg
State    Type    Rebal  Sector  Block       AU   Total_MB   Free_MB  Req_mir_free_MB  Usable_file_MB  Offline_disks  Voting_files  Name
MOUNTED  NORMAL  N         512   4096  4194304  307495424  20330080          5671968         3379056              0             N  DATA1/
MOUNTED  NORMAL  N         512   4096  4194304     385296    414056            34608          189724              0             Y  ARCH1/
MOUNTED  NORMAL  N         512   4096  4194304   27945008  14398896          1243056         6572920              0             N  RECO1/
ASMCMD> cd data1
ASMCMD> ls
orcl1/
orcl2/
orcl3/
orcl4/
orcl5/
orcl6/
orcl7/
orcl8/
orcl9/
orcl10/
orcl11/
orcl12/
orcl13/
orcl14/
orcl15/
orcl16/
orcl17/
orcl18/
orcl19/
orcl20/
orcl21/
orcl22/
orcl23/

那么,如果想看各目录大小,传统的方式为:

ASMCMD> du orcl1
Used_MB      Mirror_used_MB
  22888               45808
  ASMCMD> du orcl2
Used_MB      Mirror_used_MB
  22888               45808
  ASMCMD> du orcl3
Used_MB      Mirror_used_MB
  22888               45808
  ...

这种方式太过复杂,以下分享一个小脚本,可以批量查询各目录大小,并以列表的形式展示出来

[grid@ray01 ~]$ vi asmdu.sh
#!/bin/bash
#
# du of each subdirectory in a directory for ASM
#
D=$1
 
if [[ -z $D ]]
then
 echo "Please provide a directory !"
 exit 1
fi
 
(for DIR in `asmcmd ls ${D}`
 do
     echo ${DIR} `asmcmd du ${D}/${DIR} | tail -1`
 done) | awk -v D="$D" ' BEGIN {  printf("\n\t\t%40s\n\n", D " subdirectories size")           ;
                                  printf("%25s%16s%16s\n", "Subdir", "Used MB", "Mirror MB")   ;
                                  printf("%25s%16s%16s\n", "------", "-------", "---------")   ;}
                               {
                                  printf("%25s%16s%16s\n", $1, $2, $3)                         ;
                                  use += $2                                                    ;
                                  mir += $3                                                    ;
                               }
                         END   { printf("\n\n%25s%16s%16s\n", "------", "-------", "---------");
                                 printf("%25s%16s%16s\n\n", "Total", use, mir)                 ;} '
 [grid@ray01 ~]$ chmod +x asmdu.sh

执行脚本,后面跟上需要查询的磁盘组名称就行了。

[grid@ray01 ~]$ ./asmdu.sh data1

                              datac1 subdirectories size

                   Subdir         Used MB       Mirror MB
                   ------         -------       ---------
                   orcl1/           22888           45808
                   orcl2/          132416          264996
                   orcl3/              32              64
                   orcl4/          865608         1731248
                   orcl5/         3280996         6562024
                   orcl6/        25472266        50944596
                   orcl7/          465936          931904
                   orcl8           11700           23432
                   orcl9/           28408           56848
                  orcl10/           29800           59632
                  orcl11/           19270           38572
                  orcl12/            5172           10376
                  orcl13/        14902644        29805320
                  orcl14/         1352754         2705540
                  orcl15/          408012          816056
                  orcl16/           17586           35204
                  orcl17/           14164           28360
                  orcl18/           12498           25028
                  orcl19/         1201054         2402140
                  orcl20/          200890          401812
                  orcl21/           38416           76864
                  orcl22/           18872           37776
                  orcl23/           80340          160712


                   ------         -------       ---------
                    Total        48581722        97164312

以上为客户环境执行演示,因此过滤掉关键信息。

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值