{"id":498,"date":"2019-06-24T19:15:45","date_gmt":"2019-06-24T22:15:45","guid":{"rendered":"http:\/\/www.fernandosimon.com\/blog\/?p=498"},"modified":"2020-07-19T19:19:09","modified_gmt":"2020-07-19T22:19:09","slug":"shrink-asm-diskgroup-and-exadata-grid-disks","status":"publish","type":"post","link":"https:\/\/www.fernandosimon.com\/blog\/shrink-asm-diskgroup-and-exadata-grid-disks\/","title":{"rendered":"Shrink ASM Diskgroup and Exadata Grid Disks"},"content":{"rendered":"<p style=\"text-align: justify;\">Here I will cover the shrink of ASM diskgroup in Exadata environment running VM\u2019s. The process here is the opposite of what I wrote in the <a href=\"http:\/\/www.fernandosimon.com\/blog\/increase-size-for-exadata-grid-disks\/\" target=\"_blank\" rel=\"noopener noreferrer\">previous post,<\/a> but have a tricky part that demands attention to avoid errors. The same points that you checked for extending are valid now: number the cells, disks per cell, ASM mirroring, and the VM that you want to change continue to be important, but we have more now. Besides that, the post shows how to verify (and &#8220;fix&#8221;) if you have something in the ASM internal extent map that can block the shrink.<\/p>\n<p style=\"text-align: justify;\"><!--more More...--><\/p>\n<p style=\"text-align: justify;\">Here, in this scenario, I will reduce the size for grid disks linked with diskgroup DATAC8 (that run in a cluster for VM #08).<\/p>\n<p style=\"text-align: justify;\">And before continuing, be aware of Exadata disk division:<\/p>\n<p><a href=\"http:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2014\/11\/Divisao-Discos-Exa.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-176\" src=\"http:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2014\/11\/Divisao-Discos-Exa-300x91.png\" alt=\"\" width=\"300\" height=\"91\" srcset=\"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2014\/11\/Divisao-Discos-Exa-300x91.png 300w, https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2014\/11\/Divisao-Discos-Exa.png 653w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<h2>ASM Extent Map and Moves<\/h2>\n<p>So, my actual usage space for DATAC8 is:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"no-highlight\">ASMCMD&gt; lsdg\r\nState    Type    Rebal  Sector  Logical_Sector  Block       AU  Total_MB   Free_MB  Req_mir_free_MB  Usable_file_MB  Offline_disks  Voting_files  Name\r\nMOUNTED  NORMAL  N         512             512   4096  4194304  29921280  29790140           498688        14645726              0             Y  DATAC8\/\r\nMOUNTED  NORMAL  N         512             512   4096  4194304   6144000   6142020           102400         3019810              0             N  RECOC8\/\r\nASMCMD&gt;\r\n\r\nSQL&gt; select name, total_mb, free_mb, total_mb - free_mb used_mb, round(100*free_mb\/total_mb,2) pct_free\r\n  2  from v$asm_diskgroup\r\n  3  order by 1;\r\n\r\nNAME                             TOTAL_MB    FREE_MB    USED_MB   PCT_FREE\r\n------------------------------ ---------- ---------- ---------- ----------\r\nDATAC8                           29921280   29790140     131140      99.56\r\nRECOC8                            6144000    6142020       1980      99.97\r\n\r\nSQL&gt;<\/pre>\n<p style=\"text-align: justify;\">As you can see above, the RAW size is around 29.2 TB (14.6 after the ASM NORMAL mirror) and the actual free space is around 14.3TB. So, plenty of space for the reduction in this case. Unfortunately, even if I have 99% of free space don\u2019t mean that I can reduce instantly to 1TB.<\/p>\n<p style=\"text-align: justify;\">This occurs because, probably, I have a fragmented diskgroup and something can be allocated at the end of some disk and will deny me do reduce the disk. I will not dig in this topic but will show you how to check this. If you want to check with more details you can read these two articles: <a href=\"http:\/\/asmsupportguy.blogspot.com\/2011\/06\/asm-file-extent-map.html\">http:\/\/asmsupportguy.blogspot.com\/2011\/06\/asm-file-extent-map.html<\/a> and <a href=\"http:\/\/asmsupportguy.blogspot.com\/2012\/10\/where-is-my-data.html\">http:\/\/asmsupportguy.blogspot.com\/2012\/10\/where-is-my-data.html<\/a>. &nbsp;<\/p>\n<p style=\"text-align: justify;\">The idea is to use the ASM extend map from X$KFFXP to discover the object that has the MAX AU_KFFXP into some disk (whatever which one). So, I made:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"no-highlight\">SQL&gt; select GROUP_NUMBER, name from v$asm_diskgroup;\r\n\r\nGROUP_NUMBER NAME\r\n------------ ------------------------------\r\n           1 DATAC8\r\n           2 RECOC8\r\n\r\nSQL&gt;\r\nSQL&gt; select VALUE from V$ASM_ATTRIBUTE where NAME='au_size' and GROUP_NUMBER=1;\r\n\r\nVALUE\r\n--------------------------------------------------------------------------------\r\n4194304\r\n\r\nSQL&gt;\r\nSQL&gt; select max(AU_KFFXP) from X$KFFXP where GROUP_KFFXP=1;\r\n\r\nMAX(AU_KFFXP)\r\n-------------\r\n       114195\r\n\r\nSQL&gt;\r\nSQL&gt; select NUMBER_KFFXP from X$KFFXP where AU_KFFXP = 114195;\r\n\r\nNUMBER_KFFXP\r\n------------\r\n         262\r\n\r\nSQL&gt;\r\nSQL&gt; select name from v$asm_alias where FILE_NUMBER = 262 and GROUP_NUMBER = 1;\r\n\r\nNAME\r\n----------------------------------------------------------------------\r\ngroup_1.262.983716383\r\n\r\nSQL&gt;<\/pre>\n<p style=\"text-align: justify;\">Above I discovered that the file 252 (that it is a redo \u2013 will show after), is allocated in the allocation unit 114195 from diskgroup 1 (that have \u2013 and default fore Exadata &#8211; allocation unit of 4MB). Doing a little count (114195*4), this means that this file resides in somewhere around 446GB into some disk. And if I try to reduce the disk below this value, I will receive an error.<\/p>\n<p style=\"text-align: justify;\">To solve this we need to move files, in this case, the file is related to MGMTDB:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"no-highlight\">ASMCMD&gt; ls -l +DATAC8\/_MGMTDB\/ONLINELOG\/\r\nType       Redund  Striped  Time             Sys  Name\r\nONLINELOG  MIRROR  COARSE   MAY 03 10:00:00  Y    group_1.262.983716383\r\nONLINELOG  MIRROR  COARSE   MAY 03 10:00:00  Y    group_2.264.983716383\r\nONLINELOG  MIRROR  COARSE   MAY 03 10:00:00  Y    group_3.263.983716383\r\nASMCMD&gt;\r\nASMCMD&gt; ls -l +DATAC8\r\nType      Redund  Striped  Time         Sys  Name\r\n                                        Y    ASM\/\r\n                                        Y    _MGMTDB\/\r\n                                        Y    exa-cl8\/\r\nPASSWORD  HIGH    COARSE   JAN 20 2017  N    orapwasm =&gt; +DATAC8\/ASM\/PASSWORD\/pwdasm.256.933784119\r\nPASSWORD  HIGH    COARSE   AUG 09 2018  N    orapwasm_backup =&gt; +DATAC8\/ASM\/PASSWORD\/pwdasm.1471.983713235\r\nASMCMD&gt; ls -l +RECOC8\r\nASMCMD&gt;<\/pre>\n<p style=\"text-align: justify;\">To move MGMTDB we can follow the steps from note <a href=\"https:\/\/support.oracle.com\/epmos\/faces\/DocContentDisplay?id=2065175.1\" target=\"_blank\" rel=\"noopener noreferrer\">2065175.1<\/a> and use the script <strong>mdbutil.pl.<\/strong> In this case, I moved to RECOC8:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"no-highlight\">[grid@exa01vm08 +ASM1]$ \/tmp\/MGMTDB\/mdbutil.pl --mvmgmtdb --target=+RECOC8 -debug\r\nmdbutil.pl version : 1.98\r\n2019-06-21 11:43:33: D Executing: \/u01\/app\/18.0.0\/grid\/bin\/srvctl status diskgroup -g RECOC8\r\n2019-06-21 11:43:34: D Exit code: 0\r\n2019-06-21 11:43:34: D Output of last command execution:\r\nDisk Group RECOC8 is running on exa01vm08\r\n2019-06-21 11:43:34: D Executing: \/u01\/app\/18.0.0\/grid\/bin\/srvctl status mgmtdb\r\n2019-06-21 11:43:35: D Exit code: 0\r\n2019-06-21 11:43:35: D Output of last command execution:\r\n\u2026\r\n\u2026\r\n2019-06-21 11:53:20: D Executing: \/u01\/app\/18.0.0\/grid\/bin\/crsctl query crs activeversion\r\n2019-06-21 11:53:20: D Exit code: 0\r\n2019-06-21 11:53:20: D Output of last command execution:\r\nOracle Clusterware active version on the cluster is [18.0.0.0.0]\r\n2019-06-21 11:53:20: I Starting the Cluster Health Analysis Resource\r\n2019-06-21 11:53:20: D Executing: \/u01\/app\/18.0.0\/grid\/bin\/srvctl start cha\r\n2019-06-21 11:53:22: D Exit code: 0\r\n2019-06-21 11:53:22: D Output of last command execution:\r\n2019-06-21 11:53:22: I MGMTDB Successfully moved to +RECOC8!\r\n[grid@exa01vm08 +ASM1]$<\/pre>\n<p style=\"text-align: justify;\">The output above was cropped and you can see in raw <a href=\"http:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2019\/06\/Raw-Output-From-Move-MGMTDB.txt\" target=\"_blank\" rel=\"noopener noreferrer\">here<\/a>. And after that, doing the same query as above, I checked again the extent map:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"no-highlight\">SQL&gt; select max(AU_KFFXP) from X$KFFXP where GROUP_KFFXP=1;\r\n\r\nMAX(AU_KFFXP)\r\n-------------\r\n       114132\r\n\r\nSQL&gt; select NUMBER_KFFXP from X$KFFXP where AU_KFFXP = 114132;\r\n\r\nNUMBER_KFFXP\r\n------------\r\n         255\r\n\r\nSQL&gt; select name from v$asm_alias where FILE_NUMBER = 255 and GROUP_NUMBER = 1;\r\n\r\nNAME\r\n----------------------------------------------------------------------\r\nREGISTRY.255.933784121\r\n\r\nSQL&gt;<\/pre>\n<p style=\"text-align: justify;\">So, more one file to move and not it is related to OCR. To move I made:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"no-highlight\">[root@exa01vm08 ~]# export ORACLE_HOME=\/u01\/app\/18.0.0\/grid\r\n[root@exa01vm08 ~]# export PATH=$ORACLE_HOME\/bin:$PATH\r\n[root@exa01vm08 ~]#\r\n[root@exa01vm08 ~]# ocrconfig -add +RECOC8\r\n[root@exa01vm08 ~]# ocrcheck\r\nStatus of Oracle Cluster Registry is as follows :\r\n         Version                  :          4\r\n         Total space (kbytes)     :     491684\r\n         Used space (kbytes)      :      88624\r\n         Available space (kbytes) :     403060\r\n         ID                       :  354072626\r\n         Device\/File Name         :    +DATAC8\r\n                                    Device\/File integrity check succeeded\r\n         Device\/File Name         :    +RECOC8\r\n                                    Device\/File integrity check succeeded\r\n\r\n                                    Device\/File not configured\r\n\r\n                                    Device\/File not configured\r\n\r\n                                    Device\/File not configured\r\n\r\n         Cluster registry integrity check succeeded\r\n\r\n         Logical corruption check succeeded\r\n\r\n[root@exa01vm08 ~]#\r\n[root@exa01vm08 ~]# ocrconfig -delete +DATAC8\r\n[root@exa01vm08 ~]#\r\n[root@exa01vm08 ~]# ocrcheck\r\nStatus of Oracle Cluster Registry is as follows :\r\n         Version                  :          4\r\n         Total space (kbytes)     :     491684\r\n         Used space (kbytes)      :      88624\r\n         Available space (kbytes) :     403060\r\n         ID                       :  354072626\r\n         Device\/File Name         :    +RECOC8\r\n                                    Device\/File integrity check succeeded\r\n\r\n                                    Device\/File not configured\r\n\r\n                                    Device\/File not configured\r\n\r\n                                    Device\/File not configured\r\n\r\n                                    Device\/File not configured\r\n\r\n         Cluster registry integrity check succeeded\r\n\r\n         Logical corruption check succeeded\r\n\r\n[root@exa01vm08 ~]#<\/pre>\n<p style=\"text-align: justify;\">Above I: added a new place to OCR store the OCR files(RECOC8) and deleted the other (DATAC8). So, we still have more to move (votedisks, older OCR backups and ASM password file). To move votedisks I made:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"no-highlight\">[root@exa01vm08 ~]# crsctl query css votedisk\r\n##  STATE    File Universal Id                File Name Disk group\r\n--  -----    -----------------                --------- ---------\r\n 1. ONLINE   077367b255804f0abf804a3a3ca8045d (o\/200.200.10.11;200.200.10.12\/DATAC8_CD_02_exaceladm04) [DATAC8]\r\n 2. ONLINE   59ef748a7d2a4f43bffb54a90fe1b1a9 (o\/200.200.10.13;200.200.10.14\/DATAC8_CD_02_exaceladm05) [DATAC8]\r\n 3. ONLINE   cbaad30809f94fdcbfe5d60f6529ba63 (o\/200.200.10.7;200.200.10.8\/DATAC8_CD_02_exaceladm02) [DATAC8]\r\nLocated 3 voting disk(s).\r\n[root@exa01vm08 ~]#\r\n[root@exa01vm08 ~]# crsctl replace votedisk +RECOC8\r\nSuccessful addition of voting disk 081e9e767bc44ff2bff6067229378db5.\r\nSuccessful addition of voting disk 82649e3309d34fa0bf4fd3c89c93e42f.\r\nSuccessful addition of voting disk 57f3ec44b44b4fcdbf35e716e13011e9.\r\nSuccessful deletion of voting disk 077367b255804f0abf804a3a3ca8045d.\r\nSuccessful deletion of voting disk 59ef748a7d2a4f43bffb54a90fe1b1a9.\r\nSuccessful deletion of voting disk cbaad30809f94fdcbfe5d60f6529ba63.\r\nSuccessfully replaced voting disk group with +RECOC8.\r\nCRS-4266: Voting file(s) successfully replaced\r\n[root@exa01vm08 ~]#\r\n[root@exa01vm08 ~]# crsctl query css votedisk\r\n##  STATE    File Universal Id                File Name Disk group\r\n--  -----    -----------------                --------- ---------\r\n 1. ONLINE   081e9e767bc44ff2bff6067229378db5 (o\/200.200.10.11;200.200.10.12\/RECOC8_CD_02_exaceladm04) [RECOC8]\r\n 2. ONLINE   82649e3309d34fa0bf4fd3c89c93e42f (o\/200.200.10.9;200.200.10.10\/RECOC8_CD_02_exaceladm03) [RECOC8]\r\n 3. ONLINE   57f3ec44b44b4fcdbf35e716e13011e9 (o\/200.200.10.13;200.200.10.14\/RECOC8_CD_03_exaceladm05) [RECOC8]\r\nLocated 3 voting disk(s).\r\n[root@exa01vm08 ~]#\r\nAnd to backups for OCR:\r\n[root@exa01vm08 ~]# ocrconfig -showbackuploc\r\nThe Oracle Cluster Registry backup location is [+DATAC8].\r\n[root@exa01vm08 ~]# ocrconfig -backuploc +RECOC8\r\n[root@exa01vm08 ~]#\r\n[root@exa01vm08 ~]#\r\n[root@exa01vm08 ~]# ocrconfig -showbackuploc\r\nThe Oracle Cluster Registry backup location is [+RECOC8].\r\n[root@exa01vm08 ~]#\r\n[root@exa01vm08 ~]# ocrconfig -manualbackup\r\n\r\nexa01vm08     2019\/06\/21 12:08:05     +RECOC8:\/exa-cl8\/OCRBACKUP\/backup_20190621_120805.ocr.4722.1011528485     671056737\r\n\r\nexa01vm08     2018\/08\/16 12:38:11     +DATAC8:\/exa-cl8\/OCRBACKUP\/backup_20180816_123811.ocr.1511.984314291     671056737\r\n\r\nexa01vm08     2018\/08\/09 15:56:08     +DATAC8:\/exa-cl8\/OCRBACKUP\/backup_20180809_155608.ocr.1508.983721369     2960767134\r\n[root@exa01vm08 ~]#<\/pre>\n<p style=\"text-align: justify;\">After one more backup, I deleted manually the old OCR backups. And to move ASM password:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"no-highlight\">[grid@exa01vm08 +ASM1]$ asmcmd pwget --asm\r\n+DATAC8\/orapwASM\r\n[grid@exa01vm08 +ASM1]$ srvctl config asm -detail\r\nASM home: &lt;CRS home&gt;\r\nPassword file: +DATAC8\/orapwASM\r\nBackup of Password file: +DATAC8\/orapwASM_backup\r\nASM listener: LISTENER\r\nASM is enabled.\r\nASM is individually enabled on nodes:\r\nASM is individually disabled on nodes:\r\nASM instance count: ALL\r\nCluster ASM listener: ASMNET1LSNR_ASM\r\n[grid@exa01vm08 +ASM1]$\r\n[grid@exa01vm08 +ASM1]$\r\n[grid@exa01vm08 +ASM1]$ asmcmd pwmove --asm +DATAC8\/orapwASM +RECOC8\/orapwASM -f\r\nmoving +DATAC8\/orapwASM -&gt; +RECOC8\/orapwASM\r\n[grid@exa01vm08 +ASM1]$\r\n[grid@exa01vm08 +ASM1]$ srvctl config asm -detail\r\nASM home: &lt;CRS home&gt;\r\nPassword file: +RECOC8\/orapwASM\r\nBackup of Password file: +DATAC8\/orapwASM_backup\r\nASM listener: LISTENER\r\nASM is enabled.\r\nASM is individually enabled on nodes:\r\nASM is individually disabled on nodes:\r\nASM instance count: ALL\r\nCluster ASM listener: ASMNET1LSNR_ASM\r\n[grid@exa01vm08 +ASM1]$\r\n[grid@exa01vm08 +ASM1]$ asmcmd pwmove --asm +DATAC8\/orapwASM_backup +RECOC8\/orapwASM_backup -f\r\nmoving +DATAC8\/orapwASM_backup -&gt; +RECOC8\/orapwASM_backup\r\n[grid@exa01vm08 +ASM1]$\r\n[grid@exa01vm08 +ASM1]$<\/pre>\n<p style=\"text-align: justify;\">Maybe you don\u2019t need to move everything, I recommend that after every move you check the extent map for ASM and verify if the value less the minimum size per disk that you want.<\/p>\n<p style=\"text-align: justify;\">Since I changed a lot of things I made a restart for the cluster in both nodes:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"no-highlight\">[root@exa01vm08 ~]# crsctl stop cluster -all\r\nCRS-2673: Attempting to stop 'ora.crsd' on 'exa01vm08'\r\nCRS-2790: Starting shutdown of Cluster Ready Services-managed resources on server 'exa01vm08'\r\n\u2026\r\nCRS-2673: Attempting to stop 'ora.diskmon' on 'exa01vm08'\r\nCRS-2677: Stop of 'ora.diskmon' on 'exa01vm08' succeeded\r\n[root@exa01vm08 ~]#\r\n[root@exa01vm08 ~]# crsctl start cluster -all\r\nCRS-2672: Attempting to start 'ora.cssdmonitor' on 'exa01vm08'\r\n\u2026\r\n\u2026\r\nCRS-2672: Attempting to start 'ora.crsd' on 'exa01vm08'\r\nCRS-2676: Start of 'ora.crsd' on 'exa01vm08' succeeded\r\n[root@exa01vm08 ~]#<\/pre>\n<p style=\"text-align: justify;\">And after all of these moves I got the extent map with:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"no-highlight\">SQL&gt; select max(AU_KFFXP) from X$KFFXP where GROUP_KFFXP=1;\r\n\r\nMAX(AU_KFFXP)\r\n-------------\r\n        15149\r\n\r\nSQL&gt;\r\nSQL&gt; select NUMBER_KFFXP from X$KFFXP where AU_KFFXP = 15149;\r\n\r\nNUMBER_KFFXP\r\n------------\r\n           1\r\n\r\nSQL&gt;<\/pre>\n<p style=\"text-align: justify;\">Basically, this means that something is around 60Gb of some disk. But the link is for a file #1. So, to check what is this you can query inside X$KFFXP:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"no-highlight\">SQL&gt; select NUMBER_KFFXP \"ASM file number\",\r\n  2  DECODE (NUMBER_KFFXP,\r\n  3          1, 'File directory'\r\n  4          , 2, 'Disk directory'\r\n  5          , 3, 'Active change directory'\r\n  6          , 4, 'Continuing operations directory'\r\n  7          , 5, 'Template directory'\r\n  8          , 6, 'Alias directory'\r\n  9          , 7, 'ADVM file directory'\r\n 10          , 8, 'Disk free space directory'\r\n 11          , 9, 'Attributes directory'\r\n 12          , 10, 'ASM User directory'\r\n 13          , 11, 'ASM user group directory'\r\n 14          , 12, 'Staleness directory'\r\n 15          , 253, 'spfile for ASM instance'\r\n 16          , 254, 'Stale bit map space registry '\r\n 17          , 255, 'Oracle Cluster Repository registry') \"ASM metadata file name\",\r\n 18  count(AU_KFFXP) \"Allocation units\"\r\n 19  from X$KFFXP\r\n 20  where GROUP_KFFXP=1\r\n 21  group by NUMBER_KFFXP\r\n 22  order by 1;\r\n\r\nASM file number ASM metadata file name             Allocation units\r\n--------------- ---------------------------------- ----------------\r\n              1 File directory                                   15\r\n              2 Disk directory                                    3\r\n              3 Active change directory                          69\r\n              4 Continuing operations directory                   6\r\n              5 Template directory                                3\r\n              6 Alias directory                                   3\r\n              8 Disk free space directory                         3\r\n              9 Attributes directory                              3\r\n             12 Staleness directory                               3\r\n             13                                                   3\r\n             16                                                   3\r\n\r\nASM file number ASM metadata file name             Allocation units\r\n--------------- ---------------------------------- ----------------\r\n            120                                                   3\r\n            121                                                 180\r\n            253 spfile for ASM instance                           2\r\n            254 Stale bit map space registry                     18\r\n            255 Oracle Cluster Repository registry               83\r\n            262                                                  99\r\n            321                                                 185\r\n            428                                                 221\r\n            492                                                 305\r\n            551                                                 129\r\n            584                                                 705\r\n\r\nASM file number ASM metadata file name             Allocation units\r\n--------------- ---------------------------------- ----------------\r\n            740                                                1865\r\n           1003                                                 105\r\n           1417                                                   2\r\n           4708                                                   6\r\n           4710                                                   6\r\n           4713                                                   6\r\n           4716                                                   6\r\n           4719                                                   6\r\n           4722                                                   6\r\n           4731                                                  52\r\n           4733                                                  52\r\n\r\nASM file number ASM metadata file name             Allocation units\r\n--------------- ---------------------------------- ----------------\r\n           4736                                                  52\r\n           4739                                                 379\r\n           4742                                                 379\r\n           4744                                                  52\r\n           4747                                                 379\r\n           4750                                                  24\r\n           4753                                                 129\r\n           4756                                                5125\r\n           4759                                                7685\r\n           4762                                                1029\r\n           4765                                                 517\r\n\r\nASM file number ASM metadata file name             Allocation units\r\n--------------- ---------------------------------- ----------------\r\n           4768                                                  52\r\n           4771                                                   4\r\n           4773                                               11819\r\n\r\n47 rows selected.\r\n\r\nSQL&gt;<\/pre>\n<p style=\"text-align: justify;\">In this case, it is a file directory ASM, but I will not try to move because it is even impossible in my case because does not appears in ASMCMD command. Basically, can be internal file\/directory that we can\u2019t see. Since I know that the diskgroup is empty and the allocation is related to internal ASM, I continued.<\/p>\n<p style=\"text-align: justify;\">Remember at the end of the procedure, after shrinking in grid disk (that I will show later) to move again these files to original diskgroup. I will not cover this new move here in the post but the steps are the same that I showed before.<\/p>\n<h2>Shrink in ASM<\/h2>\n<p style=\"text-align: justify;\">The shrinking part start in ASM it is simple and you just need to define the value that you want per disk and reduce them. The most critical part here is to define one size for the disk that it is aligned with 16 MB of the grid disk. Different from when you are increasing the space, here, for shrink, you start to define the size in ASM side and after go to grid disk. And since the grid disk in storage cell round down the value to the nearest 16MB value, you can misalign and have ASM disk with a different value than grid disk (and this will be REALLY BAD). A trick secret is to think directly in GB to avoid the error.<\/p>\n<p style=\"text-align: justify;\">For 16 Mb explanation you can check in the Exadata docs <a href=\"https:\/\/docs.oracle.com\/en\/engineered-systems\/exadata-database-machine\/sagug\/exadata-administering-asm.html#GUID-42DA2512-667D-443C-93C5-6E5110DFAE21\">https:\/\/docs.oracle.com\/en\/engineered-systems\/exadata-database-machine\/sagug\/exadata-administering-asm.html#GUID-42DA2512-667D-443C-93C5-6E5110DFAE21<\/a>:<\/p>\n<p style=\"text-align: justify;\"><em>Find the closest 16 MB boundary for the new grid disk size. If you do not perform this check, then the cell will round down the grid disk size to the nearest 16 MB boundary automatically, and you could end up with a mismatch in size between the Oracle ASM disks and the grid disks.<\/em><\/p>\n<p style=\"text-align: justify;\">Since I defined to reduce the DATAC8 to around 1.8TB I defined the disks with 30GB:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"no-highlight\">SQL&gt; select ((30*12)*5) as sizeGB FROM dual;\r\n\r\n    SIZEGB\r\n----------\r\n      1800\r\n\r\nSQL&gt;<\/pre>\n<p style=\"text-align: justify;\">Remember in the beginning that you need to know your environment? Here I have 12 disks per cell and 5 cells:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"no-highlight\">SQL&gt; set linesize 250\r\nSQL&gt; select dg.name, d.failgroup, d.state, d.header_status, d.mount_status, d.mode_status, count(1) num_disks\r\n  2  from v$asm_disk d, v$asm_diskgroup dg\r\n  3  where d.group_number = dg.group_number\r\n  4  and dg.name IN ('DATAC8')\r\n  5  group by dg.name, d.failgroup, d.state, d.header_status, d.mount_status, d.mode_status\r\n  6  order by 1,2,3;\r\n\r\nNAME   FAILGROUP                      STATE    HEADER_STATU MOUNT_S MODE_ST  NUM_DISKS\r\n------ ------------------------------ -------- ------------ ------- ------- ----------\r\nDATAC8 EXACELADM01                    NORMAL   MEMBER       CACHED  ONLINE          12\r\nDATAC8 EXACELADM02                    NORMAL   MEMBER       CACHED  ONLINE          12\r\nDATAC8 EXACELADM03                    NORMAL   MEMBER       CACHED  ONLINE          12\r\nDATAC8 EXACELADM04                    NORMAL   MEMBER       CACHED  ONLINE          12\r\nDATAC8 EXACELADM05                    NORMAL   MEMBER       CACHED  ONLINE          12\r\n\r\nSQL&gt;<\/pre>\n<p style=\"text-align: justify;\">After choosing the size that you want, you need to check if all the grid disk as online. It is not recommended to do the shrink with missing disks or even faulty failgroups. To check both at the same time you can do:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"no-highlight\">SQL&gt; col path format a100\r\nSQL&gt; select dg.name, d.failgroup, d.path\r\n  2  from v$asm_disk d, v$asm_diskgroup dg\r\n  3  where d.group_number = dg.group_number\r\n  4  and dg.name IN ('DATAC8') and state = 'NORMAL'\r\n  5  order by 1,2,3;\r\n\r\nNAME                           FAILGROUP                      PATH\r\n------------------------------ ------------------------------ ----------------------------------------------------------------------------------------------------\r\nDATAC8                         EXACELADM01                    o\/200.200.10.5;200.200.10.6\/DATAC8_CD_00_exaceladm01\r\nDATAC8                         EXACELADM01                    o\/200.200.10.5;200.200.10.6\/DATAC8_CD_01_exaceladm01\r\nDATAC8                         EXACELADM01                    o\/200.200.10.5;200.200.10.6\/DATAC8_CD_02_exaceladm01\r\nDATAC8                         EXACELADM01                    o\/200.200.10.5;200.200.10.6\/DATAC8_CD_03_exaceladm01\r\nDATAC8                         EXACELADM01                    o\/200.200.10.5;200.200.10.6\/DATAC8_CD_04_exaceladm01\r\nDATAC8                         EXACELADM01                    o\/200.200.10.5;200.200.10.6\/DATAC8_CD_05_exaceladm01\r\nDATAC8                         EXACELADM01                    o\/200.200.10.5;200.200.10.6\/DATAC8_CD_06_exaceladm01\r\nDATAC8                         EXACELADM01                    o\/200.200.10.5;200.200.10.6\/DATAC8_CD_07_exaceladm01\r\nDATAC8                         EXACELADM01                    o\/200.200.10.5;200.200.10.6\/DATAC8_CD_08_exaceladm01\r\nDATAC8                         EXACELADM01                    o\/200.200.10.5;200.200.10.6\/DATAC8_CD_09_exaceladm01\r\nDATAC8                         EXACELADM01                    o\/200.200.10.5;200.200.10.6\/DATAC8_CD_10_exaceladm01\r\n\r\nNAME                           FAILGROUP                      PATH\r\n------------------------------ ------------------------------ ----------------------------------------------------------------------------------------------------\r\nDATAC8                         EXACELADM01                    o\/200.200.10.5;200.200.10.6\/DATAC8_CD_11_exaceladm01\r\nDATAC8                         EXACELADM02                    o\/200.200.10.7;200.200.10.8\/DATAC8_CD_00_exaceladm02\r\nDATAC8                         EXACELADM02                    o\/200.200.10.7;200.200.10.8\/DATAC8_CD_01_exaceladm02\r\nDATAC8                         EXACELADM02                    o\/200.200.10.7;200.200.10.8\/DATAC8_CD_02_exaceladm02\r\nDATAC8                         EXACELADM02                    o\/200.200.10.7;200.200.10.8\/DATAC8_CD_03_exaceladm02\r\nDATAC8                         EXACELADM02                    o\/200.200.10.7;200.200.10.8\/DATAC8_CD_04_exaceladm02\r\nDATAC8                         EXACELADM02                    o\/200.200.10.7;200.200.10.8\/DATAC8_CD_05_exaceladm02\r\nDATAC8                         EXACELADM02                    o\/200.200.10.7;200.200.10.8\/DATAC8_CD_06_exaceladm02\r\nDATAC8                         EXACELADM02                    o\/200.200.10.7;200.200.10.8\/DATAC8_CD_07_exaceladm02\r\nDATAC8                         EXACELADM02                    o\/200.200.10.7;200.200.10.8\/DATAC8_CD_08_exaceladm02\r\nDATAC8                         EXACELADM02                    o\/200.200.10.7;200.200.10.8\/DATAC8_CD_09_exaceladm02\r\n\r\nNAME                           FAILGROUP                      PATH\r\n------------------------------ ------------------------------ ----------------------------------------------------------------------------------------------------\r\nDATAC8                         EXACELADM02                    o\/200.200.10.7;200.200.10.8\/DATAC8_CD_10_exaceladm02\r\nDATAC8                         EXACELADM02                    o\/200.200.10.7;200.200.10.8\/DATAC8_CD_11_exaceladm02\r\nDATAC8                         EXACELADM03                    o\/200.200.10.9;200.200.10.10\/DATAC8_CD_00_exaceladm03\r\nDATAC8                         EXACELADM03                    o\/200.200.10.9;200.200.10.10\/DATAC8_CD_01_exaceladm03\r\nDATAC8                         EXACELADM03                    o\/200.200.10.9;200.200.10.10\/DATAC8_CD_02_exaceladm03\r\nDATAC8                         EXACELADM03                    o\/200.200.10.9;200.200.10.10\/DATAC8_CD_03_exaceladm03\r\nDATAC8                         EXACELADM03                    o\/200.200.10.9;200.200.10.10\/DATAC8_CD_04_exaceladm03\r\nDATAC8                         EXACELADM03                    o\/200.200.10.9;200.200.10.10\/DATAC8_CD_05_exaceladm03\r\nDATAC8                         EXACELADM03                    o\/200.200.10.9;200.200.10.10\/DATAC8_CD_06_exaceladm03\r\nDATAC8                         EXACELADM03                    o\/200.200.10.9;200.200.10.10\/DATAC8_CD_07_exaceladm03\r\nDATAC8                         EXACELADM03                    o\/200.200.10.9;200.200.10.10\/DATAC8_CD_08_exaceladm03\r\n\r\nNAME                           FAILGROUP                      PATH\r\n------------------------------ ------------------------------ ----------------------------------------------------------------------------------------------------\r\nDATAC8                         EXACELADM03                    o\/200.200.10.9;200.200.10.10\/DATAC8_CD_09_exaceladm03\r\nDATAC8                         EXACELADM03                    o\/200.200.10.9;200.200.10.10\/DATAC8_CD_10_exaceladm03\r\nDATAC8                         EXACELADM03                    o\/200.200.10.9;200.200.10.10\/DATAC8_CD_11_exaceladm03\r\nDATAC8                         EXACELADM04                    o\/200.200.10.11;200.200.10.12\/DATAC8_CD_00_exaceladm04\r\nDATAC8                         EXACELADM04                    o\/200.200.10.11;200.200.10.12\/DATAC8_CD_01_exaceladm04\r\nDATAC8                         EXACELADM04                    o\/200.200.10.11;200.200.10.12\/DATAC8_CD_02_exaceladm04\r\nDATAC8                         EXACELADM04                    o\/200.200.10.11;200.200.10.12\/DATAC8_CD_03_exaceladm04\r\nDATAC8                         EXACELADM04                    o\/200.200.10.11;200.200.10.12\/DATAC8_CD_04_exaceladm04\r\nDATAC8                         EXACELADM04                    o\/200.200.10.11;200.200.10.12\/DATAC8_CD_05_exaceladm04\r\nDATAC8                         EXACELADM04                    o\/200.200.10.11;200.200.10.12\/DATAC8_CD_06_exaceladm04\r\nDATAC8                         EXACELADM04                    o\/200.200.10.11;200.200.10.12\/DATAC8_CD_07_exaceladm04\r\n\r\nNAME                           FAILGROUP                      PATH\r\n------------------------------ ------------------------------ ----------------------------------------------------------------------------------------------------\r\nDATAC8                         EXACELADM04                    o\/200.200.10.11;200.200.10.12\/DATAC8_CD_08_exaceladm04\r\nDATAC8                         EXACELADM04                    o\/200.200.10.11;200.200.10.12\/DATAC8_CD_09_exaceladm04\r\nDATAC8                         EXACELADM04                    o\/200.200.10.11;200.200.10.12\/DATAC8_CD_10_exaceladm04\r\nDATAC8                         EXACELADM04                    o\/200.200.10.11;200.200.10.12\/DATAC8_CD_11_exaceladm04\r\nDATAC8                         EXACELADM05                    o\/200.200.10.13;200.200.10.14\/DATAC8_CD_00_exaceladm05\r\nDATAC8                         EXACELADM05                    o\/200.200.10.13;200.200.10.14\/DATAC8_CD_01_exaceladm05\r\nDATAC8                         EXACELADM05                    o\/200.200.10.13;200.200.10.14\/DATAC8_CD_02_exaceladm05\r\nDATAC8                         EXACELADM05                    o\/200.200.10.13;200.200.10.14\/DATAC8_CD_03_exaceladm05\r\nDATAC8                         EXACELADM05                    o\/200.200.10.13;200.200.10.14\/DATAC8_CD_04_exaceladm05\r\nDATAC8                         EXACELADM05                    o\/200.200.10.13;200.200.10.14\/DATAC8_CD_05_exaceladm05\r\nDATAC8                         EXACELADM05                    o\/200.200.10.13;200.200.10.14\/DATAC8_CD_06_exaceladm05\r\n\r\nNAME                           FAILGROUP                      PATH\r\n------------------------------ ------------------------------ ----------------------------------------------------------------------------------------------------\r\nDATAC8                         EXACELADM05                    o\/200.200.10.13;200.200.10.14\/DATAC8_CD_07_exaceladm05\r\nDATAC8                         EXACELADM05                    o\/200.200.10.13;200.200.10.14\/DATAC8_CD_08_exaceladm05\r\nDATAC8                         EXACELADM05                    o\/200.200.10.13;200.200.10.14\/DATAC8_CD_09_exaceladm05\r\nDATAC8                         EXACELADM05                    o\/200.200.10.13;200.200.10.14\/DATAC8_CD_10_exaceladm05\r\nDATAC8                         EXACELADM05                    o\/200.200.10.13;200.200.10.14\/DATAC8_CD_11_exaceladm05\r\n\r\n60 rows selected.\r\n\r\nSQL&gt;<\/pre>\n<p style=\"text-align: justify;\">After all the checks 16MB align, missing disks, and online failgroups <strong>you can do the resize in ASM<\/strong>:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"no-highlight\">SQL&gt; alter diskgroup DATAC8 resize all size 30720M rebalance power 1024;\r\n\r\nDiskgroup altered.\r\n\r\nSQL&gt;<\/pre>\n<p style=\"text-align: justify;\">As you can see above, I specified in MB and I made this to show you where the error can occur. If I defined (as an example) disk size as 30700M it will not be aligned to 16MB (30700\/16 = 1918,75) and the grid disk will be 30688M and if ASM allocates something at the end of the disk you will corrupt something.<\/p>\n<p style=\"text-align: justify;\">After executing the change in ASM you just continue <strong>after having nothing in v$asm_operation<\/strong>. And for ASM now you see the size for your diskgroup:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"no-highlight\">SQL&gt; select name, total_mb, free_mb, total_mb - free_mb used_mb, round(100*free_mb\/total_mb,2) pct_free\r\n  2  from v$asm_diskgroup\r\n  3  order by 1;\r\n\r\nNAME                             TOTAL_MB    FREE_MB    USED_MB   PCT_FREE\r\n------------------------------ ---------- ---------- ---------- ----------\r\nDATAC8                            1843200    1837896       5304      99.71\r\nRECOC8                            6144000    6016048     127952      97.92\r\n\r\nSQL&gt;<\/pre>\n<h2>Shrink for Grid Disk<\/h2>\n<p>After shrinking in ASM side, you need to reduce in storage side the grid disk to release the space to celldisk. The procedure is the same for the increase and you use ALTER GRIDDISK to specify the new value.<\/p>\n<p>Just to show, that before the shrink in storage cell I have disk defined for grid disk (487GB) and celldisk (346GB free):<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"no-highlight\">CellCLI&gt; list griddisk where name = 'DATAC8_CD_00_exaceladm01' detail;\r\n         name:                   DATAC8_CD_00_exaceladm01\r\n         asmDiskGroupName:       DATAC8\r\n         asmDiskName:            DATAC8_CD_00_EXACELADM01\r\n         asmFailGroupName:       EXACELADM01\r\n         availableTo:\r\n         cachedBy:               FD_00_exaceladm01\r\n         cachingPolicy:          default\r\n         cellDisk:               CD_00_exaceladm01\r\n         comment:                \"Cluster exa-cl8 diskgroup DATAC8\"\r\n         creationTime:           2017-01-20T16:19:29+01:00\r\n         diskType:               HardDisk\r\n         errorCount:             0\r\n         id:                     0ddfb7c0-1351-4df3-b5d6-82d3bbffa6e2\r\n         size:                   487G\r\n         status:                 active\r\n\r\nCellCLI&gt;\r\n\r\nCellCLI&gt; list celldisk where name = 'CD_00_exaceladm01' detail;\r\n         name:                   CD_00_exaceladm01\r\n         comment:\r\n         creationTime:           2016-11-29T10:44:55+01:00\r\n         deviceName:             \/dev\/sda\r\n         devicePartition:        \/dev\/sda3\r\n         diskType:               HardDisk\r\n         errorCount:             0\r\n         freeSpace:              346.0625G\r\n         id:                     f73cfdb7-aa40-47d9-99e0-e39e456b0b55\r\n         physicalDisk:           PUUK3V\r\n         size:                   7.1192474365234375T\r\n         status:                 normal\r\n\r\nCellCLI&gt;<\/pre>\n<p>As before, you have two option: execute manually disk by disk or using the script with dcli. Below you see that I created and called the script (I cropped the output but you can see the RAW execution <a href=\"http:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2019\/06\/Raw-Output-From-Shrink-Exadata-Grid-Disk-Using-Script.txt\" target=\"_blank\" rel=\"noopener noreferrer\">here<\/a>):<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"no-highlight\">DOM0 - root@exadbadm01 tmp]$  vi Change_Disk_Size_Of_DATAC8_Cluster_To_30G.sh\r\n[DOM0 - root@exadbadm01 tmp]$\r\n[DOM0 - root@exadbadm01 tmp]$  chmod +x Change_Disk_Size_Of_DATAC8_Cluster_To_30G.sh\r\n[DOM0 - root@exadbadm01 tmp]$\r\n[DOM0 - root@exadbadm01 tmp]$  cat Change_Disk_Size_Of_DATAC8_Cluster_To_30G.sh\r\ndcli -l root -c exaceladm01 cellcli -e ALTER GRIDDISK DATAC8_CD_00_EXACELADM01 size=30720M;\r\ndcli -l root -c exaceladm02 cellcli -e ALTER GRIDDISK DATAC8_CD_00_EXACELADM02 size=30720M;\r\n\u2026\r\n\u2026\r\ndcli -l root -c exaceladm02 cellcli -e ALTER GRIDDISK DATAC8_CD_11_EXACELADM02 size=30720M;\r\ndcli -l root -c exaceladm03 cellcli -e ALTER GRIDDISK DATAC8_CD_11_EXACELADM03 size=30720M;\r\ndcli -l root -c exaceladm04 cellcli -e ALTER GRIDDISK DATAC8_CD_11_EXACELADM04 size=30720M;\r\ndcli -l root -c exaceladm05 cellcli -e ALTER GRIDDISK DATAC8_CD_11_EXACELADM05 size=30720M;\r\n[DOM0 - root@exadbadm01 tmp]$\r\n[DOM0 - root@exadbadm01 tmp]$\r\n\r\n[DOM0 - root@exadbadm01 tmp]$  .\/Change_Disk_Size_Of_DATAC8_Cluster_To_30G.sh\r\nexaceladm01: GridDisk DATAC8_CD_00_exaceladm01 successfully altered\r\nexaceladm02: GridDisk DATAC8_CD_00_exaceladm02 successfully altered\r\n\u2026\r\n\u2026\r\nexaceladm02: GridDisk DATAC8_CD_11_exaceladm02 successfully altered\r\nexaceladm03: GridDisk DATAC8_CD_11_exaceladm03 successfully altered\r\nexaceladm04: GridDisk DATAC8_CD_11_exaceladm04 successfully altered\r\nexaceladm05: GridDisk DATAC8_CD_11_exaceladm05 successfully altered\r\n[DOM0 - root@exadbadm01 tmp]$<\/pre>\n<p style=\"text-align: justify;\">Check again that I used the value defined in MB, 30720MB in this case. Again, be careful with 16MB align. After the change I have in storage cell:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"no-highlight\">CellCLI&gt; list griddisk where name = 'DATAC8_CD_00_exaceladm01' detail;\r\n         name:                   DATAC8_CD_00_exaceladm01\r\n         asmDiskGroupName:       DATAC8\r\n         asmDiskName:            DATAC8_CD_00_EXACELADM01\r\n         asmFailGroupName:       EXACELADM01\r\n         availableTo:\r\n         cachedBy:               FD_00_exaceladm01\r\n         cachingPolicy:          default\r\n         cellDisk:               CD_00_exaceladm01\r\n         comment:                \"Cluster exa-cl8 diskgroup DATAC8\"\r\n         creationTime:           2017-01-20T16:19:29+01:00\r\n         diskType:               HardDisk\r\n         errorCount:             0\r\n         id:                     0ddfb7c0-1351-4df3-b5d6-82d3bbffa6e2\r\n         size:                   30G\r\n         status:                 active\r\n\r\nCellCLI&gt; list celldisk where name = 'CD_00_exaceladm01' detail;\r\n         name:                   CD_00_exaceladm01\r\n         comment:\r\n         creationTime:           2016-11-29T10:44:55+01:00\r\n         deviceName:             \/dev\/sda\r\n         devicePartition:        \/dev\/sda3\r\n         diskType:               HardDisk\r\n         errorCount:             0\r\n         freeSpace:              803.0625G\r\n         id:                     f73cfdb7-aa40-47d9-99e0-e39e456b0b55\r\n         physicalDisk:           PUUK3V\r\n         size:                   7.1192474365234375T\r\n         status:                 normal\r\n\r\nCellCLI&gt;<\/pre>\n<h2>Conclusion<\/h2>\n<p style=\"text-align: justify;\">Execute the shrink for Exadata is something that you don\u2019t realize every day in your daily tasks. I suppose that not in a quarterly task because today is always \u201cadd, add, add\u201d. Besides the increase of space, the shrink is trickier, and you really need to take care for more steps. Maybe you need to move some data, restart the cluster, move data again.<\/p>\n<p style=\"text-align: justify;\">But, <strong>the most critical part<\/strong> is the 16MB alignment, more than when you add space. This is important because for shrink you define the value in two places: for ASM and for grid disk. If you choose a bad value, the size for grid disk can differ ASM and you will corrupt something. As I told, if you think directly in GB instead of MB for disk sizes, you are safer because GB is always compatible with 16MB.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Reference:<\/strong><\/p>\n<p>How to Resize Grid Disks in Exadata (Doc ID 2176737.1) &#8211; <a href=\"https:\/\/support.oracle.com\/epmos\/faces\/DocContentDisplay?id=2176737.1\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/support.oracle.com\/epmos\/faces\/DocContentDisplay?id=2176737.1<\/a><\/p>\n<p>Resizing Grid Disks &#8211; <a href=\"https:\/\/docs.oracle.com\/en\/engineered-systems\/exadata-database-machine\/sagug\/exadata-administering-asm.html#GUID-570A0C37-907C-4417-BC93-AC4ABAF7E3AD\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/docs.oracle.com\/en\/engineered-systems\/exadata-database-machine\/sagug\/exadata-administering-asm.html#GUID-570A0C37-907C-4417-BC93-AC4ABAF7E3AD<\/a>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p><em><strong>Disclaimer<\/strong><\/em><em>: &#8220;The postings on this site are my own and don&#8217;t necessarily represent my actual employer positions, strategies or opinions. The information here was edited to be useful for general purpose, specific data and identifications were removed to allow reach the generic audience and to be useful for the community. Post protected by copyright.\u201d<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Here I will cover the shrink of ASM diskgroup in Exadata environment running VM\u2019s. The process here is the opposite of what I wrote in the previous post, but have a tricky part that demands attention to avoid errors. The same points that you checked for extending are valid now: number the cells, disks per [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[55,30,29,77,6,5,23,9],"tags":[80,90,88,69,87,65,89],"class_list":["post-498","post","type-post","status-publish","format-standard","hentry","category-asm","category-banco-de-dados","category-database","category-engineeredsystems","category-exadata","category-oracle","category-storage","category-storage-server","tag-asm","tag-cell","tag-diskgroup","tag-exadata","tag-grid-disk","tag-oracle","tag-storate"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Shrink ASM Diskgroup and Exadata Grid Disks - Fernando Simon<\/title>\n<meta name=\"description\" content=\"Check how to Shrink Exadata Grid Disks and ASM diskgroup, check details about ASM extent map and how 16MB aligment can impact the process.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.fernandosimon.com\/blog\/shrink-asm-diskgroup-and-exadata-grid-disks\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Shrink ASM Diskgroup and Exadata Grid Disks - Fernando Simon\" \/>\n<meta property=\"og:description\" content=\"Check how to Shrink Exadata Grid Disks and ASM diskgroup, check details about ASM extent map and how 16MB aligment can impact the process.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.fernandosimon.com\/blog\/shrink-asm-diskgroup-and-exadata-grid-disks\/\" \/>\n<meta property=\"og:site_name\" content=\"Fernando Simon\" \/>\n<meta property=\"article:published_time\" content=\"2019-06-24T22:15:45+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-07-19T22:19:09+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2014\/11\/Divisao-Discos-Exa-300x91.png\" \/>\n<meta name=\"author\" content=\"Simon\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Simon\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"20 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/shrink-asm-diskgroup-and-exadata-grid-disks\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/shrink-asm-diskgroup-and-exadata-grid-disks\/\"},\"author\":{\"name\":\"Simon\",\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/#\/schema\/person\/386da956604bca0d5be5dd52210c1dd9\"},\"headline\":\"Shrink ASM Diskgroup and Exadata Grid Disks\",\"datePublished\":\"2019-06-24T22:15:45+00:00\",\"dateModified\":\"2020-07-19T22:19:09+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/shrink-asm-diskgroup-and-exadata-grid-disks\/\"},\"wordCount\":1480,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/shrink-asm-diskgroup-and-exadata-grid-disks\/#primaryimage\"},\"thumbnailUrl\":\"http:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2014\/11\/Divisao-Discos-Exa-300x91.png\",\"keywords\":[\"ASM\",\"Cell\",\"Diskgroup\",\"Exadata\",\"Grid Disk\",\"Oracle\",\"Storate\"],\"articleSection\":[\"ASM\",\"Banco de Dados\",\"Database\",\"Engineered Systems\",\"Exadata\",\"Oracle\",\"Storage\",\"Storage Server\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.fernandosimon.com\/blog\/shrink-asm-diskgroup-and-exadata-grid-disks\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/shrink-asm-diskgroup-and-exadata-grid-disks\/\",\"url\":\"https:\/\/www.fernandosimon.com\/blog\/shrink-asm-diskgroup-and-exadata-grid-disks\/\",\"name\":\"Shrink ASM Diskgroup and Exadata Grid Disks - Fernando Simon\",\"isPartOf\":{\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/shrink-asm-diskgroup-and-exadata-grid-disks\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/shrink-asm-diskgroup-and-exadata-grid-disks\/#primaryimage\"},\"thumbnailUrl\":\"http:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2014\/11\/Divisao-Discos-Exa-300x91.png\",\"datePublished\":\"2019-06-24T22:15:45+00:00\",\"dateModified\":\"2020-07-19T22:19:09+00:00\",\"author\":{\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/#\/schema\/person\/386da956604bca0d5be5dd52210c1dd9\"},\"description\":\"Check how to Shrink Exadata Grid Disks and ASM diskgroup, check details about ASM extent map and how 16MB aligment can impact the process.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/shrink-asm-diskgroup-and-exadata-grid-disks\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.fernandosimon.com\/blog\/shrink-asm-diskgroup-and-exadata-grid-disks\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/shrink-asm-diskgroup-and-exadata-grid-disks\/#primaryimage\",\"url\":\"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2014\/11\/Divisao-Discos-Exa.png\",\"contentUrl\":\"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2014\/11\/Divisao-Discos-Exa.png\",\"width\":653,\"height\":200},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/shrink-asm-diskgroup-and-exadata-grid-disks\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.fernandosimon.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Shrink ASM Diskgroup and Exadata Grid Disks\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/#website\",\"url\":\"https:\/\/www.fernandosimon.com\/blog\/\",\"name\":\"Fernando Simon\",\"description\":\"Have you hugged your backup today?\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.fernandosimon.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/#\/schema\/person\/386da956604bca0d5be5dd52210c1dd9\",\"name\":\"Simon\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.fernandosimon.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/a3dbc48de62fffb1829befb4a588d789ec6dc5e05977afabb3407a5f37a16482?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/a3dbc48de62fffb1829befb4a588d789ec6dc5e05977afabb3407a5f37a16482?s=96&d=mm&r=g\",\"caption\":\"Simon\"},\"sameAs\":[\"http:\/\/www.fernandosimon.com\"],\"url\":\"https:\/\/www.fernandosimon.com\/blog\/author\/simon\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Shrink ASM Diskgroup and Exadata Grid Disks - Fernando Simon","description":"Check how to Shrink Exadata Grid Disks and ASM diskgroup, check details about ASM extent map and how 16MB aligment can impact the process.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.fernandosimon.com\/blog\/shrink-asm-diskgroup-and-exadata-grid-disks\/","og_locale":"en_US","og_type":"article","og_title":"Shrink ASM Diskgroup and Exadata Grid Disks - Fernando Simon","og_description":"Check how to Shrink Exadata Grid Disks and ASM diskgroup, check details about ASM extent map and how 16MB aligment can impact the process.","og_url":"https:\/\/www.fernandosimon.com\/blog\/shrink-asm-diskgroup-and-exadata-grid-disks\/","og_site_name":"Fernando Simon","article_published_time":"2019-06-24T22:15:45+00:00","article_modified_time":"2020-07-19T22:19:09+00:00","og_image":[{"url":"http:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2014\/11\/Divisao-Discos-Exa-300x91.png","type":"","width":"","height":""}],"author":"Simon","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Simon","Est. reading time":"20 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.fernandosimon.com\/blog\/shrink-asm-diskgroup-and-exadata-grid-disks\/#article","isPartOf":{"@id":"https:\/\/www.fernandosimon.com\/blog\/shrink-asm-diskgroup-and-exadata-grid-disks\/"},"author":{"name":"Simon","@id":"https:\/\/www.fernandosimon.com\/blog\/#\/schema\/person\/386da956604bca0d5be5dd52210c1dd9"},"headline":"Shrink ASM Diskgroup and Exadata Grid Disks","datePublished":"2019-06-24T22:15:45+00:00","dateModified":"2020-07-19T22:19:09+00:00","mainEntityOfPage":{"@id":"https:\/\/www.fernandosimon.com\/blog\/shrink-asm-diskgroup-and-exadata-grid-disks\/"},"wordCount":1480,"commentCount":0,"image":{"@id":"https:\/\/www.fernandosimon.com\/blog\/shrink-asm-diskgroup-and-exadata-grid-disks\/#primaryimage"},"thumbnailUrl":"http:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2014\/11\/Divisao-Discos-Exa-300x91.png","keywords":["ASM","Cell","Diskgroup","Exadata","Grid Disk","Oracle","Storate"],"articleSection":["ASM","Banco de Dados","Database","Engineered Systems","Exadata","Oracle","Storage","Storage Server"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.fernandosimon.com\/blog\/shrink-asm-diskgroup-and-exadata-grid-disks\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.fernandosimon.com\/blog\/shrink-asm-diskgroup-and-exadata-grid-disks\/","url":"https:\/\/www.fernandosimon.com\/blog\/shrink-asm-diskgroup-and-exadata-grid-disks\/","name":"Shrink ASM Diskgroup and Exadata Grid Disks - Fernando Simon","isPartOf":{"@id":"https:\/\/www.fernandosimon.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.fernandosimon.com\/blog\/shrink-asm-diskgroup-and-exadata-grid-disks\/#primaryimage"},"image":{"@id":"https:\/\/www.fernandosimon.com\/blog\/shrink-asm-diskgroup-and-exadata-grid-disks\/#primaryimage"},"thumbnailUrl":"http:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2014\/11\/Divisao-Discos-Exa-300x91.png","datePublished":"2019-06-24T22:15:45+00:00","dateModified":"2020-07-19T22:19:09+00:00","author":{"@id":"https:\/\/www.fernandosimon.com\/blog\/#\/schema\/person\/386da956604bca0d5be5dd52210c1dd9"},"description":"Check how to Shrink Exadata Grid Disks and ASM diskgroup, check details about ASM extent map and how 16MB aligment can impact the process.","breadcrumb":{"@id":"https:\/\/www.fernandosimon.com\/blog\/shrink-asm-diskgroup-and-exadata-grid-disks\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.fernandosimon.com\/blog\/shrink-asm-diskgroup-and-exadata-grid-disks\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.fernandosimon.com\/blog\/shrink-asm-diskgroup-and-exadata-grid-disks\/#primaryimage","url":"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2014\/11\/Divisao-Discos-Exa.png","contentUrl":"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2014\/11\/Divisao-Discos-Exa.png","width":653,"height":200},{"@type":"BreadcrumbList","@id":"https:\/\/www.fernandosimon.com\/blog\/shrink-asm-diskgroup-and-exadata-grid-disks\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.fernandosimon.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Shrink ASM Diskgroup and Exadata Grid Disks"}]},{"@type":"WebSite","@id":"https:\/\/www.fernandosimon.com\/blog\/#website","url":"https:\/\/www.fernandosimon.com\/blog\/","name":"Fernando Simon","description":"Have you hugged your backup today?","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.fernandosimon.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.fernandosimon.com\/blog\/#\/schema\/person\/386da956604bca0d5be5dd52210c1dd9","name":"Simon","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.fernandosimon.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/a3dbc48de62fffb1829befb4a588d789ec6dc5e05977afabb3407a5f37a16482?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a3dbc48de62fffb1829befb4a588d789ec6dc5e05977afabb3407a5f37a16482?s=96&d=mm&r=g","caption":"Simon"},"sameAs":["http:\/\/www.fernandosimon.com"],"url":"https:\/\/www.fernandosimon.com\/blog\/author\/simon\/"}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p5ofTp-82","_links":{"self":[{"href":"https:\/\/www.fernandosimon.com\/blog\/wp-json\/wp\/v2\/posts\/498","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.fernandosimon.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.fernandosimon.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.fernandosimon.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.fernandosimon.com\/blog\/wp-json\/wp\/v2\/comments?post=498"}],"version-history":[{"count":0,"href":"https:\/\/www.fernandosimon.com\/blog\/wp-json\/wp\/v2\/posts\/498\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.fernandosimon.com\/blog\/wp-json\/wp\/v2\/media?parent=498"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.fernandosimon.com\/blog\/wp-json\/wp\/v2\/categories?post=498"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.fernandosimon.com\/blog\/wp-json\/wp\/v2\/tags?post=498"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}