Beginning with the 12.1.0.2 version, ASM enforces automatically equal disk size within a normal or high redundancy ASM disk group. In the former releases it was in any case a best practice to use equally sized disks within a disk group (amongst other things to avoid the "ORA-15041: diskgroup space exhausted" error), but now it will be even enforced.

If you try to create a new normal or high redundancy disk group with unequal disk sizes, you will hit the ORA-15041 error (independent of the disk group compatible setting):

SQL> CREATE DISKGROUP u8910 NORMAL REDUNDANCY
  2    FAILGROUP FG1 DISK '/dev/mapper/u9810_01_fg1p1'
  3    FAILGROUP FG2 DISK '/dev/mapper/u9810_01_fg2p1' SIZE 200G
  4  ATTRIBUTE 'compatible.asm'  ='10.1.0.0.0',
  5            'compatible.rdbms'='10.1.0.0.0';
CREATE DISKGROUP u8910 NORMAL REDUNDANCY
*
ERROR at line 1:
ORA-15018: diskgroup cannot be created
ORA-15410: Disks in disk group U8910 do not have equal size.

SQL> CREATE DISKGROUP u8910 NORMAL REDUNDANCY
  2    FAILGROUP FG1 DISK '/dev/mapper/u9810_01_fg1p1'
  3    FAILGROUP FG2 DISK '/dev/mapper/u9810_01_fg2p1' SIZE 200G
  4  ATTRIBUTE 'compatible.asm'  ='12.1.0.2.0',
  5            'compatible.rdbms'='12.1.0.2.0';
CREATE DISKGROUP u8910 NORMAL REDUNDANCY
*
ERROR at line 1:
ORA-15018: diskgroup cannot be created
ORA-15410: Disks in disk group U8910 do not have equal size.

The same applies, in case you try to add new unequally sized disks or perform a disk resize operation:
 
 SQL> ALTER DISKGROUP u8910 RESIZE DISK u8910_0000 SIZE 300G;
ALTER DISKGROUP u8910 RESIZE DISK u8910_0000 SIZE 300G
*
ERROR at line 1:
ORA-15032: not all alterations performed
ORA-15410: Disks in disk group U8910 do not have equal size.


Though, the disk size check will not be performed for external redundancy disk groups:

SQL> CREATE DISKGROUP u8910 EXTERNAL REDUNDANCY
  2    DISK '/dev/mapper/u9810_01p1',
  3         '/dev/mapper/u9810_02p1' SIZE 200G
  4  ATTRIBUTE 'compatible.asm'  ='12.1.0.2.0',
  5            'compatible.rdbms'='12.1.0.2.0';
 
Diskgroup created.
 
SQL> ALTER DISKGROUP u8910 ADD DISK '/dev/mapper/u9810_03p1' SIZE 100G;
 
Diskgroup altered.

SQL> SELECT g.name DG_NAME, d.path PATH, d.total_mb DISK_SIZE_MB,
  2         g.database_compatibility DB_COMPATIBILITY,
  3         g.compatibility ASM_COMPATIBILITY
  4  FROM v$asm_disk d, v$asm_diskgroup g
  5  WHERE g.group_number=d.group_number
  6  AND   g.name='U8910';


DG_NAME PATH                             DISK_SIZE_MB DB_COMPATIBILITY ASM_COMPATIBILITY
------- ------------------------------ -------------- ---------------- -----------------
U8910   /dev/mapper/u9810_02p1                 204800 12.1.0.2.0       12.1.0.2.0
U8910   /dev/mapper/u9810_03p1                 102400 12.1.0.2.0       12.1.0.2.0
U8910   /dev/mapper/u9810_01p1                 409594 12.1.0.2.0       12.1.0.2.0
 
3 rows selected.
 

If you need to replace all ASM disks in a disk group, with bigger ones, combine the drop and add operation within one command:

SQL> SELECT g.name DG_NAME, d.path PATH, d.total_mb DISK_SIZE_MB,
  2         g.database_compatibility DB_COMPATIBILITY,
  3         g.compatibility ASM_COMPATIBILITY
  4  FROM v$asm_disk d, v$asm_diskgroup g
  5  WHERE g.group_number=d.group_number
  6  AND   g.name='U8910';
 
DG_NAME PATH                             DISK_SIZE_MB DB_COMPATIBILITY ASM_COMPATIBILITY
------- ------------------------------ -------------- ---------------- -----------------
U8910   /dev/mapper/u9810_01_fg1p1             204800 12.1.0.2.0       12.1.0.2.0
U8910   /dev/mapper/u9810_01_fg2p1             204800 12.1.0.2.0       12.1.0.2.0
 
2 rows selected.
 
SQL> ALTER DISKGROUP u8910 DROP DISK u8910_0000,u8910_0001 ADD
  2    FAILGROUP FG1 DISK '/dev/mapper/u9810_02_fg1p1'SIZE 300G
  3    FAILGROUP FG2 DISK '/dev/mapper/u9810_02_fg2p1' SIZE 300G;
 
Diskgroup altered.
 
SQL> SELECT g.name DG_NAME, d.path PATH, d.total_mb DISK_SIZE_MB, d.state
  3  FROM v$asm_disk d, v$asm_diskgroup g
  4  WHERE g.group_number=d.group_number
  5  AND   g.name='U8910';
 
DG_NAME PATH                         DISK_SIZE_MB STATE
------- -------------------------- -------------- --------
U8910   /dev/mapper/u9810_02_fg1p1         307200 NORMAL
U8910   /dev/mapper/u9810_01_fg1p1         204800 DROPPING
U8910   /dev/mapper/u9810_02_fg2p1         307200 NORMAL
U8910   /dev/mapper/u9810_01_fg2p1         204800 DROPPING

Other option would be to add the new disks restricting the size (to match the old ones), drop the old disks and then resize the new ones to the OS size:

SQL> ALTER DISKGROUP u8910 RESIZE ALL;