重庆思庄Oracle、Redhat认证学习论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1012|回复: 0
打印 上一主题 下一主题

[Oracle] ASMCMD查看磁盘组中各目录大小脚本

[复制链接]
跳转到指定楼层
楼主
发表于 2023-7-2 18:24:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在实际生产中,往往会碰到一套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



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持 反对反对
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|重庆思庄Oracle、Redhat认证学习论坛 ( 渝ICP备12004239号-4 )

GMT+8, 2024-5-19 07:34 , Processed in 0.107021 second(s), 20 queries .

重庆思庄学习中心论坛-重庆思庄科技有限公司论坛

© 2001-2020

快速回复 返回顶部 返回列表