运维联盟俱乐部

 找回密码
 立即注册
查看: 2303|回复: 0

exadata-管理-存储节点-griddisk 大小调整过程及注意事项

[复制链接]

该用户从未签到

发表于 2022-1-21 08:58:11 | 显示全部楼层 |阅读模式

可以通过调整griddisk大小来缩小某个dg的大小,从而扩大其它dg的大小。
Exadata 数据库云服务器磁盘组大小的初始配置基于 Oracle 最佳实践和备份文件的位置。
    对于内部备份:DATA 磁盘组的可用空间分配为 40%,RECO 磁盘组为 60%。
    对于外部备份:DATA 磁盘组的可用空间分配为 80%,RECO 磁盘组为 20%。
部署后可以更改磁盘组分配。例如,DATA 磁盘组分配可能在 60% 时太小,需要将大小调整为 80%。

如果您的系统在单元磁盘上没有可用空间并且一个磁盘组(例如 RECO)有足够的可用空间,那么您可以将 RECO 磁盘组的大小调整为更小的大小,
并将可用空间重新分配给 DATA 磁盘组。收缩 RECO 磁盘组后可用的可用空间与 DATA 磁盘组的现有空间分配存在非连续偏移。
griddisk可以使用单元磁盘上的任何空间,并且不必是连续的。

如果您正在扩展网格磁盘并且单元磁盘已经有足够的空间来扩展现有的网格磁盘,那么您不需要先调整现有磁盘组的大小。
您可以跳过下面的第 2 步和第 3 步,其中示例显示 RECO 磁盘组和网格磁盘已缩小(在增长 DATA 网格磁盘之前,您仍应验证单元磁盘有足够的可用空间)。
管理员应保留的可用空间量取决于故障覆盖率的级别。

如果您正在缩小网格磁盘的大小,您应该了解如何为镜像保留空间。 Oracle ASM 使用正常或高冗余来保护数据,以创建一个或两个数据副本,
这些副本存储为文件扩展区。这些副本存储在单独的故障组中。一个故障组中的故障不会影响镜像副本,因此仍然可以访问数据。

发生故障时,Oracle ASM 会重新镜像或重新平衡任何不可访问的扩展区,以便重新建立冗余。要使重新镜像过程成功,
磁盘组中必须存在足够的可用空间以允许创建新的文件扩展镜像副本。如果没有足够的可用空间,那么某些extent 将不会被重新镜像,
并且随后其他数据副本的故障将需要从备份中恢复磁盘组。当重新镜像进程由于空间不足而失败时,Oracle ASM 会发送错误。

您必须使用 Oracle Exadata 系统软件版本 12.1.2.1.0 或更高版本,或者将针对错误 19695225 的补丁应用于您的软件。

此调整grid disk 大小的过程适用于裸机和虚拟机 (VM) 部署。

1.确定可用空间量
要增加磁盘组中磁盘的大小,您必须有未分配的可用磁盘空间,或者必须重新分配不同磁盘组当前使用的空间。
也可参考“"Script to Calculate New Grid Disk and Disk Group Sizes in Exadata (My Oracle Support Doc ID 1464809.1)" 来通过脚本来统计。
1)查看dg当前的使用情况
SELECT name, total_mb, free_mb, total_mb - free_mb used_mb, round(100*free_mb/total_mb,2) pct_free
FROM v$asm_diskgroup
ORDER BY 1;

NAME                             TOTAL_MB    FREE_MB    USED_MB   PCT_FREE
------------------------------ ---------- ---------- ---------- ----------
DATAC1                           68812800    9985076   58827724      14.51
RECOC1                           94980480   82594920   12385560      86.96

上面的示例显示 DATAC1 磁盘组只有大约 15% 的可用空间,而 RECOC1 磁盘组有大约 87% 的可用磁盘空间。
此处显示的 PCT_FREE 是原始可用空间,而不是可用的可用空间。 重新平衡操作需要额外的空间。

2)对于您计划调整大小的磁盘组,查看磁盘组使用的故障组的计数和状态。(满配,14个cell节点)
<
SELECT dg.name, d.failgroup, d.state, d.header_status, d.mount_mode,
d.mode_status, count(1) num_disks
FROM V$ASM_DISK d, V$ASM_DISKGROUP dg
WHERE d.group_number = dg.group_number
AND dg.name IN ('RECOC1', 'DATAC1')
GROUP BY dg.name, d.failgroup, d.state, d.header_status, d.mount_status,
  d.mode_status
ORDER BY 1, 2, 3;

NAME       FAILGROUP      STATE      HEADER_STATU MOUNT_S  MODE_ST  NUM_DISKS
---------- -------------  ---------- ------------ -------- -------  ---------
DATAC1     EXA01CELADM01  NORMAL     MEMBER        CACHED  ONLINE   12
DATAC1     EXA01CELADM02  NORMAL     MEMBER        CACHED  ONLINE   12
DATAC1     EXA01CELADM03  NORMAL     MEMBER        CACHED  ONLINE   12
DATAC1     EXA01CELADM04  NORMAL     MEMBER        CACHED  ONLINE   12
DATAC1     EXA01CELADM05  NORMAL     MEMBER        CACHED  ONLINE   12
DATAC1     EXA01CELADM06  NORMAL     MEMBER        CACHED  ONLINE   12
DATAC1     EXA01CELADM07  NORMAL     MEMBER        CACHED  ONLINE   12
DATAC1     EXA01CELADM08  NORMAL     MEMBER        CACHED  ONLINE   12
DATAC1     EXA01CELADM09  NORMAL     MEMBER        CACHED  ONLINE   12
DATAC1     EXA01CELADM10  NORMAL     MEMBER        CACHED  ONLINE   12
DATAC1     EXA01CELADM11  NORMAL     MEMBER        CACHED  ONLINE   12
DATAC1     EXA01CELADM12  NORMAL     MEMBER        CACHED  ONLINE   12
DATAC1     EXA01CELADM13  NORMAL     MEMBER        CACHED  ONLINE   12
DATAC1     EXA01CELADM14  NORMAL     MEMBER        CACHED  ONLINE   12
RECOC1     EXA01CELADM01  NORMAL     MEMBER        CACHED  ONLINE   12
RECOC1     EXA01CELADM02  NORMAL     MEMBER        CACHED  ONLINE   12
RECOC1     EXA01CELADM03  NORMAL     MEMBER        CACHED  ONLINE   12
RECOC1     EXA01CELADM04  NORMAL     MEMBER        CACHED  ONLINE   12
RECOC1     EXA01CELADM05  NORMAL     MEMBER        CACHED  ONLINE   12
RECOC1     EXA01CELADM06  NORMAL     MEMBER        CACHED  ONLINE   12
RECOC1     EXA01CELADM07  NORMAL     MEMBER        CACHED  ONLINE   12
RECOC1     EXA01CELADM08  NORMAL     MEMBER        CACHED  ONLINE   12
RECOC1     EXA01CELADM09  NORMAL     MEMBER        CACHED  ONLINE   12
RECOC1     EXA01CELADM10  NORMAL     MEMBER        CACHED  ONLINE   12
RECOC1     EXA01CELADM11  NORMAL     MEMBER        CACHED  ONLINE   12
RECOC1     EXA01CELADM12  NORMAL     MEMBER        CACHED  ONLINE   12
RECOC1     EXA01CELADM13  NORMAL     MEMBER        CACHED  ONLINE   12
RECOC1     EXA01CELADM14  NORMAL     MEMBER        CACHED  ONLINE   12

>

上面的例子是一个完整的机架,它有 14 个单元和 14 个故障组,用于 DATAC1 和 RECOC1。
验证每个故障组至少有 12 个处于 NORMAL 状态的磁盘 (num_disks)。 如果您看到磁盘列为 MISSING,或者您看到配置中的磁盘数量意外,
则在解决问题之前不要继续操作。

Extreme Flash 系统的磁盘数应该是 8 个,而不是 num_disks 的 12 个。

3)列出与每个单元和每个故障组关联的相应网格磁盘,以便您知道要调整哪些网格磁盘的大小。
SELECT dg.name, d.failgroup, d.path
FROM V$ASM_DISK d, V$ASM_DISKGROUP dg
WHERE d.group_number = dg.group_number
AND dg.name IN ('RECOC1', 'DATAC1')
ORDER BY 1, 2, 3;

NAME        FAILGROUP      PATH
----------- -------------  ----------------------------------------------
DATAC1      EXA01CELADM01  o/192.168.74.43/DATAC1_CD_00_exa01celadm01
DATAC1      EXA01CELADM01  o/192.168.74.43/DATAC1_CD_01_exa01celadm01
DATAC1      EXA01CELADM01  o/192.168.74.43/DATAC1_CD_02_exa01celadm01
DATAC1      EXA01CELADM01  o/192.168.74.43/DATAC1_CD_03_exa01celadm01
DATAC1      EXA01CELADM01  o/192.168.74.43/DATAC1_CD_04_exa01celadm01
DATAC1      EXA01CELADM01  o/192.168.74.43/DATAC1_CD_05_exa01celadm01
DATAC1      EXA01CELADM01  o/192.168.74.43/DATAC1_CD_06_exa01celadm01
DATAC1      EXA01CELADM01  o/192.168.74.43/DATAC1_CD_07_exa01celadm01
DATAC1      EXA01CELADM01  o/192.168.74.43/DATAC1_CD_08_exa01celadm01
DATAC1      EXA01CELADM01  o/192.168.74.43/DATAC1_CD_09_exa01celadm01
DATAC1      EXA01CELADM01  o/192.168.74.43/DATAC1_CD_10_exa01celadm01
DATAC1      EXA01CELADM01  o/192.168.74.43/DATAC1_CD_11_exa01celadm01
DATAC1      EXA01CELADM02  o/192.168.74.44/DATAC1_CD_00_exa01celadm01
DATAC1      EXA01CELADM02  o/192.168.74.44/DATAC1_CD_01_exa01celadm01
DATAC1      EXA01CELADM02  o/192.168.74.44/DATAC1_CD_02_exa01celadm01
...
RECOC1      EXA01CELADM13  o/192.168.74.55/RECOC1_CD_00_exa01celadm13
RECOC1      EXA01CELADM13  o/192.168.74.55/RECOC1_CD_01_exa01celadm13
RECOC1      EXA01CELADM13  o/192.168.74.55/RECOC1_CD_02_exa01celadm13
...
RECOC1      EXA01CELADM14  o/192.168.74.56/RECOC1_CD_09_exa01celadm14
RECOC1      EXA01CELADM14  o/192.168.74.56/RECOC1_CD_10_exa01celadm14
RECOC1      EXA01CELADM14  o/192.168.74.56/RECOC1_CD_11_exa01celadm14  

168 rows returned.

4)检查celldisk是否有可用空间。
单元磁盘上的可用空间可用于增加 DATAC1 网格磁盘的大小。 如果没有足够的可用空间来扩展 DATAC1 网格磁盘,
则必须缩小 RECOC1 网格磁盘以为所需的新大小的 DATAC1 网格磁盘提供额外空间。

[root@exa01adm01 tmp]# dcli -g ~/cell_group -l root "cellcli -e list celldisk \
  attributes name,freespace"
exa01celadm01: CD_00_exa01celadm01 0
exa01celadm01: CD_01_exa01celadm01 0
exa01celadm01: CD_02_exa01celadm01 0
exa01celadm01: CD_03_exa01celadm01 0
exa01celadm01: CD_04_exa01celadm01 0
exa01celadm01: CD_05_exa01celadm01 0
exa01celadm01: CD_06_exa01celadm01 0
exa01celadm01: CD_07_exa01celadm01 0
exa01celadm01: CD_08_exa01celadm01 0
exa01celadm01: CD_09_exa01celadm01 0
exa01celadm01: CD_10_exa01celadm01 0
exa01celadm01: CD_11_exa01celadm01 0
...
在此示例中,没有可用空间,因此您必须先收缩 RECOC1 网格磁盘以为 DATAC1 网格磁盘提供空间。
在您的配置中,可能有大量可用空间,您可以使用这些可用空间而不是缩小 RECOC1 网格磁盘。

5)计算从 RECOC1 磁盘组和每个网格磁盘收缩的空间量
安全收缩磁盘组及其网格磁盘的最小大小必须考虑以下因素:
    当前正在使用的空间 (USED_MB)
    预期增长空间 (GROWTH_MB)
    发生磁盘故障时重新平衡所需的空间 (DFC_MB),通常为磁盘组总大小的 15%
            考虑到上述因素的最小尺寸计算为:
            Minimum DG size (MB) = ( USED_MB + GROWTH_MB ) * 1.15
    USED_MB 可以通过计算 TOTAL_MB - FREE_MB 从 V$ASM_DISKGROUP 导出
    GROWTH_MB 是特定于磁盘组未来使用方式的估计值,应基于历史增长模式

对于步骤 1 中显示的 RECOC1 磁盘组空间使用情况,我们看到它可以缩小到假设没有增长估计的最小大小是:
最小 RECOC1 大小 = (TOTAL_MB - FREE_MB + GROWTH_MB) * 1.15
= (94980480 - 82594920 + 0) * 1.15 = 14243394 MB = 13,910 GB

在步骤 1 所示的示例输出中,RECOC1 有足够的可用空间,而 DATAC1 的可用空间不到 15%。因此,您可以缩小 RECOC1 并将释放的磁盘空间分配给 DATAC1。
如果您决定将 RECOC1 减少到其当前大小的一半,则新大小为 94980480 / 2 = 47490240 MB。该大小明显高于我们为上述 RECOC1 磁盘组计算的最小大小,
因此将其缩小到该值是安全的。

步骤 2 中的查询显示 RECOC1 有 168 个网格磁盘,因为有 14 个单元,每个单元有 12 个磁盘 (14 * 12 = 168)。
RECOC1 磁盘组的每个网格磁盘的估计新大小为 47490240 / 168,即 282,680 MB。

为新的网格磁盘大小找到最接近的 16 MB 边界。如果不执行此检查,则单元格将自动将网格磁盘大小四舍五入到最接近的 16 MB 边界
,并且最终可能导致 Oracle ASM 磁盘和网格磁盘之间的大小不匹配。

SQL> SELECT 16*TRUNC(&new_disk_size/16) new_disk_size FROM dual;
Enter value for new_disk_size: 282680

NEW_DISK_SIZE
-------------
       282672

根据以上结果,您应该选择 282672 MB 作为 RECOC1 磁盘组中网格磁盘的新大小。 调整网格磁盘的大小后,RECOC1 磁盘组的大小将为 47488896 MB。

6)计算增加 DATAC1 磁盘组中每个网格磁盘的大小。
确保 Oracle ASM 磁盘大小和网格磁盘大小在整个磁盘组中匹配。 以下查询显示了每个磁盘组中磁盘大小的组合。
理想情况下,只为所有磁盘找到一种大小,并且 Oracle ASM (total_mb) 磁盘和网格磁盘 (os_mb) 的大小都匹配。

SELECT dg.name, d.total_mb, d.os_mb, count(1) num_disks
FROM v$asm_diskgroup dg, v$asm_disk d
WHERE dg.group_number = d.group_number
GROUP BY dg.name, d.total_mb, d.os_mb;

NAME                             TOTAL_MB      OS_MB  NUM_DISKS
------------------------------ ---------- ---------- ----------
DATAC1                             409600     409600        168
RECOC1                             565360     565360        168

After shrinking RECOC1's grid disks, the following space is left per disk for DATAC1:

Additional space for DATAC1 disks = RECOC1_current_size - RECOC1_new_size
                                                       = 565360 - 282672 = 282688 MB

To calculate the new size of the grid disks for the DATAC1 disk group, use the following:

DATAC1's disks new size  = DATAC1_ disks_current_size + new_free_space_from_RECOC1
                                          = 409600 + 282688 = 692288 MB

为新的网格磁盘大小找到最接近的 16 MB 边界。 如果不执行此检查,则单元格将自动将网格磁盘大小四舍五入到最接近的 16 MB 边界,
并且最终可能导致 Oracle ASM 磁盘和网格磁盘之间的大小不匹配。
SQL> SELECT 16*TRUNC(&new_disk_size/16) new_disk_size FROM dual;
Enter value for new_disk_size: 692288

NEW_DISK_SIZE
-------------
       692288

根据查询结果,您可以为 DATAC1 磁盘组中的磁盘使用计算出的 692288 MB 大小,因为该大小在 16 MB 的边界上。 如果查询的结果与您提供的值不同,
那么您必须使用查询返回的值,因为这是单元格将网格磁盘大小四舍五入的值。

新网格磁盘大小的计算值将导致 DATAC1 磁盘组的总大小为 116304384 MB(168 个磁盘 * 692288 MB)。

2.收缩DG中的asm disk 磁盘大小
如果cell disk 没有多余空间提供,那么需要通过收缩其它DG的磁盘空间来释放出额外空间给要扩容的DG用

此任务是 RECOC1 磁盘组中的空间被重新分配给 DATAC1 磁盘组的示例的延续。
在调整磁盘组大小之前,请确保要从中获取空间的磁盘组有足够的可用空间。
1)将 RECO 磁盘组的 Oracle ASM 磁盘缩小到所有磁盘所需的新大小。
使用在确定可用空间量的步骤 5 中计算的 RECO 磁盘组中磁盘的新大小。


SQL> ALTER DISKGROUP recoc1 RESIZE ALL SIZE 282672M REBALANCE POWER 64;

注意:ALTER DISKGROUP 命令可能需要几分钟才能完成。 在此操作完成之前,SQL 提示不会返回。
如果指定的磁盘组在磁盘组中配置了仲裁磁盘,则 ALTER DISKGROUP ... RESIZE ALL 命令可能会失败,并出现错误 ORA-15277。
如果满足管理高冗余磁盘组的仲裁磁盘中指定的要求,则配置仲裁磁盘。 作为一种解决方法,
您可以在 SQL 命令中显式指定存储服务器故障组名称(对于 FAILURE_TYPE 为 REGULAR,而不是 QUORUM 的),例如
SQL> ALTER DISKGROUP recoc1 RESIZE DISKS IN FAILGROUP exacell01 SIZE 282672M,exacell02 SIZE 282672M,
  exacell03 SIZE 282672M REBALANCE POWER 64;

通过检查视图 GV$ASM_OPERATION 等待重新平衡完成。
SQL> set lines 250 pages 1000
SQL> col error_code form a10
SQL> SELECT dg.name, o.*
  2  FROM gv$asm_operation o, v$asm_diskgroup dg
  3  WHERE o.group_number = dg.group_number;

仅当针对 GV$ASM_OPERATION 的查询未显示正在更改的磁盘组的行时,才继续执行下一步。

2)用下面命令校验asm disk 的新大小
SQL> SELECT name, total_mb, free_mb, total_mb - free_mb used_mb,
  2   ROUND(100*free_mb/total_mb,2) pct_free
  3  FROM v$asm_diskgroup
  4  ORDER BY 1;

NAME                             TOTAL_MB    FREE_MB    USED_MB   PCT_FREE
------------------------------ ---------- ---------- ---------- ----------
DATAC1                           68812800    9985076   58827724      14.51
RECOC1                           47488896   35103336   12385560      73.92

SQL> SELECT dg.name, d.total_mb, d.os_mb, COUNT(1) num_disks
  2  FROM v$asm_diskgroup dg, v$asm_disk d
  3  WHERE dg.group_number = d.group_number
  4  GROUP BY dg.name, d.total_mb, d.os_mb;

NAME                             TOTAL_MB      OS_MB  NUM_DISKS
------------------------------ ---------- ---------- ----------
DATAC1                             409600     409600        168
RECOC1                             282672     565360        168

上述查询示例显示,RECOC1 磁盘组中的磁盘已调整大小为每个 282672 MG,磁盘组总大小为 47488896 MB。

3.收缩dg中的grid disk 大小
收缩 Oracle ASM 磁盘组中的磁盘后,您可以收缩每个单元上的网格磁盘的大小。

此任务是 RECOC1 磁盘组中的空间被重新分配给 DATAC1 磁盘组的示例的延续。

1)将所有单元上与 RECO 磁盘组关联的网格磁盘缩小到新的更小的大小
对于在步骤 3 中确定可用空间量中标识的每个存储单元,缩小网格磁盘以匹配在上一个任务中缩小的 Oracle ASM 磁盘的大小。 使用类似于以下的命令:
dcli -c exa01celadm01 -l root "cellcli -e alter griddisk RECOC1_CD_00_exa01celadm01 \
,RECOC1_CD_01_exa01celadm01 \
,RECOC1_CD_02_exa01celadm01 \
,RECOC1_CD_03_exa01celadm01 \
,RECOC1_CD_04_exa01celadm01 \
,RECOC1_CD_05_exa01celadm01 \
,RECOC1_CD_06_exa01celadm01 \
,RECOC1_CD_07_exa01celadm01 \
,RECOC1_CD_08_exa01celadm01 \
,RECOC1_CD_09_exa01celadm01 \
,RECOC1_CD_10_exa01celadm01 \
,RECOC1_CD_11_exa01celadm01 \
size=282672M "

dcli -c exa01celadm02 -l root "cellcli -e alter griddisk RECOC1_CD_00_exa01celadm02 \
,RECOC1_CD_01_exa01celadm02 \
,RECOC1_CD_02_exa01celadm02 \
,RECOC1_CD_03_exa01celadm02 \
,RECOC1_CD_04_exa01celadm02 \
,RECOC1_CD_05_exa01celadm02 \
,RECOC1_CD_06_exa01celadm02 \
,RECOC1_CD_07_exa01celadm02 \
,RECOC1_CD_08_exa01celadm02 \
,RECOC1_CD_09_exa01celadm02 \
,RECOC1_CD_10_exa01celadm02 \
,RECOC1_CD_11_exa01celadm02 \
size=282672M "

...

dcli -c exa01celadm14 -l root "cellcli -e alter griddisk RECOC1_CD_00_exa01celadm14 \
,RECOC1_CD_01_exa01celadm14 \
,RECOC1_CD_02_exa01celadm14 \
,RECOC1_CD_03_exa01celadm14 \
,RECOC1_CD_04_exa01celadm14 \
,RECOC1_CD_05_exa01celadm14 \
,RECOC1_CD_06_exa01celadm14 \
,RECOC1_CD_07_exa01celadm14 \
,RECOC1_CD_08_exa01celadm14 \
,RECOC1_CD_09_exa01celadm14 \
,RECOC1_CD_10_exa01celadm14 \
,RECOC1_CD_11_exa01celadm14 \
size=282672M "

2)检查grid disk 的新大小
[root@exa01adm01 tmp]# dcli -g cell_group -l root "cellcli -e list griddisk attributes name,size where name like \'RECOC1.*\' "

exa01celadm01: RECOC1_CD_00_exa01celadm01 276.046875G
exa01celadm01: RECOC1_CD_01_exa01celadm01 276.046875G
exa01celadm01: RECOC1_CD_02_exa01celadm01 276.046875G
exa01celadm01: RECOC1_CD_03_exa01celadm01 276.046875G
exa01celadm01: RECOC1_CD_04_exa01celadm01 276.046875G
exa01celadm01: RECOC1_CD_05_exa01celadm01 276.046875G
exa01celadm01: RECOC1_CD_06_exa01celadm01 276.046875G
exa01celadm01: RECOC1_CD_07_exa01celadm01 276.046875G
exa01celadm01: RECOC1_CD_08_exa01celadm01 276.046875G
exa01celadm01: RECOC1_CD_09_exa01celadm01 276.046875G
exa01celadm01: RECOC1_CD_10_exa01celadm01 276.046875G
exa01celadm01: RECOC1_CD_11_exa01celadm01 276.046875G  
...

上面的示例显示 RECOC1 磁盘组中的磁盘已调整为每个大小为 282672 MB (276.046875 * 1024)。

4.将可用空间增加到grid disk上
如果有未分配的磁盘空间已经可用,或者通过缩小不同 Oracle ASM 磁盘组使用的空间而变得可用,则可以增加网格磁盘使用的大小。

此任务是 RECOC1 磁盘组中的空间被重新分配给 DATAC1 磁盘组的示例的延续。 如果您已经有足够的空间来扩展现有磁盘组,则无需从不同的磁盘组重新分配空间。

1)检查单元磁盘是否具有预期的可用空间量。
完成收缩 Oracle ASM 磁盘和网格磁盘的任务后,您会在单元磁盘上看到以下可用空间:
[root@exa01adm01 tmp]# dcli -g ~/cell_group -l root "cellcli -e list celldisk \
attributes name,freespace"

exa01celadm01: CD_00_exa01celadm01 276.0625G
exa01celadm01: CD_01_exa01celadm01 276.0625G
exa01celadm01: CD_02_exa01celadm01 276.0625G
exa01celadm01: CD_03_exa01celadm01 276.0625G
exa01celadm01: CD_04_exa01celadm01 276.0625G
exa01celadm01: CD_05_exa01celadm01 276.0625G
exa01celadm01: CD_06_exa01celadm01 276.0625G
exa01celadm01: CD_07_exa01celadm01 276.0625G
exa01celadm01: CD_08_exa01celadm01 276.0625G
exa01celadm01: CD_09_exa01celadm01 276.0625G
exa01celadm01: CD_10_exa01celadm01 276.0625G
exa01celadm01: CD_11_exa01celadm01 276.0625G
...

2)在每个cell上为data dg的grid disk 增加到期望的大小
参考在步骤1中确定可用空间量中计算的大小。
dcli -c exa01celadm01 -l root "cellcli -e alter griddisk DATAC1_CD_00_exa01celadm01 \
,DATAC1_CD_01_exa01celadm01 \
,DATAC1_CD_02_exa01celadm01 \
,DATAC1_CD_03_exa01celadm01 \
,DATAC1_CD_04_exa01celadm01 \
,DATAC1_CD_05_exa01celadm01 \
,DATAC1_CD_06_exa01celadm01 \
,DATAC1_CD_07_exa01celadm01 \
,DATAC1_CD_08_exa01celadm01 \
,DATAC1_CD_09_exa01celadm01 \
,DATAC1_CD_10_exa01celadm01 \
,DATAC1_CD_11_exa01celadm01 \
size=692288M "
...
dcli -c exa01celadm14 -l root "cellcli -e alter griddisk DATAC1_CD_00_exa01celadm14 \
,DATAC1_CD_01_exa01celadm14 \
,DATAC1_CD_02_exa01celadm14 \
,DATAC1_CD_03_exa01celadm14 \
,DATAC1_CD_04_exa01celadm14 \
,DATAC1_CD_05_exa01celadm14 \
,DATAC1_CD_06_exa01celadm14 \
,DATAC1_CD_07_exa01celadm14 \
,DATAC1_CD_08_exa01celadm14 \
,DATAC1_CD_09_exa01celadm14 \
,DATAC1_CD_10_exa01celadm14 \
,DATAC1_CD_11_exa01celadm14 \
size=692288M "

3)校验DATAC1关联的griddisk大小也生效

dcli -g cell_group -l root "cellcli -e list griddisk attributes name,size \
where name like \'DATAC1.*\' "

exa01celadm01: DATAC1_CD_00_exa01celadm01 676.0625G
exa01celadm01: DATAC1_CD_01_exa01celadm01 676.0625G
exa01celadm01: DATAC1_CD_02_exa01celadm01 676.0625G
exa01celadm01: DATAC1_CD_03_exa01celadm01 676.0625G
exa01celadm01: DATAC1_CD_04_exa01celadm01 676.0625G
exa01celadm01: DATAC1_CD_05_exa01celadm01 676.0625G
exa01celadm01: DATAC1_CD_06_exa01celadm01 676.0625G
exa01celadm01: DATAC1_CD_07_exa01celadm01 676.0625G
exa01celadm01: DATAC1_CD_08_exa01celadm01 676.0625G
exa01celadm01: DATAC1_CD_09_exa01celadm01 676.0625G
exa01celadm01: DATAC1_CD_10_exa01celadm01 676.0625G
exa01celadm01: DATAC1_CD_11_exa01celadm01 676.0625G

除了增加 DATA 磁盘组的大小之外,您还可以使用新的可用空间创建新磁盘组,或者保留它以供将来使用。 通常,Oracle 建议使用所需的最少数量的磁盘组
(通常是 DATA、RECO 和 DBFS_DG),以提供最大的灵活性和易于管理。 但是,在某些情况下,可能在使用虚拟机或整合许多数据库时,
可能需要额外的磁盘组或可用空间以供将来使用。

如果您决定在网格磁盘上保留可用空间以供将来使用,请参阅 My Oracle Support 说明 1684112.1,了解稍后如何将可用空间分配给现有磁盘组的步骤。

5.扩容DG 中的asm disk 大小
在增加分配给关联网格磁盘的空间后,您可以增加 Oracle ASM 磁盘使用的大小。

此任务是 RECOC1 磁盘组中的空间被重新分配给 DATAC1 磁盘组的示例的延续。
您必须先完成调整网格磁盘大小的任务,然后才能调整相应的 Oracle ASM 磁盘组的大小。

1)增加DATAC1中asm disk大小
SQL> ALTER DISKGROUP datac1 RESIZE ALL;
此命令调整 Oracle ASM 磁盘的大小以匹配网格磁盘的大小。

注意:如果指定的磁盘组在磁盘组中配置了仲裁磁盘,则 ALTER DISKGROUP ... RESIZE ALL 命令可能会失败,并出现错误 ORA-15277。
如果满足 Oracle Exadata Database Machine 维护指南中指定的要求,则会配置仲裁磁盘。

作为一种解决方法,您可以在 SQL 命令中显式指定存储服务器故障组名称(对于 FAILURE_TYPE "REGULAR",而不是 "QUORUM"),例如:
SQL> ALTER DISKGROUP datac1 RESIZE DISKS IN FAILGROUP exacell01, exacell02, exacell03;

2)等待rebalance 完成
SQL> set lines 250 pages 1000
SQL> col error_code form a10
SQL> SELECT dg.name, o.* FROM gv$asm_operation o, v$asm_diskgroup dg
     WHERE o.group_number = dg.group_number;
在查询为已更改的磁盘组返回零行之前,不要继续下一步。

3)校验新的大小已生效
SQL> SELECT name, total_mb, free_mb, total_mb - free_mb used_mb,
     ROUND(100*free_mb/total_mb,2) pct_free
     FROM v$asm_diskgroup
     ORDER BY 1;

NAME                             TOTAL_MB    FREE_MB    USED_MB   PCT_FREE
------------------------------ ---------- ---------- ---------- ----------
DATAC1                          116304384   57439796   58864588      49.39
RECOC1                           47488896   34542516   12946380      72.74

SQL>  SELECT dg.name, d.total_mb, d.os_mb, COUNT(1) num_disks
      FROM  v$asm_diskgroup dg, v$asm_disk d
      WHERE dg.group_number = d.group_number
      GROUP BY dg.name, d.total_mb, d.os_mb;

NAME                             TOTAL_MB      OS_MB  NUM_DISKS
------------------------------ ---------- ---------- ----------
DATAC1                             692288     692288        168
RECOC1                             282672     282672        168


查询结果显示 RECOC1 和 DATAC1 磁盘组和磁盘已调整大小。


回复

使用道具 举报

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

本版积分规则

运维联盟俱乐部 ( 冀ICP备19036648号 )

GMT+8, 2024-5-14 20:48 , Processed in 0.054132 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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