meta données pour cette page
  •  

Ceci est une ancienne révision du document !


Migrer les données d'un diskgroup

Diskgroup redondance normale

Il s'agit du diskgroup DATA avec redondance normale sur 3 disques

  • Afficher l'articulation des DISKGROUP:
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
  • Afficher l'espace disque des DISKGROUP:
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
  • Les opérations ORACLEASM se font en ROOT
  • Les autres opérations se font en GRID

Ajout disques

  • ajouter 3 nouveaux disques au niveau OS et y créer une partition primaire
  • nous devons ensuite les initialiser par ASM:
[root@oracle2 bin]# oracleasm createdisk ASM_DATA4 /dev/sdh1
[root@oracle2 bin]# oracleasm createdisk ASM_DATA5 /dev/sdi1
[root@oracle2 bin]# oracleasm createdisk ASM_DATA6 /dev/sdj1
  • Une fois nos disques initialisés, ils sont disponibles dans ASM
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_DATA3         DATA_0002                       DATA_0002
DATA                                              /dev/oracleasm/disks/ASM_DATA1         DATA_0000                       DATA_0000
DATA                                              /dev/oracleasm/disks/ASM_DATA2         DATA_0001                       DATA_0001
FRA                                              /dev/oracleasm/disks/ASM_FRA1            FRA_0000            	          FRA_0000
OCR                                              /dev/oracleasm/disks/ASM_OCR3          OCR_0000                         OCR_0000
OCR                                              /dev/oracleasm/disks/ASM_OCR1          OCR_0002                         OCR_0002
OCR                                              /dev/oracleasm/disks/ASM_OCR2          OCR_0001                        OCR_0001
                                                 /dev/oracleasm/disks/ASM_DATA6
                                                 /dev/oracleasm/disks/ASM_DATA5
                                                 /dev/oracleasm/disks/ASM_DATA4
  • Nous les ajoutons au Diskgroup DATA et lançons un rebalance des données.
    • à noter que plus l'option POWER X est grande, plus il y aura de consommation CPU, IO disque et plus vite la reconstruction des bandes de parité et le transfert des données sera rapide (integer de 0 à 1024, où 0=annulation)
SQL> ALTER diskgroup DATA add disk '/dev/oracleasm/disks/ASM_DATA4','/dev/oracleasm/disks/ASM_DATA5','/dev/oracleasm/disks/ASM_DATA6' rebalance POWER 9;
 
Diskgroup altered.
  • suivi de l'opération
SQL> SELECT * FROM v$asm_operation;
 
 
GROUP_NUMBER OPERA PASS      STAT      POWER	 ACTUAL      SOFAR   EST_WORK	EST_RATE EST_MINUTES ERROR_CODE 				      CON_ID
------------ ----- --------- ---- ---------- ---------- ---------- ---------- ---------- ----------- -------------------------------------------- ----------
	   1 REBAL COMPACT   WAIT	   9	      9 	 0	    0	       0	   0							   0
	   1 REBAL REBALANCE RUN	   9	      9       1365	14408	   12849	   1							   0
	   1 REBAL REBUILD   DONE	   9	      9        187	  187	       0	   0							   0
	   1 REBAL RESYNC    DONE	   9	      9 	 0	    0	       0	   0							   0
  • le rebalance se matérialise par 2 daemon ARB :
SQL> !ps -ef | grep asm | grep arb
grid      1533     1  0 20:20 ?        00:00:00 asm_arba_+ASM1
grid      1535     1  5 20:20 ?        00:00:18 asm_arb0_+ASM1
grid      5010 29595  0 20:25 pts/0    00:00:00 /bin/bash -c ps -ef | grep asm | grep arb
  • on peut augmenter l'agressivité du rebalance en cours de route:
 ALTER diskgroup DATA rebalance POWER 50;
  • le transfert sur les nouveaux disques est terminé quand il n'y a plus d'opération de rebalance en cours
SQL> SELECT * FROM v$asm_operation;
 
no rows selected
  • on peut le valider dans l'alert_log
[grid@oracle2 trace]$ tail -f alert_+ASM1.log 
NOTE: requesting all-instance membership refresh for group=1
2025-10-20T20:42:57.221299+02:00
NOTE: membership refresh pending for group 1/0x8fc03614 (DATA)
2025-10-20T20:42:57.350064+02:00
GMON querying group 1 at 34 for pid 26, osid 9072
2025-10-20T20:42:57.353560+02:00
SUCCESS: refreshed membership for 1/0x8fc03614 (DATA)
2025-10-20T20:42:59.490306+02:00
NOTE: Attempting voting file refresh on diskgroup DATA
NOTE: Refresh completed on diskgroup DATA. No voting file found.
2025-10-20T21:12:45.235923+02:00
NOTE: stopping process ARB0
NOTE: stopping process ARBA
2025-10-20T21:12:45.627196+02:00
SUCCESS: rebalance completed for group 1/0x8fc03614 (DATA)
Suppression des disques
SET lines 800
column disk_group_name format a30
column PATH format a50
column disk_file_name format a50
SELECT NVL(a.name, '[CANDIDATE]') disk_group_name, b.PATH, b.name disk_file_name
FROM v$asm_diskgroup a RIGHT OUTER JOIN  v$asm_disk b USING (group_number)
ORDER BY a.name;SQL> SQL> SQL> SQL>   2    3  
 
DISK_GROUP_NAME 	       PATH						  DISK_FILE_NAME
------------------------------ -------------------------------------------------- --------------------------------------------------
DATA			       /dev/oracleasm/disks/ASM_DATA6			  DATA_0005
DATA			       /dev/oracleasm/disks/ASM_DATA1			  DATA_0000
DATA			       /dev/oracleasm/disks/ASM_DATA5			  DATA_0004
DATA			       /dev/oracleasm/disks/ASM_DATA4			  DATA_0003
DATA			       /dev/oracleasm/disks/ASM_DATA3			  DATA_0002
FRA			       /dev/oracleasm/disks/ASM_FRA1			  FRA_0000
OCR			       /dev/oracleasm/disks/ASM_OCR2			  OCR_0001
OCR			       /dev/oracleasm/disks/ASM_OCR3			  OCR_0000
OCR			       /dev/oracleasm/disks/ASM_OCR1			  OCR_0002
[CANDIDATE]		       /dev/oracleasm/disks/ASM_DATA2
 
10 rows selected.
ALTER diskgroup DATA DROP disk DATA_0002,DATA_0001,DATA_0000 rebalance POWER 50;
SQL> SET lines 1000
col PATH format A50
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> 
 
PATH						   MOUNT_S MODE_ST STATE    REDUNDA   TOTAL GB	  FREE GB FAILGROUP_TYPE
-------------------------------------------------- ------- ------- -------- ------- ---------- ---------- --------------------
/dev/oracleasm/disks/ASM_DATA2			   CLOSED  ONLINE  NORMAL   UNKNOWN	     0		0 REGULAR
/dev/oracleasm/disks/ASM_OCR3			   CACHED  ONLINE  NORMAL   UNKNOWN 9.99609375 9.67578125 REGULAR
/dev/oracleasm/disks/ASM_FRA1			   CACHED  ONLINE  NORMAL   UNKNOWN 39.9990234 35.8339844 REGULAR
/dev/oracleasm/disks/ASM_OCR2			   CACHED  ONLINE  NORMAL   UNKNOWN 9.99609375	   9.6875 REGULAR
/dev/oracleasm/disks/ASM_OCR1			   CACHED  ONLINE  NORMAL   UNKNOWN 9.99609375 9.68359375 REGULAR
/dev/oracleasm/disks/ASM_DATA3			   CACHED  ONLINE  DROPPING UNKNOWN 19.9990234 16.5458984 REGULAR     <====
/dev/oracleasm/disks/ASM_DATA1			   CACHED  ONLINE  DROPPING UNKNOWN 19.9990234 16.5449219 REGULAR     <====
/dev/oracleasm/disks/ASM_DATA6			   CACHED  ONLINE  NORMAL   UNKNOWN 19.9990234 14.4287109 REGULAR
/dev/oracleasm/disks/ASM_DATA5			   CACHED  ONLINE  NORMAL   UNKNOWN 19.9990234 14.4257813 REGULAR
/dev/oracleasm/disks/ASM_DATA4			   CACHED  ONLINE  NORMAL   UNKNOWN 19.9990234 14.4267578 REGULAR
 
10 rows selected.
  • suivi de l'opération
SQL> SELECT * FROM v$asm_operation;
no rows selected
 
 
  * une fois terminé, les disques enlevés sont en **MOUNT_STATE=CLOSED**
SQL> SET lines 1000
col PATH format A50
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> 
 
PATH						   MOUNT_S MODE_ST STATE    REDUNDA   TOTAL GB	  FREE GB FAILGROUP_TYPE
-------------------------------------------------- ------- ------- -------- ------- ---------- ---------- --------------------
/dev/oracleasm/disks/ASM_DATA2			   CLOSED  ONLINE  NORMAL   UNKNOWN	     0		0 REGULAR    <====
/dev/oracleasm/disks/ASM_DATA1			   CLOSED  ONLINE  NORMAL   UNKNOWN	     0		0 REGULAR    <====
/dev/oracleasm/disks/ASM_DATA3			   CLOSED  ONLINE  NORMAL   UNKNOWN	     0		0 REGULAR    <====
/dev/oracleasm/disks/ASM_OCR3			   CACHED  ONLINE  NORMAL   UNKNOWN 9.99609375 9.67578125 REGULAR
/dev/oracleasm/disks/ASM_FRA1			   CACHED  ONLINE  NORMAL   UNKNOWN 39.9990234 35.8339844 REGULAR
/dev/oracleasm/disks/ASM_OCR2			   CACHED  ONLINE  NORMAL   UNKNOWN 9.99609375	   9.6875 REGULAR
/dev/oracleasm/disks/ASM_OCR1			   CACHED  ONLINE  NORMAL   UNKNOWN 9.99609375 9.68359375 REGULAR
/dev/oracleasm/disks/ASM_DATA6			   CACHED  ONLINE  NORMAL   UNKNOWN 19.9990234 12.1269531 REGULAR
/dev/oracleasm/disks/ASM_DATA5			   CACHED  ONLINE  NORMAL   UNKNOWN 19.9990234 12.1269531 REGULAR
/dev/oracleasm/disks/ASM_DATA4			   CACHED  ONLINE  NORMAL   UNKNOWN 19.9990234 12.1259766 REGULAR
 
10 rows selected.
  • ces opérations sont visibles dans l'alert_log
[grid@oracle2 trace]$ tail -f alert_+ASM1.log 
 
2025-10-20T21:20:31.582323+02:00
NOTE: updating disk modes to 0x15 from 0x7f for disk 0 (DATA_0000) in group 1 (DATA): lflags 0x4    
NOTE: updating disk modes to 0x15 from 0x7f for disk 2 (DATA_0002) in group 1 (DATA): lflags 0x4    
NOTE: updating disk modes to 0x1 from 0x15 for disk 0 (DATA_0000) in group 1 (DATA): lflags 0x4    
NOTE: updating disk modes to 0x1 from 0x15 for disk 2 (DATA_0002) in group 1 (DATA): lflags 0x4    
2025-10-20T21:20:31.605517+02:00
NOTE: cache closing disk 0 of grp 1: DATA_0000
2025-10-20T21:20:31.606205+02:00
NOTE: cache closing disk 2 of grp 1: DATA_0002
2025-10-20T21:20:31.851832+02:00
NOTE: membership refresh pending for group 1/0x8fc03614 (DATA)
2025-10-20T21:20:31.858691+02:00
GMON querying group 1 at 36 for pid 26, osid 9072
GMON querying group 1 at 37 for pid 26, osid 9072
2025-10-20T21:20:31.893635+02:00
NOTE: Disk DATA_0000 in mode 0x0 marked for de-assignment
NOTE: Disk DATA_0002 in mode 0x0 marked for de-assignment
SUCCESS: refreshed membership for 1/0x8fc03614 (DATA)
2025-10-20T21:20:34.511104+02:00
NOTE: Attempting voting file refresh on diskgroup DATA
NOTE: Refresh completed on diskgroup DATA. No voting file found.
  • Il ne reste plus qu'à les supprimer d'ASM, pour les rendre à l'OS
[root@oracle3 ~]# oracleasm deletedisk ASM_DATA1
Disk "ASM_DATA1" defines an unmarked device
Dropping disk: done
[root@oracle3 ~]# oracleasm deletedisk ASM_DATA2
Clearing disk header: done
Dropping disk: done
[root@oracle3 ~]# oracleasm deletedisk ASM_DATA3
Clearing disk header: done
Dropping disk: done
 
[root@oracle3 ~]# oracleasm listdisks
ASM_DATA4
ASM_DATA5
ASM_DATA6
ASM_FRA1
ASM_OCR1
ASM_OCR2
ASM_OCR3