meta données pour cette page
  •  

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
oracle:asm:migrate_diskgroup_disk [26/10/2025 15:29] mdloracle:asm:migrate_diskgroup_disk [26/10/2025 20:05] (Version actuelle) mdl
Ligne 1: Ligne 1:
 ====== Migrer les données d'un diskgroup ====== ====== Migrer les données d'un diskgroup ======
 == 1/ Diskgroup redondance normale == == 1/ Diskgroup redondance normale ==
-Il s'agit du diskgroup **DATA** avec redondance normale sur 3 disques+Il s'agit du diskgroup **DATA** avec redondance //normal// sur 3 disques (perte 1 disque toléré)
  
   * Afficher l'articulation des DISKGROUP:   * Afficher l'articulation des DISKGROUP:
Ligne 73: Ligne 73:
 [root@oracle2 bin]# oracleasm createdisk ASM_DATA5 /dev/sdi1 [root@oracle2 bin]# oracleasm createdisk ASM_DATA5 /dev/sdi1
 [root@oracle2 bin]# oracleasm createdisk ASM_DATA6 /dev/sdj1 [root@oracle2 bin]# oracleasm createdisk ASM_DATA6 /dev/sdj1
 +</code>
 +
 +
 +  * on rafraichi les disques ASM sur l'autre noeud RAC
 +<code BASH>
 +[root@oracle3 ~]# oracleasm scandisks
 +Reloading disk partitions: done
 +Cleaning any stale ASM disks...
 +Scanning system for ASM disks...
 +Instantiating disk "ASM_DATA4"
 +Instantiating disk "ASM_DATA5"
 +Instantiating disk "ASM_DATA6"
 +[root@oracle3 ~]# 
 +[root@oracle3 ~]# 
 +[root@oracle3 ~]# oracleasm listdisks
 +ASM_DATA1
 +ASM_DATA2
 +ASM_DATA3
 +ASM_DATA4
 +ASM_DATA5
 +ASM_DATA6
 +ASM_FRA1
 +ASM_FRA2
 +ASM_OCR1
 +ASM_OCR2
 +ASM_OCR3
 + 
 </code> </code>
  
Ligne 198: Ligne 225:
  
 10 rows selected. 10 rows selected.
-</code> 
  
-<code PLSQL>+ 
 alter diskgroup DATA drop disk DATA_0002,DATA_0001,DATA_0000 rebalance power 50; alter diskgroup DATA drop disk DATA_0002,DATA_0001,DATA_0000 rebalance power 50;
 </code> </code>
Ligne 231: Ligne 258:
 SQL> select * from v$asm_operation; SQL> select * from v$asm_operation;
 no rows selected no rows selected
 +</code>
  
   * une fois terminé, les disques enlevés sont en **MOUNT_STATE=CLOSED**   * une fois terminé, les disques enlevés sont en **MOUNT_STATE=CLOSED**
 +<code PLSQL>
 SQL> set lines 1000 SQL> set lines 1000
 col PATH format A50 col PATH format A50
 col FAILGROUP_TYPE format A20 col FAILGROUP_TYPE format A20
-select PATH,MOUNT_STATUS,MODE_STATUS,STATE,REDUNDANCY,TOTAL_MB/1024 "TOTAL GB",FREE_MB/1024 "FREE GB",FAILGROUP_TYPE from v$asm_disk;SQL> SQL> SQL> +select PATH,MOUNT_STATUS,MODE_STATUS,STATE,REDUNDANCY,TOTAL_MB/1024 "TOTAL GB",FREE_MB/1024 "FREE GB",FAILGROUP_TYPE from v$asm_disk;
  
 PATH    MOUNT_S MODE_ST STATE    REDUNDA   TOTAL GB   FREE GB FAILGROUP_TYPE PATH    MOUNT_S MODE_ST STATE    REDUNDA   TOTAL GB   FREE GB FAILGROUP_TYPE
Ligne 304: Ligne 332:
 </code> </code>
  
 +
 +== 2/ Diskgroup redondance external ==
 +Il s'agit du diskgroup **FRA** avec redondance //external// sur 1 disque (perte 0 disque toléré)
 +
 +  * Afficher l'articulation des DISKGROUP:
 +<code PLSQL>
 +SQL>
 +SET lines 800
 +column disk_group_name format a30
 +column PATH format a50
 +column disk_file_name format a30
 +column FAILGROUP_TYPE format a20
 +SELECT NVL(a.name, '[CANDIDATE]') disk_group_name, b.PATH, b.name disk_file_name, a.TYPE
 +FROM v$asm_diskgroup a RIGHT OUTER JOIN v$asm_disk b USING (group_number)
 +ORDER BY a.name;
 +
 +
 +DISK_GROUP_NAME        PATH   DISK_FILE_NAME TYPE
 +------------------------------ -------------------------------------------------- ------------------------------ ------
 +DATA        /dev/oracleasm/disks/ASM_DATA1   DATA_0000 NORMAL
 +DATA        /dev/oracleasm/disks/ASM_DATA2   DATA_0001 NORMAL
 +DATA        /dev/oracleasm/disks/ASM_DATA3   DATA_0002 NORMAL
 +FRA        /dev/oracleasm/disks/ASM_FRA1   FRA_0000 EXTERN
 +OCR        /dev/oracleasm/disks/ASM_OCR2   OCR_0001 NORMAL
 +OCR        /dev/oracleasm/disks/ASM_OCR1   OCR_0002 NORMAL
 +OCR        /dev/oracleasm/disks/ASM_OCR3   OCR_0000 NORMAL
 +
 +</code>
 +
 +  * Afficher l'espace disque des DISKGROUP:
 +<code PLSQL>
 +SQL>
 +set lines 1000
 +column "Diskgroup" format A30
 +column "Imbalance" format 99.9 Heading "Percent|Imbalance"
 +column "Variance" format 99.9 Heading "Percent|Disk Size|Variance"
 +column "MinFree" format 99.9 Heading "Minimum|Percent|Free"
 +column "DiskCnt" format 9999 Heading "Disk|Count"
 +column "Type" format A10 Heading "Diskgroup|Redundancy"
 +SELECT g.name "Diskgroup",
 +  100*(max((d.total_mb-d.free_mb)/d.total_mb)-min((d.total_mb-d.free_mb)/d.total_mb))/max((d.total_mb-d.free_mb)/d.total_mb) "Imbalance",
 +  100*(max(d.total_mb)-min(d.total_mb))/max(d.total_mb) "Variance",
 +  100*(min(d.free_mb/d.total_mb)) "MinFree",
 +  count(*) "DiskCnt",
 +  g.type "Type"
 +FROM v$asm_disk d, v$asm_diskgroup g
 +WHERE d.group_number = g.group_number and
 +  d.group_number <> 0 and
 +  d.state = 'NORMAL' and
 +  d.mount_status = 'CACHED'
 +GROUP BY g.name, g.type;
 +
 +
 +    Percent Minimum
 + Percent Disk Size Percent  Disk Diskgroup
 +Diskgroup        Imbalance  Variance    Free Count Redundancy
 +------------------------------ --------- --------- ------- ----- ----------
 +FRA       .0 .0    89.6     1 EXTERN
 +OCR      2.4 .0    96.8     3 NORMAL
 +DATA       .0 .0    60.6     3 NORMAL
 +</code>
 +
 +
 +  * initialisation ASM:
 +<code BASH>
 +[root@oracle2 bin]# oracleasm createdisk ASM_FRA2 /dev/sdk1
 +Writing disk header: done
 +Instantiating disk: done
 +
 +[root@oracle2 bin]# oracleasm listdisks
 +ASM_DATA1
 +ASM_DATA2
 +ASM_DATA3
 +ASM_DATA4
 +ASM_DATA5
 +ASM_DATA6
 +ASM_FRA1
 +ASM_FRA2
 +ASM_OCR1
 +ASM_OCR2
 +ASM_OCR3
 +
 +</code>
 +
 +  * on rafraichi les disques ASM sur l'autre noeud RAC
 +<code BASH>
 +[root@oracle3 ~]# oracleasm scandisks
 +Reloading disk partitions: done
 +Cleaning any stale ASM disks...
 +Scanning system for ASM disks...
 +Instantiating disk "ASM_FRA2"
 +[root@oracle3 ~]# 
 +[root@oracle3 ~]# 
 +[root@oracle3 ~]# oracleasm listdisks
 +ASM_DATA4
 +ASM_DATA5
 +ASM_DATA6
 +ASM_FRA1
 +ASM_FRA2
 +ASM_OCR1
 +ASM_OCR2
 +ASM_OCR3
 + 
 +</code>
 +
 +  * vérification de la disponibilité dans ASM
 +<code PLSQL>
 +SQL>
 +set lines 800
 +col disk_file_path format A40
 +SELECT a.name disk_group_name
 + , b.path disk_file_path
 + , b.name disk_file_name
 + , b.failgroup disk_file_fail_group
 +FROM  v$asm_diskgroup a RIGHT OUTER JOIN v$asm_disk b USING (group_number)
 +ORDER BY a.name;
 +
 +DISK_GROUP_NAME        DISK_FILE_PATH DISK_FILE_NAME        DISK_FILE_FAIL_GROUP
 +------------------------------ ---------------------------------------- ------------------------------ ------------------------------
 +DATA        /dev/oracleasm/disks/ASM_DATA6 DATA_0005        DATA_0005
 +DATA        /dev/oracleasm/disks/ASM_DATA5 DATA_0004        DATA_0004
 +DATA        /dev/oracleasm/disks/ASM_DATA4 DATA_0003        DATA_0003
 +FRA        /dev/oracleasm/disks/ASM_FRA1 FRA_0000        FRA_0000
 +OCR        /dev/oracleasm/disks/ASM_OCR1 OCR_0002        OCR_0002
 +OCR        /dev/oracleasm/disks/ASM_OCR3 OCR_0000        OCR_0000
 +OCR        /dev/oracleasm/disks/ASM_OCR2 OCR_0001        OCR_0001
 +        /dev/oracleasm/disks/ASM_FRA2
 +</code>
 +
 +  * ajout au Diskgroup **FRA** et  //rebalance// des données.
 +     
 +<code PLSQL>
 +SQL> alter diskgroup FRA add disk '/dev/oracleasm/disks/ASM_FRA2' rebalance power 20;
 +
 +Diskgroup altered.
 +</code>
 +
 +
 +  * suivi de l'opération
 +<code PLSQL>
 +SQL> select * from v$asm_operation;
 +
 +GROUP_NUMBER OPERA PASS      STAT      POWER ACTUAL      SOFAR   EST_WORK EST_RATE EST_MINUTES ERROR_CODE       CON_ID
 +------------ ----- --------- ---- ---------- ---------- ---------- ---------- ---------- ----------- -------------------------------------------- ----------
 +    2 REBAL COMPACT   RUN   20      20 28     0        0    0    0
 +    2 REBAL REBALANCE DONE   20      20       2129 2129        0    0    0
 +    2 REBAL REBUILD   DONE   20      20 0     0        0    0    0
 +
 +
 +</code>
 +
 +
 +
 +  * suppression du disque du DISKGROUP
 +<code PLSQL>
 +ALTER diskgroup FRA DROP disk FRA_0000 rebalance POWER 50;
 +
 +Diskgroup altered.
 +
 +</code>
 +
 +suivi de la suppression
 +<code PLSQL>
 +SQL> select * from v$asm_operation;
 +
 +GROUP_NUMBER OPERA PASS      STAT      POWER ACTUAL      SOFAR   EST_WORK EST_RATE EST_MINUTES ERROR_CODE       CON_ID
 +------------ ----- --------- ---- ---------- ---------- ---------- ---------- ---------- ----------- -------------------------------------------- ----------
 +    2 REBAL COMPACT   WAIT   50      50 0     0        0    0    0
 +    2 REBAL REBALANCE RUN   50      50       1201 2133    83095    0    0
 +    2 REBAL REBUILD   DONE   50      50 0     0        0    0    
 +</code>
 +
 +
 +  * une fois terminé, le disque a supprimer n'est plus membre d'un diskgroup
 +<code PLSQL>
 +SQL> set lines 800
 +col disk_file_path format A40
 +SELECT a.name disk_group_name
 + , b.path disk_file_path
 + , b.name disk_file_name
 + , b.failgroup disk_file_fail_group
 +FROM  v$asm_diskgroup a RIGHT OUTER JOIN v$asm_disk b USING (groSQL> SQL>      3  up_number)
 +ORDER BY a.name;  4    5    6  
 +
 +DISK_GROUP_NAME        DISK_FILE_PATH DISK_FILE_NAME        DISK_FILE_FAIL_GROUP
 +------------------------------ ---------------------------------------- ------------------------------ ------------------------------
 +DATA        /dev/oracleasm/disks/ASM_DATA5 DATA_0004        DATA_0004
 +DATA        /dev/oracleasm/disks/ASM_DATA6 DATA_0005        DATA_0005
 +DATA        /dev/oracleasm/disks/ASM_DATA4 DATA_0003        DATA_0003
 +FRA        /dev/oracleasm/disks/ASM_FRA2 FRA_0001        FRA_0001
 +OCR        /dev/oracleasm/disks/ASM_OCR1 OCR_0002        OCR_0002
 +OCR        /dev/oracleasm/disks/ASM_OCR3 OCR_0000        OCR_0000
 +OCR        /dev/oracleasm/disks/ASM_OCR2 OCR_0001        OCR_0001
 +        /dev/oracleasm/disks/ASM_FRA1
 +
 +8 rows selected.
 +</code>
 +
 +  * une fois terminé, suppression du disque d'ASM
 +<code BASH>
 +[root@oracle2 bin]# oracleasm deletedisk ASM_FRA1
 +Clearing disk header: done
 +Dropping disk: done
 +
 +
 +[root@oracle2 bin]# oracleasm listdisks
 +ASM_DATA4
 +ASM_DATA5
 +ASM_DATA6
 +ASM_FRA2
 +ASM_OCR1
 +ASM_OCR2
 +ASM_OCR3
 +
 +
 +</code>
 +
 +  * on rafraichi sur l'autre noeud du RAC
 +<code BASH>
 +[root@oracle3 ~]# oracleasm scandisks
 +Reloading disk partitions: done
 +Cleaning any stale ASM disks...
 +Cleaning disk "ASM_FRA1"
 +Scanning system for ASM disks...
 +
 +
 +[root@oracle3 ~]# oracleasm listdisks
 +ASM_DATA4
 +ASM_DATA5
 +ASM_DATA6
 +ASM_FRA2
 +ASM_OCR1
 +ASM_OCR2
 +ASM_OCR3
 +
 +</code>