vendredi 6 août 2010

Comment déplacer un datafile d'un diskgroup ASM vers un autre diskgroup?

Pour déplacer un fichier d'un diskgroup ASM à un autre, procéder comme suit:

1- Identifier le fichier à déplacer:

SYS@D104> select file_name from dba_data_files;

FILE_NAME
--------------------------------------------------------------------------------
+INFO_SYSDG01/d104/datafile/users.265.726235377
...
9 rows selected.
SYS@D104>


Note:
L'on voit que le fichier est dans le diskgroup «+INFO_SYSDG01».

2- Identifier le diskgroup où l'on veut déplacer le fichier:

SYS@D104 > select name from v$asm_diskgroup;

NAME
------------------------------
SYSDG01
FRADG01
FRADG02
DATADG01
INFO_SYSDG01
INFO_FRADG01
INFO_FRADG02
INFO_DATADG01
..
SYS@D104 >

Note:
Le datafile vâ être déplacé dans le diskgroup «+INFO_DATADG01».

3- Mettre le datafile à déplacer OFFLINE

SYS@D104 > ALTER DATABASE DATAFILE '+INFO_SYSDG01/d104/datafile/users.265.726235377' offline;

ALTER DATABASE DATAFILE '+INFO_SYSDG01/d104/datafile/users.265.726235377' offline *
ERROR at line 1:
ORA-01145: OFFLINE IMMEDIATE rejeté sauf si récupération après défaillance
matérielle validée

Note:
Ce message d'erreur est dû au fait que la BD est en mode NOARCHIVELOG.
Il faut donc la mettre en mode ARCHIVELOG (à vous de voir s'il s'agit d'une BD qu'on peut redémarrer)

Mettre donc la BD en mode ARCHIVELOG:

SYS@D104 > shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SYS@D104 > startup mount
ORACLE instance started.

Total System Global Area 1044193280 bytes
Fixed Size 2154688 bytes
Variable Size 754982720 bytes
Database Buffers 276824064 bytes
Redo Buffers 10231808 bytes
Database mounted.
SYS@D104 > alter database archivelog;

Database altered.

SYS@D104 > alter database open;

Database altered.

SYS@D104 > archive log list
Database log mode Archive Mode
Automatic archival Enabled
Archive destination +INFO_FRADG02
Oldest online log sequence 1
Next log sequence to archive 1
Current log sequence 1
SYS@D104 >

Maintenant l'on peut mettre de datafile OFFLINE:

SYS@D104 > ALTER DATABASE DATAFILE '+INFO_SYSDG01/d104/datafile/users.265.726235377' offline;

4- Copier le fichier avec RMAN

oracle@uhq002:/uhq002_u01/home/dba/oracle> rman target /

Recovery Manager: Release 11.2.0.1.0 - Production on Ven. Août 6 15:09:08 2010

Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.

connected to target database: D104 (DBID=3868786077)

RMAN> copy datafile '+INFO_SYSDG01/d104/datafile/users.265.726235377' to '+INFO_DATADG01';

Starting backup at 2010-08-06 15:09:42
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=556 instance=D104 device type=DISK
channel ORA_DISK_1: starting datafile copy
input datafile file number=00006 name=+INFO_SYSDG01/d104/datafile/users.265.726235377
output file name=+INFO_DATADG01/d104/datafile/users.262.726241139 tag=TAG20100512T154150 RECID=12 STAMP=726241139
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:07
Finished backup at 2010-08-06 15:09:59
RMAN>


Conserver la session RMAN (Ne pas la fermer)

Note:
Prendre en note le nom du nouveau fichier. C'est le «output file name» dans la session RMAN. Ce fichier sera utilisé dans la suite.

5- Renommer le fichier dans la BD:

SYS@D104 > alter database rename file '+INFO_SYSDG01/d104/datafile/users.265.726235377' to '+INFO_DATADG01/d104/datafile/users.262.726241139';

Note:

Remarquez l'utilisation du nouveau nom de fichier pris en note au point precedent.


6- Switcher le datafile vers la copie dans RMAN:

RMAN> switch datafile '+INFO_DATADG01/d104/datafile/users.262.726241139' to copy;

datafile 6 switched to datafile copy "+INFO_DATADG01/d104/datafile/users.262.726241139"

7- Recover du datafile:

SYS@D104 > recover datafile '+INFO_DATADG01/d104/datafile/users.262.726241139';

Récupération après défaillance matérielle terminée.

8- Mettre le datafile ONLINE:

SYS@D104 > ALTER DATABASE datafile '+INFO_DATADG01/d104/datafile/users.262.726241139' online;

Base de données modifiée.

8- Vérifier le nouvel emplacement du datafile:

SYS@D104 > select file_name from dba_data_files;

FILE_NAME
--------------------------------------------------------------------------------
+INFO_DATADG01/d104/datafile/users.262.726241139
...
9 rows selected.

SYS@D104 >

Note:
Avec une bd 11gR2 et ASM 11gR2, l'ancien fichier a été automatiquement détruit.

9- Remettre la BD en mode NOARCHIVELOG

SYS@D104 > shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SYS@D104 > startup mount
ORACLE instance started.


Total System Global Area 1044193280 bytes
Fixed Size 2154688 bytes
Variable Size 754982720 bytes
Database Buffers 276824064 bytes
Redo Buffers 10231808 bytes
Database mounted.
SYS@D104 >
alter database noarchivelog;

Database altered.

SYS@D104 > alter database open;

Database altered.

SYS@D104 >

Aucun commentaire:

Enregistrer un commentaire