mercredi 11 juillet 2012

Comment renommer un diskgroup avec ASM 11gR2

Le but de cet article est de présenter la commande "renamedg".
Le diskgroup à renommer ne contient ni ocr ni voting disk.

La commande "renamedg" située dans $GRID_HOME/bin permet de renommer un diskgroup dans ASM 11gR2 sans avoir à le supprimer et le recréer.

Pour voir la syntaxe:
$GRID_HOME/bin/renamedg -help

Exemple:
Nous avons un diskgroup appelé DATADG que nous souhaitons renommer en DATADG_NEW

Se connecter au serveur avec l'utilisateur ayant installé le grid infrastructure et positionner les paramètres d'environnement comme il se doit, puis:

Voir la liste des diskgroups actuels:


[oracle@svrhost1 ~]$ asmcmd lsdg
State    Type    Rebal  Sector  Block       AU  Total_MB  Free_MB  Req_mir_free_MB  Usable_file_MB  Offline_disks  Voting_files  Name
MOUNTED  EXTERN  N         512   4096  1048576   1179801   107210                0          107210              0             N  FRADG/
MOUNTED  EXTERN  N         512   4096  1048576    409626   409521                0          409521              0             N  DATADG/
[oracle@svrhost1 ~]$

 Démonter le diskgroup DATADG (le faire sur tous les noeuds en environnement RAC):


[oracle@svrhost1 ~]$ asmcmd umount DATADG

 Revoir la liste des diskgroups:


[oracle@svrhost1 ~]$ asmcmd lsdg
State    Type    Rebal  Sector  Block       AU  Total_MB  Free_MB  Req_mir_free_MB  Usable_file_MB  Offline_disks  Voting_files  Name
MOUNTED  EXTERN  N         512   4096  1048576   1179801   107210                0          107210              0             N  FRADG/
[oracle@svrhost1 ~]$

Renommer le diskgroup:



[oracle@svrhost1 ~]$ renamedg dgname=DATADG newdgname=DATADG_NEW verbose=true

Parsing parameters..

Parameters in effect:

         Old DG name       : DATADG
         New DG name          : DATADG_NEW
         Phases               :
                 Phase 1
                 Phase 2
         Discovery str        : (null)
         Clean              : TRUE
         Raw only           : TRUE
renamedg operation: dgname=DATADG newdgname=DATADG_NEW verbose=true
Executing phase 1
Discovering the group
Performing discovery with string:
Identified disk ASM:/opt/oracle/extapi/64/asm/orcl/1/libasm.so:ORCL:DISK_AD3 with disk number:0 and timestamp (32969770 -442787840)
Checking for hearbeat...
Re-discovering the group
Performing discovery with string:
Identified disk ASM:/opt/oracle/extapi/64/asm/orcl/1/libasm.so:ORCL:DISK_AD3 with disk number:0 and timestamp (32969770 -442787840)
Checking if the diskgroup is mounted or used by CSS
Checking disk number:0
Generating configuration file..
Completed phase 1
Executing phase 2
Looking for ORCL:DISK_AD3
Modifying the header
Completed phase 2
Terminating kgfd context 0x7fa8e82920a0
[oracle@svrhost1 ~]$


Vérifier encore les diskgroups:


[oracle@svrhost1 ~]$ asmcmd lsdg
State    Type    Rebal  Sector  Block       AU  Total_MB  Free_MB  Req_mir_free_MB  Usable_file_MB  Offline_disks  Voting_files  Name
MOUNTED  EXTERN  N         512   4096  1048576   1179801   107210                0          107210              0             N  FRADG/
[oracle@svrhost1 ~]$

Monter le diskgroup renommé (le faire sur tous les noeuds en environnement RAC):


[oracle@svrhost1 ~]$ asmcmd mount DATADG_NEW

Vérifier les diskgroups:


[oracle@svrhost1 ~]$ asmcmd lsdg
State    Type    Rebal  Sector  Block       AU  Total_MB  Free_MB  Req_mir_free_MB  Usable_file_MB  Offline_disks  Voting_files  Name
MOUNTED  EXTERN  N         512   4096  1048576    409626   409521                0          409521              0             N  DATADG_NEW/
MOUNTED  EXTERN  N         512   4096  1048576   1179801   107210                0          107210              0             N  FRADG/
[oracle@svrhost1 ~]$


Notes importantes:
1- Après avoir renommé le diskgroup, prendre le soin de renommer les fichiers qui étaient dans ce diskgroup, car le nom du diskgroup est inclus dans les noms des fichiers.
2- Lorsqu'on veut renommer un diskgroup qui contient l'ocr et les voting disks, la procédure est différente. Nous y reviendrons dans un autre article. Mais d'ores et déjà, il faut savoir qu'il faut créer un diskgroup temporaire dans lequel il faut déplacer l'ocr, le voting disk et le spfile file d'asm avant de renommer le diskgroup. Une fois la procédure terminée, retourner les fichiers dans le diskgroup renommé.

Hope it helps...

jeudi 5 juillet 2012

Comment identifier le process id d'une session oracle

Vous avez une session oracle qui vous cause des troubles.

Vous avez identifié la session à problème et avez essayé de la tuer au niveau sql sans succès avec:

ALTER SYSTEM KILL SESSION 'sid , serial#';

Vous souhaitez donc tuer la session à l'aide de son process ID au niveau de l'OS.
Mais comment identifier le process ID?
Utiliser la requête suivante:
 
col username format a20
col osuser format a20
col machine format a25
col terminal format a15
col program format a50

SELECT s.sid, s.serial#, s.username, s.osuser, p.spid, s.machine, p.terminal, s.program 
FROM v$session s, v$process p 
WHERE s.paddr = p.addr;

Identifier le SPID de votre session à problème.
Puis au niveau du système d'exploitation:

Unix/Linux:
kill -9 <SPID>

Windows:
$ORACLE_HOME/bin/orakill $ORACLE_SID <SPID>

Hope it helps...

mardi 3 juillet 2012

Comment vérifier que le driver ACFS est installé ou pas?

ASM Cluster File System (ACFS) inclus dans le grid infrastructure 11gR2 n'est pas encore supporté sur certaines plate-formes. Même sur la plate-forme Oracle Linux, il y a certaines versions pour lesquelles elle n'est pas supportée.

Comment vérifier donc que notre installation du Grid Infrastructure 11gR2 a bien installé et configuré ACFS?

Pour cela, se connecter au serveur en tant qu'utilisateur ayant installé le grid infrastructure 11gR2, se positionner dans le GRID_HOME/bin et utiliser la commande "acfsdriverstate".

Ci-dessous un exemple dans un environnement où ACFS n'est pas supporté:


[oracle@srvhost1 bin]$ acfsdriverstate -h
ACFS-9206: usage: acfsdriverstate [-orahome <oracle_home>] <installed | loaded | version | supported> [-s]
[oracle@srvhost1 bin]$ acfsdriverstate installed
ACFS-9204: false
[oracle@srvhost1 bin]$ acfsdriverstate loaded
ACFS-9204: false
[oracle@srvhost1 bin]$ acfsdriverstate version
ACFS-9129: ADVM/ACFS not installed
[oracle@srvhost1 bin]$ acfsdriverstate supported
ACFS-9459: ADVM/ACFS is not supported on this OS version: '2.6.32-300.11.1.el5uek'
ACFS-9201: Not Supported
[oracle@srvhost1 bin]$

Hope it helps...