Liste des paramètres cachés d’ASM en 11.2.0.4

ASM pas de Commentaire »

Comment obtenir la liste des paramètres cachés d’ASM.

col value for a8
SQL> col name for a39
col describe for a70
SQL> set lines 260 pages 100
SQL> select a.ksppinm name, b.ksppstvl value, a.ksppdesc describe
2 from x$ksppi a, x$ksppcv b
3 where a.inst_id = userenv(’Instance’)
and b.inst_id = userenv(’Instance’)
5 and a.indx = b.indx
6 and a.ksppinm like ‘\_asm%’ escape ‘\’
7 order by name;

NAME VALUE DESCRIBE
————————————— ——– ———————————————————————-
_asm_acd_chunks 1 initial ACD chunks created
_asm_admin_with_sysdba FALSE Does the sysdba role have administrative privileges on ASM?
_asm_allow_appliance_dropdisk_noforce FALSE Allow DROP DISK/FAILUREGROUP NOFORCE on ASM Appliances
_asm_allow_lvm_resilvering TRUE Enable disk resilvering for external redundancy
_asm_allow_only_raw_disks TRUE Discovery only raw devices
_asm_allow_system_alias_rename FALSE if system alias renaming is allowed
_asm_appliance_config_file Appliance configuration file name
_asm_ausize 1048576 allocation unit size
_asm_automatic_rezone TRUE automatically rebalance free space across zones
_asm_avoid_pst_scans TRUE Avoid PST Scans
_asm_blksize 4096 metadata block size
_asm_check_for_misbehaving_cf_clients FALSE check for misbehaving CF-holding clients
_asm_compatibility 10.1 default ASM compatibility level
_asm_dba_batch 500000 ASM Disk Based Allocation Max Batch Size
_asm_dba_spcchk_thld 20000 ASM Disk Based Allocation Space Check Threshold
_asm_dba_threshold 0 ASM Disk Based Allocation Threshold
_asm_dbmsdg_nohdrchk FALSE dbms_diskgroup.checkfile does not check block headers
_asm_diag_dead_clients FALSE diagnostics for dead clients
_asm_direct_con_expire_time 120 Expire time for idle direct connection to ASM instance
_asm_disable_amdu_dump FALSE Disable AMDU dump
_asm_disable_async_msgs FALSE disable async intra-instance messaging
_asm_disable_multiple_instance_check FALSE Disable checking for multiple ASM instances on a given node
_asm_disable_profilediscovery FALSE disable profile query for discovery
_asm_disable_smr_creation FALSE Do Not create smr
_asm_disable_ufg_dump FALSE disable terminated umbilicus diagnostic
_asm_disk_repair_time 14400 seconds to wait before dropping a failing disk
_asm_emulate_nfs_disk FALSE Emulate NFS disk test event
_asm_emulmax 10000 max number of concurrent disks to emulate I/O errors
_asm_emultimeout 0 timeout before emulation begins (in 3s ticks)
_asm_evenread 2 ASM Even Read level
_asm_evenread_alpha 0 ASM Even Read Alpha
_asm_evenread_alpha2 0 ASM Even Read Second Alpha
_asm_evenread_faststart 0 ASM Even Read Fast Start Threshold
_asm_fail_random_rx FALSE Randomly fail some RX enqueue gets
_asm_fd_cln_idle_sess_twait 10000000 Idle session time wait to run ASM FD cleanup
_asm_fd_cln_on_fg TRUE ASM stale FD cleanup on foregrounds
_asm_fob_tac_frequency 9 Timeout frequency for FOB cleanup
_asm_force_quiesce FALSE Force diskgroup quiescing
_asm_global_dump_level 267 System state dump level for ASM asserts
_asm_hbeatiowait 15 number of secs to wait for PST Async Hbeat IO return
_asm_hbeatwaitquantum 2 quantum used to compute time-to-wait for a PST Hbeat check
_asm_imbalance_tolerance 3 hundredths of a percentage of inter-disk imbalance to tolerate
_asm_instlock_quota 0 ASM Instance Lock Quota
_asm_iostat_latch_count 31 ASM I/O statistics latch count
_asm_kfdpevent 0 KFDP event
_asm_kfioevent 0 KFIO event
_asm_kill_unresponsive_clients TRUE kill unresponsive ASM clients
_asm_libraries ufs library search order for discovery
_asmlib_test 0 Osmlib test event
_asm_log_scale_rebalance FALSE Rebalance power uses logarithmic scale
_asm_lsod_bucket_size 67 ASM lsod bucket size
_asm_max_cod_strides 5 maximum number of COD strides
_asm_maxio 1048576 Maximum size of individual I/O request
_asm_max_redo_buffer_size 2097152 asm maximum redo buffer size
_asm_partner_target_disk_part 8 target maximum number of disk partners for repartnering
_asm_partner_target_fg_rel 4 target maximum number of failure group relationships for repartnering
_asm_primary_load 1 Number of cycles/extents to load for non-mirrored files
_asm_primary_load_cycles TRUE True if primary load is in cycles, false if extent counts
_asm_random_zone FALSE Random zones for new files
_asm_rebalance_plan_size 120 maximum rebalance work unit
_asm_rebalance_space_errors 4 number of out of space errors allowed before aborting rebalance
_asm_repairquantum 60 quantum (in 3s) used to compute elapsed time for disk drop
_asm_reserve_slaves TRUE reserve ASM slaves for CF txns
_asm_root_directory ASM ASM default root directory
_asm_runtime_capability_volume_support FALSE runtime capability for volume support returns supported
_asm_secondary_load 10000 Number of cycles/extents to load for mirrored files
_asm_secondary_load_cycles FALSE True if secondary load is in cycles, false if extent counts
_asm_serialize_volume_rebalance FALSE Serialize volume rebalance
_asm_shadow_cycle 3 Inverse shadow cycle requirement
_asmsid asm ASM instance id
_asm_skip_rename_check FALSE skip the checking of the clients for s/w compatibility for rename
_asm_skip_resize_check FALSE skip the checking of the clients for s/w compatibility for resize
_asm_storagemaysplit FALSE PST Split Possible
_asm_stripesize 131072 ASM file stripe size
_asm_stripewidth 8 ASM file stripe width
_asm_sync_rebalance FALSE Rebalance uses sync I/O
_asm_usd_batch 64 ASM USD Update Max Batch Size
_asm_wait_time 18 Max/imum time to wait before asmb exits

78 ligne(s) selectionnee(s).

SQL>

Comme vous pouvez le constater, il y en a un certain nombre.

Comment augmenter le délai heatbeep ASM pendent lequel un disque n’est pas considéré comme offline lors d’une bascule multipath pas assez rapide!!!

ASM, Cluster RAC pas de Commentaire »

Augmenter le délai heartbeep pendent lequel un disque n’est pas considéré comme offline lors d’une bascule multipath pas assez rapide. Ou comment utiliser un paramètre caché d’ASM 11GR2!!!

Le contexte :
Rac étendu en version 11.2.0.4 avec deux diskgroups en miroir et un accès aux LUN’s en ISCSI vers des baies DELL EQUALOGIC.

Le multipath est configuré avec le driver multipath propriétaire de DELL puisque les bascules en driver linux natifs sont extrêmement lentes.
La configuration ASM a donc été faite sur des chemins du type /dev/eql/XXXXXX.

Quand on teste la perte d’une des deux cartes dédiées au ISCSI, la couche multipath doit gérer les io’s à travers le deuxième chemin.
Aléatoirement lorsque que l’on coupe le port du switch ou la carte ISCSI, nous allons perdre des disques d’un des deux diskgroups ou pas.

########################################################################
# ETAT DES DISQUES #
########################################################################

GROUP_NUMBER NAME STATE FAILGROUP PATH
———— ——————– ———- ——————– ———————————————
0 NORMAL /dev/oracleasm/disks/DSK_CLITX_FRA02
0 NORMAL /dev/oracleasm/disks/DSK_CLITX_DATA01
0 NORMAL /dev/oracleasm/disks/DSK_CLITX_OCR02
1 CLITX_DATA01 NORMAL FG_CLITX_DATA
1 CLITX_DATA05 NORMAL FG_CLITX_DATA /dev/oracleasm/disks/DSK_CLITX_DATA05
1 CLITX_DATA03 NORMAL FG_CLITX_DATA /dev/oracleasm/disks/DSK_CLITX_DATA03
1 CLITX_DATA02 NORMAL FG_CLITX_DATA /dev/oracleasm/disks/DSK_CLITX_DATA02
1 CLITX_DATA04 NORMAL FG_CLITX_DATA /dev/oracleasm/disks/DSK_CLITX_DATA04
1 TCY_DATA02 NORMAL FG_TCY_DATA /dev/oracleasm/disks/DSK_TCY_DATA02
1 TCY_DATA01 NORMAL FG_TCY_DATA /dev/oracleasm/disks/DSK_TCY_DATA01
1 TCY_DATA03 NORMAL FG_TCY_DATA /dev/oracleasm/disks/DSK_TCY_DATA03
1 TCY_DATA04 NORMAL FG_TCY_DATA /dev/oracleasm/disks/DSK_TCY_DATA04
1 TCY_DATA05 NORMAL FG_TCY_DATA /dev/oracleasm/disks/DSK_TCY_DATA05
2 CLITX_FRA03 NORMAL FG_CLITX_FRA /dev/oracleasm/disks/DSK_CLITX_FRA03
2 CLITX_FRA01 NORMAL FG_CLITX_FRA /dev/oracleasm/disks/DSK_CLITX_FRA01
2 CLITX_FRA02 NORMAL FG_CLITX_FRA
2 TCY_FRA03 NORMAL FG_TCY_FRA /dev/oracleasm/disks/DSK_TCY_FRA03
2 TCY_FRA01 NORMAL FG_TCY_FRA /dev/oracleasm/disks/DSK_TCY_FRA01
2 TCY_FRA02 NORMAL FG_TCY_FRA /dev/oracleasm/disks/DSK_TCY_FRA02
3 TCY_OCR02 NORMAL TCY_OCR02 /dev/oracleasm/disks/DSK_TCY_OCR02
4 OCRVOTING_0001 NORMAL OCRVOTING_0001 /dev/oracleasm/disks/DSK_CLITX_OCR01
4 OCRVOTING_0002 NORMAL OCRVOTING_0002 /dev/oracleasm/disks/DSK_TCY_OCR01
4 OCRVOTING_0003 NORMAL OCRVOTING_0003 /app/voting/vote3

########################################################################
# ETAT DES DISKGROUPS : PRESENCE DE DISQUES OFFLINE #
########################################################################

GROUP_NUMBER NAME STATE OFFLINE_DISKS
———— ——————– ———- ————-
1 DGDATA MOUNTED 1
2 DGFRA MOUNTED 1
3 OCRMIRROR MOUNTED 0
4 OCRVOTING MOUNTED 0

On voit que l’on a bien des disques offline dans chaque diskgroup DGFRA et DGDATA.

Alert_+ASM1.log
Dans les traces, on voit des erreurs d’écritures
WARNING: group 1 dismounted: failed to write virtual extent 0 of file 256
Errors in file /app/oracle/diag/rdbms/orcl/ORCL1/trace/ORCL1_ckpt_42424.trc:
ORA-00206: erreur lors de l’écriture (bloc 3, nbre blocs 1) du fichier de contrôle
ORA-00202: fichier de contrôle : ‘+DGDATA/orcl/controlfile/current.256.842798891′
ORA-15081: échec de la soumission d’une opération d’entrée-sortie sur un disque
ORA-15081: échec de la soumission d’une opération d’entrée-sortie sur un disque
Errors in file /app/oracle/diag/rdbms/orcl/ORCL1/trace/ORCL1_ckpt_42424.trc:
ORA-00221: erreur lors de l’écriture dans le fichier de contrôle
ORA-00206: erreur lors de l’écriture (bloc 3, nbre blocs 1) du fichier de contrôle
ORA-00202: fichier de contrôle : ‘+DGDATA/orcl/controlfile/current.256.842798891′
ORA-15081: échec de la soumission d’une opération d’entrée-sortie sur un disque
ORA-15081: échec de la soumission d’une opération d’entrée-sortie sur un disque
CKPT (ospid: 42424): terminating the instance due to error 221
Fri Mar 21 15:23:43 2014
System state dump requested by (instance=1, osid=42424 (CKPT)), summary=[abnormal instance termination].
System State dumped to trace file /app/oracle/diag/rdbms/orcl/ORCL1/trace/ORCL1_diag_42382_20140321152343.trc
Fri Mar 21 15:23:43 2014

Sur 10 coupures à 5 minutes d’intervalle, avec remise en état de la configuration entre temps bien sur, on aura dix résultats différents dont des fois ou l’on ne perd aucun disque, le résultat attendu…

On va positionner un des nombreux paramètres cachés d’ASM en 11GR2 qui va nous permettre d’augmenter le temps toléré de heartbeep avant que le disque soit considéré comme manquant et de ce fait mis offline.
Sa valeur par défaut est de 15 secondes.

SQL> alter system set “_asm_hbeatiowait”=200 scope=spfile;

System altered.

SQL>

On peut donc refaire les tests et O surprise, nous ne perdons plus un seul membre de diskgroup au bout de 10 changement / coupures de multipath.

Le rac étendu est opérationnel.

Oracle - ASM : Miroir, mon beau miroir, ….

ASM, Cluster RAC pas de Commentaire »

Oracle - ASM : Miroir, mon beau miroir, ….by albanlepunk

Des fois on pense avoir tout prévu pour sécuriser son infrastructure Oracle : cluster RAC étendu, diskgroups ASM en redondance NORMAL, 3° voting disk sur un partage NFS distinct, ….

Ceinture et bretelle donc …

Sauf que …. dans la vraie vie d’un informaticien (et à plus forte raison d’un consultant Oracle) la loi de Murphy est incontournable.

Une coupure d’une baie de stockage suivie d’une fausse manipulation d’un administrateur plus tard et vous vous retrouvez avec la situation suivante qu’on vous demande à vous de dépatouiller :

SQL> select name, STATE, OFFLINE_DISKS from v$asm_diskgroup;

NAME                           STATE       OFFLINE_DISKS

------------------------------ ----------- -------------

DGDATA                         MOUNTED                 0

DGFRA                          MOUNTED                 0

OCRMIRROR                      MOUNTED                 0

OCRVOTING                      DISMOUNTED              0

Oups, le diskgroup OCRVOTING à l’état DISMOUNTED, ça ne sent pas très bon pour le cluster, d’autant plus  :

- qu’il est impossible de rajouter des disques à ce diskgroup vu qu’il est DISMOUNTED

- qu’il est impossible de le monter, même en mode FORCE, vu qu’il manque des disques

Heureusement l’architecture a été bien pensée, et l’existence d’un groupe de disques OCRMIRROR (contenant pour l’instant l’OCR mirroir comme son nom l’indique) va nous être utile.

On commence par ‘déplacer’ les voting disks sur ce diskgroup

root@dblc00000025vm01 dev]# crsctl replace votedisk +OCRMIRROR

Successful addition of voting disk 86b1b5a6583d4f22bf97f7af26f0ef9d.

Successful deletion of voting disk 2bbecebc98fd4fcbbf96de5cc98bed12.

Successful deletion of voting disk 18c58cd6ce034f3bbfca178420967aa0.

Successfully replaced voting disk group with +OCRMIRROR.

CRS-4266: Voting file(s) successfully replaced

Vérification :

[root@dblc00000025vm01 dev]# crsctl query css votedisk

##  STATE    File Universal Id                File Name Disk group

--  -----    -----------------                --------- ---------

1. ONLINE   86b1b5a6583d4f22bf97f7af26f0ef9d (/dev/oracleasm/disks/OCRVOTING_AB02) [OCRMIRROR]

Located 1 voting disk(s).

On continue en supprimant les entêtes des disques concernés puis en les recréant (attention : vous êtes sensés savoir ce que vous faites quand vous faites ce type de manipulation)

[root@dblc00000025vm01 dev]# dd if=/dev/zero of=/dev/xvdh1 bs=1024k count=10

10+0 records in

10+0 records out

10485760 bytes (10 MB) copied, 0.215507 s, 48.7 MB/s

[root@dblc00000025vm01 dev]# oracleasm querydisk /dev/xvdj1

Device "/dev/xvdj1" is marked an ASM disk with the label "OCRVOTING_AA02"

[root@dblc00000025vm01 dev]# dd if=/dev/zero of=/dev/xvdj1 bs=1024k count=10

10+0 records in

10+0 records out

10485760 bytes (10 MB) copied, 0.199342 s, 52.6 MB/s

[root@dblc00000025vm01 dev]#

[root@dblc00000025vm01 dev]# oracleasm createdisk OCRVOTING_AA01 /dev/xvdh1

Writing disk header: done

Instantiating disk: failed

Clearing disk header: done

[root@dblc00000025vm01 dev]# oracleasm createdisk OCRVOTING_AA02 /dev/xvdj1

Writing disk header: done

Instantiating disk: failed

Clearing disk header: done

[root@dblc00000025vm01 dev]#

[root@dblc00000025vm01 dev]# oracleasm scandisks

Reloading disk partitions: done

Cleaning any stale ASM disks...

Cleaning disk "OCRVOTING_AA01"

Cleaning disk "OCRVOTING_AA02"

Scanning system for ASM disks...

[root@dblc00000025vm01 dev]# oracleasm listdisks

DATA_AA01

DATA_AB01

FRA_AA01

FRA_AB01

OCRVOTING_AB01

OCRVOTING_AB02

[root@dblc00000025vm01 dev]#

[root@dblc00000025vm01 dev]# oracleasm createdisk OCRVOTING_AA02 /dev/xvdj1

Writing disk header: done

Instantiating disk: done

[root@dblc00000025vm01 dev]# oracleasm createdisk OCRVOTING_AA01 /dev/xvdh1

Writing disk header: done

Instantiating disk: done

[root@dblc00000025vm01 dev]# oracleasm scandisks

Reloading disk partitions: done

Cleaning any stale ASM disks...

Scanning system for ASM disks...

[root@dblc00000025vm01 dev]# oracleasm listdisks

DATA_AA01

DATA_AB01

FRA_AA01

FRA_AB01

OCRVOTING_AA01

OCRVOTING_AA02

OCRVOTING_AB01

OCRVOTING_AB02

On va créer un diskgroup temporaire pour faire changer le statut des disques concernés dans ASM de ‘MEMBER’ à ‘FORMER’, puis le supprimer.


SQL> create diskgroup DGTEST external redundancy disk '/dev/oracleasm/disks/OCRVOTING_AA01','/dev/oracleasm/disks/OCRVOTING_AA02';
Diskgroup created.

SQL> select name, state from v$asm_diskgroup;

NAME                           STATE

------------------------------ -----------

DGDATA                         MOUNTED

DGFRA                          MOUNTED

OCRMIRROR                      MOUNTED

OCRVOTING                      DISMOUNTED

DGTEST                         MOUNTED

SQL> drop diskgroup DGTEST;

Diskgroup dropped.

SQL> select name,path,header_status from v$asm_disk

NAME                           PATH                                                                                                                                HEADER_STATU

------------------------------ ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------

/dev/oracleasm/disks/OCRVOTING_AA01                                                                                                 FORMER

/dev/oracleasm/disks/OCRVOTING_AA02                                                                                                 FORMER

/dev/oracleasm/disks/OCRVOTING_AB01                                                                                                 MEMBER

/app/voting/vote3                                                                                                                   MEMBER

OCRMIRROR_0000                 /dev/oracleasm/disks/OCRVOTING_AB02                                                                                                 MEMBER

DGFRA_0001                     /dev/oracleasm/disks/FRA_AB01                                                                                                       MEMBER

DGFRA_0002                     /dev/oracleasm/disks/FRA_AA01                                                                                                       MEMBER

DGDATA_0000                    /dev/oracleasm/disks/DATA_AB01                                                                                                      MEMBER

DGDATA_0002                    /dev/oracleasm/disks/DATA_AA01                                                                                                      MEMBER

9 rows selected.

On droppe l’ancien diskgroup OCRVOTING

SQL> drop diskgroup OCRVOTING force including contents;
Diskgroup dropped

On recréé le diskgroup OCRVOTING

SQL> create diskgroup OCRVOTING normal redundancy disk '/dev/oracleasm/disks/OCRVOTING_AA01','/dev/oracleasm/disks/OCRVOTING_AA02';
Diskgroup created.

SQL> select name, state from v$asm_diskgroup;

NAME                           STATE

------------------------------ -----------

DGDATA                         MOUNTED

DGFRA                          MOUNTED

OCRMIRROR                      MOUNTED

OCRVOTING                      MOUNTED

Puis on lui rajoute son disque quorum NFS, il faut modifier le paramètre compatible.asm du diskgroup pour avoir accès à cette fonctionnalité.

SQL> alter diskgroup OCRVOTING SET ATTRIBUTE 'compatible.asm' = '11.2';
Diskgroup altered.

SQL> alter diskgroup OCRVOTING add QUORUM FAILGROUP OCRVOTING_0002 DISK '/app/voting/vote3';

Diskgroup altered.

SQL> select GROUP_NUMBER, NAME, NAME,FAILGROUP from v$asm_disk;

GROUP_NUMBER NAME                           NAME                           FAILGROUP

------------ ------------------------------ ------------------------------ ------------------------------

0

3 OCRMIRROR_0000                 OCRMIRROR_0000                 OCRMIRROR_0000

4 OCRVOTING_0000                 OCRVOTING_0000                 OCRVOTING_0000

4 OCRVOTING_0001                 OCRVOTING_0001                 OCRVOTING_0001

2 DGFRA_0001                     DGFRA_0001                     FG_FRA_AB01

2 DGFRA_0002                     DGFRA_0002                     FG_FRA_AA01

1 DGDATA_0000                    DGDATA_0000                    FG_DATA_AB01

1 DGDATA_0002                    DGDATA_0002                    FG_DATA_AA01

4 OCRVOTING_0002                 OCRVOTING_0002                 OCRVOTING_0002
9 rows selected.

il faut ensuite restaurer le spfile ASM dans le diskgroup, puis

on va redéplacer les voting sur OCRVOTING (Attention seulement en 11.2)

[root@dblc00000025vm01 dev]# crsctl replace votedisk +OCRVOTING
Successful addition of voting disk 4d47939b7e5c4f36bf3bbfcb04ec9c6d.

Successful addition of voting disk 2045390006194f34bf42086af70e5126.

Successful addition of voting disk 311f1a648aa04fa1bf241b204fe5652f.

Successful deletion of voting disk 86b1b5a6583d4f22bf97f7af26f0ef9d.

Successfully replaced voting disk group with +OCRVOTING.

CRS-4266: Voting file(s) successfully replaced

Vérifications

[root@dblc00000025vm01 dev]# crsctl query css votedisk
##  STATE    File Universal Id                File Name Disk group

--  -----    -----------------                --------- ---------

1. ONLINE   4d47939b7e5c4f36bf3bbfcb04ec9c6d (/dev/oracleasm/disks/OCRVOTING_AA01) [OCRVOTING]

2. ONLINE   2045390006194f34bf42086af70e5126 (/dev/oracleasm/disks/OCRVOTING_AA02) [OCRVOTING]

3. ONLINE   311f1a648aa04fa1bf241b204fe5652f (/app/voting/vote3) [OCRVOTING]

Located 3 voting disk(s).

On va supprimmer la référence à l’OCR d’OCRVOTING

[root@dblc00000025vm01 dev]# ocrconfig -delete +OCRVOTING
[root@dblc00000025vm01 dev]# ocrconfig -add +OCRVOTING

[root@dblc00000025vm01 dev]# ocrcheck

Status of Oracle Cluster Registry is as follows :

Version                  :          3

Total space (kbytes)     :     262120

Used space (kbytes)      :       3168

Available space (kbytes) :     258952

ID                       :  603000217

Device/File Name         : +OCRMIRROR

Device/File integrity check succeeded

Device/File Name         : +OCRVOTING

Device/File integrity check succeeded

Device/File not configured

Device/File not configured

Device/File not configured

Cluster registry integrity check succeeded

Logical corruption check succeeded

[root@dblc00000025vm01 dev]# ocrconfig -delete +OCRMIRROR

[root@dblc00000025vm01 dev]# ocrconfig -add +OCRMIRROR

[root@dblc00000025vm01 dev]# ocrcheck

Status of Oracle Cluster Registry is as follows :

Version                  :          3

Total space (kbytes)     :     262120

Used space (kbytes)      :       3168

Available space (kbytes) :     258952

ID                       :  603000217

Device/File Name         : +OCRVOTING

Device/File integrity check succeeded

Device/File Name         : +OCRMIRROR

Device/File integrity check succeeded

Device/File not configured

Device/File not configured

Device/File not configured

Cluster registry integrity check succeeded

Logical corruption check succeeded

Un test de reboot des serveurs et c’est bon, c’est reparti !

Comment installer oracleasm sur Oracle Linux 6.x

ASM, Cluster RAC, Divers 1 Commentaire »

Installation d’oracleasmlib sur OL6.1

Ne le trouvant pas à télécharger sur oracle.com ou Metalink, j’ai tenté de l’installer avec yum.

D’aprés la note 1089399.1

“For RHEL6, Oracle will only provide ASMLib software and updates when configured with a kernel distributed

by Oracle. Oracle will not provide ASMLib packages for kernels distributed by Red Hat as part of RHEL6.

ASMLib updates will be delivered via Unbreakable Linux Network(ULN) which is available to customers with Oracle

Linux support. ULN works with both Oracle Linux or Red Hat Linux installations,

but ASMlib usage will require replacing any Red Hat kernel with a kernel provided by Oracle.”

Yum m’a proposé d’installer le kernel UEK dans lequel oracleasm est natif et de fait de mettre à jour certains packages

du même kernel.

Il faut au préalable avoir configuré son yum pour qu’il pointe sur le bon référentiel ou s’être enregistré sur Unbreakable Linux Network.

[root@racform1 app]# yum install oracleasm

Loaded plugins: refresh-packagekit

Setting up Install Process

Resolving Dependencies

–> Running transaction check

—> Package kernel-uek.x86_64 0:2.6.32-300.11.1.el6uek will be installed

–> Processing Dependency: kernel-uek-firmware = 2.6.32-300.11.1.el6uek for package: kernel-uek-2.6.32-300.11.1.el6uek.x86_64

–> Processing Dependency: dracut-kernel >= 004-242.0.3 for package: kernel-uek-2.6.32-300.11.1.el6uek.x86_64

–> Running transaction check

—> Package dracut-kernel.noarch 0:004-53.el6 will be updated

—> Package dracut-kernel.noarch 0:004-256.0.1.el6_2.1 will be an update

–> Processing Dependency: dracut = 004-256.0.1.el6_2.1 for package: dracut-kernel-004-256.0.1.el6_2.1.noarch

—> Package kernel-uek-firmware.noarch 0:2.6.32-100.34.1.el6uek will be updated

—> Package kernel-uek-firmware.noarch 0:2.6.32-300.11.1.el6uek will be an update

–> Running transaction check

—> Package dracut.noarch 0:004-53.el6 will be updated

—> Package dracut.noarch 0:004-256.0.1.el6_2.1 will be an update

–> Finished Dependency Resolution

Dependencies Resolved

==================================================================================================================

Package Arch Version Repository Size

==================================================================================================================

Installing:

kernel-uek x86_64 2.6.32-300.11.1.el6uek ol6_latest 21 M

Updating for dependencies:

dracut noarch 004-256.0.1.el6_2.1 ol6_latest 109 k

dracut-kernel noarch 004-256.0.1.el6_2.1 ol6_latest 20 k

kernel-uek-firmware noarch 2.6.32-300.11.1.el6uek ol6_latest 3.0 M

Transaction Summary

==================================================================================================================

Install 1 Package(s)

Upgrade 3 Package(s)

Total download size: 24 M

Is this ok [y/N]: y

Downloading Packages:

(1/4): dracut-004-256.0.1.el6_2.1.noarch.rpm | 109 kB 00:00

(2/4): dracut-kernel-004-256.0.1.el6_2.1.noarch.rpm | 20 kB 00:00

(3/4): kernel-uek-2.6.32-300.11.1.el6uek.x86_64.rpm | 21 MB 00:54

(4/4): kernel-uek-firmware-2.6.32-300.11.1.el6uek.noarch.rpm | 3.0 MB 00:07

——————————————————————————————————————

Total 383 kB/s | 24 MB 01:04

Running rpm_check_debug

Running Transaction Test

Transaction Test Succeeded

Running Transaction

Updating : kernel-uek-firmware-2.6.32-300.11.1.el6uek.noarch 1/7

Updating : dracut-004-256.0.1.el6_2.1.noarch 2/7

Updating : dracut-kernel-004-256.0.1.el6_2.1.noarch 3/7

Installing : kernel-uek-2.6.32-300.11.1.el6uek.x86_64 4/7

Cleanup : dracut-kernel-004-53.el6.noarch 5/7

Cleanup : dracut-004-53.el6.noarch 6/7

Cleanup : kernel-uek-firmware-2.6.32-100.34.1.el6uek.noarch 7/7

Installed:

kernel-uek.x86_64 0:2.6.32-300.11.1.el6uek

Dependency Updated:

dracut.noarch 0:004-256.0.1.el6_2.1 dracut-kernel.noarch 0:004-256.0.1.el6_2.1

kernel-uek-firmware.noarch 0:2.6.32-300.11.1.el6uek

Complete!

[root@racform1 app]#

Ensuite vu que c’est un module du noyau, il faut le charger : “Please note: Oracleasm kernel driver is included in OL 6 UEK, but requires an inital ‘modprobe oracleasm’ ».

[root@racform1 app]# modprobe oracleasm

On installe ensuite le seul package non natif d’Oracleasm.

[root@racform1 app]# rpm -ivh oracleasm-support-2.1.5-1.el6.x86_64.rpm

Préparation… ########################################### [100%]

1:oracleasm-support ########################################### [100%]

[root@racform1 app]#

On voit que le module oracleasm est présent mais pas démarré

[root@racform1 app]# /etc/init.d/oracleasm status

Checking if ASM is loaded: yes

Checking if /dev/oracleasm is mounted: no

[root@racform1 app]#

Comme dans les versions précedentes, il faut le configurer.

[root@RACFORM2 ~]# oracleasm configure -i

Configuring the Oracle ASM library driver.

This will configure the on-boot properties of the Oracle ASM library

driver. The following questions will determine whether the driver is

loaded on boot and what permissions it will have. The current values

will be shown in brackets (’[]‘). Hitting <ENTER> without typing an

answer will keep that current value. Ctrl-C will abort.

Default user to own the driver interface []: oracle

Default group to own the driver interface []: dba

Start Oracle ASM library driver on boot (y/n) [n]: y

Scan for Oracle ASM disks on boot (y/n) [y]: y

Writing Oracle ASM library driver configuration: done

[root@RACFORM2 ~]#

Il ne reste plus qu’à le démarrer.

[root@racform1 app]# oracleasm init

Creating /dev/oracleasm mount point: /dev/oracleasm

Mounting ASMlib driver filesystem: /dev/oracleasm

[root@racform1 app]#

Et le tour est joué

[root@racform1 app]# /etc/init.d/oracleasm status

Checking if ASM is loaded: yes

Checking if /dev/oracleasm is mounted: yes

[root@racform1 app]#

Petite subtilité pour la suite, il arrive que l’installeur Oracle pour la couche cluster ne découvre pas les disques avec le chemin standard “ORCL:”, dans ce cas on peut faire la découverte des disques avec le chemin suivant : /dev/oracleasm/disks.

Oracle - 11GR2 RAC - 3° voting disk et nfs

ASM, Cluster RAC pas de Commentaire »

En version 10GR2 RAC et 11GR1 RAC, lorsqu’on était dans une configuration ‘cluster étendu’ avec deux baies de stockage, possibilité était donnée de stocker un des voting disks du cluster sur un partage NFS situé sur un autre serveur n’utilisant pas l’une des baies.

L’objectif de cette configuration était de fournir un quorum permettant à une des parties du cluster de continuer à fonctionner même en cas de perte complète d’une baie (ou d’une salle d’hébergement) ou en cas de perte du réseau privé entre les noeuds.

Si vous êtes encore en version 10GR2 ou 11GR1 vous trouverez des infos sur ce paramétrage ici

En version 11GR2 (11.2.0.2 en l’occurrence) où les voting disks peuvent être stockés dans ASM les choses se compliquent un peu pour mettre en place ce troisième voting disk :

On dispose d’un cluster RAC à deux nœuds utilisant deux baies de stockage, un diskgroup ‘OCRCONFIG1’ composé de quatre disques (deux sur chaque baie) est utilisé pour le stockage des OCR et voting disks.

Un partage nfs /votedisk est monté sur chacun des serveurs du cluster :

nfs-server:/votedisk /votedisk nfs rw,bg,hard,intr,rsize=32768,wsize=32768,tcp,noac,vers=3,timeo=600 0 0

La configuration des voting disks est pour l’instant la suivante :

[root@rac1 bin]# ./crsctl query css votedisk

##  STATE    File Universal Id                File Name Disk group
--  -----    -----------------                --------- ---------
 1. ONLINE   77d5d112ed054f97bf7049422ae169ff (ORCL:OCRCONFIG1) [OCRCONFIG1]
 2. ONLINE   4a72763dc7c94f5fbf4acbe0d51b4f69 (ORCL:OCRCONFIG2) [OCRCONFIG1]
 3. ONLINE   45936edfe3174f9fbff3e99794dab38a (ORCL:OCRCONFIG3) [OCRCONFIG1]
Located 3 voting disk(s).

On a trois voting disks, chacun sur un disque, deux dans une salle  (OCRCONFIG1 et OCRCONFIG3) et 1 dans l’autre (OCRCONFIG2)

Création du futur voting disk sur le partage nfs :

dd if=/dev/zero of=/votedisk/vote3 bs=1M count=500

Démarrer ensuite l’assistant asmca

Dans l’onglet ‘Groupe de disques’ sélectionner le groupe de disques  OCRCONFIG1 et sélectionner l’option ‘Ajouter des disques

votingnfs1

Cliquer ensuite sur le bouton ‘Modifier le chemin de repérage des disques’

votingnfs5

votingnfs3

Ajouter au(x) chemin(s) existant(s) l’emplacement du voting disk sur le partage NFS

Notre disque candidat apparait ensuite :

votingnfs4

Le sélectionner et cocher la case ‘Quorum’ (dernière colonne) pour indiquer qu’il s’agit d’un disque jouant le rôle de quorum.

votingnfs6

C’est fait !

Nous voici maintenant avec les disques suivants :

[root@rac1 bin]# ./crsctl query css votedisk
##  STATE    File Universal Id                File Name Disk group
--  -----    -----------------                --------- ---------
 1. ONLINE   77d5d112ed054f97bf7049422ae169ff (ORCL:OCRCONFIG1) [OCRCONFIG1]
 2. ONLINE   4a72763dc7c94f5fbf4acbe0d51b4f69 (ORCL:OCRCONFIG2) [OCRCONFIG1]
 3. ONLINE   1912723de8bf4f9abf7c79052b008606 (/votedisk/vote3) [OCRCONFIG1]

Le disque OCRCONFIG1 est en salle 1, le disque OCRCONFIG2 en salle 2, le troisième /votedisk/vote3 joue donc le rôle de quorum.

Remarque : évidemment, le serveur hébergeant ce disque n’est situé ni dans l’une ni dans l’autre des salles, et utilise également un stockage indépendant, sinon ça ne sert pas à grand-chose …

Attention : il y a quelques effets de bord à cette configuration, en particulier lorsque le device NFS n’est pas accessible, cf la partie ‘Known issue’ du white paper Oracle.

Restauration d’un OCR dans ASM (11GR2)

ASM, Cluster RAC pas de Commentaire »

Contrairement au versions précédentes, pour la 11GR2, on a la possibilité de stocker l’OCR et les Voting Disks dans un diskgroup ASM.

Après avoir installé un cluster utilisant cette nouvelle fonctionnalité, et faisant quelques tests de recette qui comprennent notamment la restauration de l’OCR, je me suis demandé comment pouvait on restaurer l’OCR quand le cluster est arrêté et donc ASM où il est stocké ?

Attention, ce qui suit est valable uniquement pour la version 11.2.0.1, en 11.2.0.2 les choses sont un petit peu différentes

1. Arrêter le  clusterware sur chaque noeud :

crsctl stop cluster -all

2. On vérifie que les deux clusterware sont bien arrêtés sur chaque noeud

3. Sur le noeud sur lequel est présent le backup de l’OCR démarrer manuellement les ressources css et asm

[root@rac1 bin]# ./crsctl start res ora.cssd -init
CRS-2672: Attempting to start 'ora.cssdmonitor' on 'rac1'
CRS-2676: Start of 'ora.cssdmonitor' on 'rac1' succeeded
CRS-2672: Attempting to start 'ora.cssd' on 'rac1'
CRS-2672: Attempting to start 'ora.diskmon' on 'rac1'
CRS-2676: Start of 'ora.diskmon' on 'rac1' succeeded
CRS-2676: Start of 'ora.cssd' on 'rac1' succeeded
[root@rac1 bin]# ./crsctl start res ora.asm -init
CRS-2672: Attempting to start 'ora.cluster_interconnect.haip' on 'rac1'
CRS-2672: Attempting to start 'ora.ctssd' on 'rac1'
CRS-2676: Start of 'ora.ctssd' on 'rac1' succeeded
CRS-2676: Start of 'ora.cluster_interconnect.haip' on 'rac1' succeeded
CRS-2672: Attempting to start 'ora.asm' on 'rac1'
CRS-2676: Start of 'ora.asm' on 'rac1' succeeded

4. Restaurer l’OCR depuis le backup qui nous intéresse

[root@rac1 bin]# ./ocrconfig -showbackup

rac1     2010/12/22 12:53:13     /app/product/11.2.0/grid/cdata/rac-cluster/backup00.ocr

rac1     2010/12/22 08:53:11     /app/product/11.2.0/grid/cdata/rac-cluster/backup01.ocr

rac1     2010/12/22 04:53:11     /app/product/11.2.0/grid/cdata/rac-cluster/backup02.ocr

rac1     2010/12/21 20:53:10     /app/product/11.2.0/grid/cdata/rac-cluster/day.ocr

rac1     2010/12/21 20:53:10     /app/product/11.2.0/grid/cdata/rac-cluster/week.ocr

rac1     2011/03/03 14:54:21     /app/product/11.2.0/grid/cdata/rac-cluster/backup_20110303_145421.ocr

[root@rac1 bin]# ./ocrconfig -restore /app/product/11.2.0/grid/cdata/rac-cluster/backup_20110303_145421.ocr

5. Démarrer manuellement les ressources manquantes du cluster evmd et crsd.

 [root@rac1 bin]# ./crsctl start res ora.evmd –init
CRS-2672: Attempting to start 'ora.evmd' on 'rac1'
CRS-2676: Start of 'ora.evmd' on 'rac1' succeeded
[root@rac1 bin]# ./crsctl start res ora.crsd –init
CRS-2672: Attempting to start 'ora.crsd' on 'rac1'
CRS-2676: Start of 'ora.crsd' on 'rac1' succeeded

6. Démarrer le clusterware sur les autres noeuds : crsctl start cluster –all

[root@rac1 bin]# ./crsctl start cluster –all
CRS-2672: Tentative de drmarrage de 'ora.cssdmonitor' sur 'rac2'
CRS-2676: 'ora.cssdmonitor' a été démarré sur 'rac2'
CRS-2672: Tentative de démarrage de 'ora.cssd' sur 'rac2'
CRS-2672: Tentative de démarrage de 'ora.diskmon' sur 'rac2'
CRS-2676: 'ora.diskmon' a été démarré sur 'rac2'
CRS-2676: 'ora.cssd' a été démarré sur 'rac2'
CRS-2672: Tentative de démarrage de 'ora.ctssd' sur 'rac2'
CRS-2672: Tentative de démarrage de 'ora.cluster_interconnect.haip' sur 'rac2'
CRS-2676: 'ora.ctssd' a été démarré sur 'rac2'
CRS-2672: Tentative de démarrage de 'ora.evmd' sur 'rac2'
CRS-2676: 'ora.evmd' a été démarré sur 'rac2'
CRS-2676: 'ora.cluster_interconnect.haip' a été démarré sur 'rac2'
CRS-2672: Tentative de démarrage de 'ora.asm' sur 'rac2'
CRS-2676: 'ora.asm' a été démarré sur 'rac2'
CRS-2672: Tentative de démarrage de 'ora.crsd' sur 'rac2'
CRS-2676: 'ora.crsd' a été démarré sur 'rac2'
CRS-4690: Oracle Clusterware is already running on 'rac1'
CRS-4000: Command Start failed, or completed with errors

7. Vérification

 [root@rac1 bin]# ./crs_stat –t
Name           Type           Target    State     Host
ora.DGDATA.dg  ora....up.type ONLINE    ONLINE    rac1
ora.DGFRA.dg   ora....up.type ONLINE    ONLINE    rac1
ora....ER.lsnr ora....er.type ONLINE    ONLINE    rac1
ora....N1.lsnr ora....er.type ONLINE    ONLINE    rac1
ora....TING.dg ora....up.type ONLINE    ONLINE    rac1
ora.asm        ora.asm.type   ONLINE    ONLINE    rac1
ora.cvu        ora.cvu.type   ONLINE    ONLINE    rac1
ora.gsd        ora.gsd.type   OFFLINE   OFFLINE
ora....network ora....rk.type ONLINE    ONLINE    rac1
ora.oc4j       ora.oc4j.type  ONLINE    ONLINE    rac1
ora.ons        ora.ons.type   ONLINE    ONLINE    rac1
ora....SM1.asm application    ONLINE    ONLINE    rac1
ora....C1.lsnr application    ONLINE    ONLINE    rac1
ora.rac1.gsd   application    OFFLINE   OFFLINE
ora.rac1.ons   application    ONLINE    ONLINE    rac1
ora.rac1.vip   ora....t1.type ONLINE    ONLINE    rac1
ora....SM2.asm application    ONLINE    ONLINE    rac2
ora....C2.lsnr application    ONLINE    ONLINE    rac2
ora.rac2.gsd   application    OFFLINE   OFFLINE
ora.rac2.ons   application    ONLINE    ONLINE    rac2
ora.rac2.vip   ora....t1.type ONLINE    ONLINE    rac2
ora....ry.acfs ora....fs.type ONLINE    ONLINE    rac1
ora.scan1.vip  ora....ip.type ONLINE    ONLINE    rac1
ora.setra.db   ora....se.type ONLINE    ONLINE    rac1

Un peu plus compliqué que dans les versions précédentes, mais ASM oblige ….

Migration couche RAC 10G vers 11G

ASM, Cluster RAC pas de Commentaire »

Migration crs 10G vers 11GR2

Les clusters RAC installés ces dernières années en 10g vont devoir être migrés un jour ou l’autre fatalement.

Les éditeurs mettant souvent du temps à valider leurs soft avec la version 11GR2,
on peut prendre de l’avance en ne migrant que les couche CRS et ASM en 11GR2 et en laissant les bases en 10G.

Si vous êtes sur OEL4, vérifier ou upgrader votre OS au minimum en 4.7

Appliquer les pré-requis pour la version 11GR2 sur votre système (note Metalink 880942.1 pour OEL4 et 880989.1 pour OEL5).

Un petit coup de cluster verify permet d’en avoir le coeur net.

runcluvfy.sh stage -pre crsinst -n node1,node2 -verbose

Une fois les binaires du grid 11GR2 copiés, on va utiliser la fonctionnalité “Mettre à niveau Oracle Grid Infrastructure” de l’installer.
Il n’est pas nécéssaire d’arrêter le crs, bien que ça marche quand même si c’est le cas.
On peut sinon passer le script clusterware/upgrade/preupdate.sh qui arrête le crs.

On peut donc théoriquement faire l’upgrade d’un noeud après l’autre, sans coupure de production.

Si vous utilisez ASM, alors arrêtez vos bases et vos instances ASM, l’installeur vous le demandera de toute façon.

Si les pré-requis ont été respecté et l’adresse scan convenablement renseignée, l’installation se déroule comme une installation 11GR2 standard.

Au lieu de lancer le fameux root.sh, on va lancer le rootupgrade.sh qui va arrêter le crs (s’il est démarré), effectuer les mises à jour nécéssaires et relancer la couche cluster.

[root@rac1 tmp]# /app/11.2.0/grid/rootupgrade.sh
Running Oracle 11g root.sh script...
The following environment variables are set as:
    ORACLE_OWNER= oracle
    ORACLE_HOME=  /app/11.2.0/grid
Enter the full pathname of the local bin directory: [/usr/local/bin]:
The file "dbhome" already exists in /usr/local/bin.  Overwrite it? (y/n)
[n]: y
   Copying dbhome to /usr/local/bin ...
The file "oraenv" already exists in /usr/local/bin.  Overwrite it? (y/n)
[n]: y
   Copying oraenv to /usr/local/bin ...
The file "coraenv" already exists in /usr/local/bin.  Overwrite it? (y/n)
[n]: y
   Copying coraenv to /usr/local/bin ...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root.sh script.
Now product-specific root actions will be performed.
2011-03-29 15:23:53: Parsing the host name
2011-03-29 15:23:53: Checking for super user privileges
2011-03-29 15:23:53: User has super user privileges
Using configuration parameter file: /app/11.2.0/grid/crs/install/crsconfig_params
Creating trace directory
Failure 1 contacting CSS daemon
Command return code of 6 (1536) from command: /app/oracle/product/10.2.0/crs/bin/crsctl check cssd
Cannot communicate with EVM
Cannot communicate with CRS
Command return code of 1 (256) from command: /app/oracle/product/10.2.0/crs/bin/crsctl check crsd
LOCAL ADD MODE
Creating OCR keys for user 'root', privgrp 'root'..
Operation successful.
  root wallet
  root wallet cert
  root cert export
  peer wallet
  profile reader wallet
  pa wallet
  peer wallet keys
  pa wallet keys
  peer cert request
  pa cert request
  peer cert
  pa cert
  peer root cert TP
  profile reader root cert TP
  pa root cert TP
  peer pa cert TP
  pa peer cert TP
  profile reader pa cert TP
  profile reader peer cert TP
  peer user cert
  pa user cert
Adding daemon to inittab
CRS-4123: Oracle High Availability Services has been started.
ohasd is starting
ADVM/ACFS is not supported on Redhat 4
CRS-2672: Tentative de démarrage de 'ora.mdnsd' sur 'rac1'
CRS-2676: 'ora.mdnsd' a été démarré sur 'rac1'
CRS-2672: Tentative de démarrage de 'ora.gipcd' sur 'rac1'
CRS-2676: 'ora.gipcd' a été démarré sur 'rac1'
CRS-2672: Tentative de démarrage de 'ora.gpnpd' sur 'rac1'
CRS-2676: 'ora.gpnpd' a été démarré sur 'rac1'
CRS-2672: Tentative de démarrage de 'ora.cssdmonitor' sur 'rac1'
CRS-2676: 'ora.cssdmonitor' a été démarré sur 'rac1'
CRS-2672: Tentative de démarrage de 'ora.cssd' sur 'rac1'
CRS-2672: Tentative de démarrage de 'ora.diskmon' sur 'rac1'
CRS-2676: 'ora.diskmon' a été démarré sur 'rac1'
CRS-2676: 'ora.cssd' a été démarré sur 'rac1'
CRS-2672: Tentative de démarrage de 'ora.ctssd' sur 'rac1'
CRS-2676: 'ora.ctssd' a été démarré sur 'rac1'
CRS-2672: Tentative de démarrage de 'ora.crsd' sur 'rac1'
CRS-2676: 'ora.crsd' a été démarré sur 'rac1'
CRS-2672: Tentative de démarrage de 'ora.evmd' sur 'rac1'
CRS-2676: 'ora.evmd' a été démarré sur 'rac1'
clscfg: EXISTING configuration version 3 detected.
clscfg: version 3 is 10G Release 2.
Successfully accumulated necessary OCR keys.
Creating OCR keys for user 'root', privgrp 'root'..
Operation successful.
rac1     2011/03/29 15:27:32     /app/11.2.0/grid/cdata/rac1/backup_20110329_152732.olr
Configure Oracle Grid Infrastructure for a Cluster ... succeeded
Updating inventory properties for clusterware
Démarrage d'Oracle Universal Installer...
Vérification de l'espace de swap : il doit être supérieur à 500 Mo.   Réel 1567 Mo    Succès
The inventory pointer is located at /etc/oraInst.loc
The inventory is located at /app/oracle/oraInventory
'UpdateNodeList' a réussi.
Démarrage d'Oracle Universal Installer...
Vérification de l'espace de swap : il doit être supérieur à 500 Mo.   Réel 1567 Mo    Succès
The inventory pointer is located at /etc/oraInst.loc
The inventory is located at /app/oracle/oraInventory
'UpdateNodeList' a réussi.

Tout est redémarré sur ce noeud, il ne reste plus qu’à migrer ASM.

Pour cela on lance l’assistant asmca à partir du home grid.

L’assistant va vous proposer de mettre à niveau votre version d’ASM, et va arrêter successivement toutes les instances pour finir par les redémarrer dans la nouvelle version.

On verra apparaitre les ressources correspondantes aux diskgroups au fur et à mesure.

Vous avez maitenant un beau cluster en 11GR2 avec des bases en 10G.

Une bonne partie des actions à réaliser pouvant se faire en amont (pré requis, copie des binaires etc..) et sans arrêt de service, on peut donc s’en tirer avec des arrêts de production relativement courts.

PS : évidemment un retour arrière est à prévoir (et à tester :-))

Restaurer l’OCR sur un RAC 11GR2

ASM, Cluster RAC pas de Commentaire »

Après avoir installé un cluster 11GR2 incluant la nouvelle fonctionnalité majeure de cette version du clusterware à savoir de pouvoir mettre l’OCR et les voting disks dans ASM, et faisant quelques tests de recette qui comprennent notament la restauration de l’OCR, je me suis demandé comment pouvait on restaurer l’OCR à partir d’ASM quand le cluster est arrêtté?

1. Arrêter le  clusterware sur chaque noeud : crsctl stop cluster -all
2. Sur le noeud ou est présent le backup de l’OCR démarrer manuellementles ressources css and asm.

crsctl start res ora.cssd -init
crsctl start res ora.asm -init

3.Restorer l’ocr:

ocrconfig -showbackup
ocrconfig -restore <ocrbackup file>

4.Démarrer manuellement les ressources manquantes du cluster evmd and crsd.
crsctl start res ora.evmd -init
crsctl start res ora.crsd -init

5. Démarrer le clusterware sur les autres noeuds : crsctl start cluster -all

Un peu plus compliqué que dans les versions précédentes, mais ASM oblige.

Albanlepunk

Astuce : Créér une DB avec ASM sur windows avec un fichier au lieu d’un disque. by albanlepunk

ASM 2 Commentaires »

Sous windows (ici avec une version 10.2.0.4).

Avec le DBCA lancer la création d’une base, au moment de choisir la destination des fichiers de la db , choisir ASM.

Il faut à ce moment là lui présenter un disque ou une volume non formaté.

Vous n’avez pas de partition libre et non formaté sous la main.

On peut avec asmtool -create Nom_Fichier taille en mégas

EX : D:\>asmtool -create D:\oracle\product\10.2.0\oradata\ASM\asmdb_setra.asm 5000

Après ce “disque” est vu comme éligible pour ASM.

Ensuite Créer une instance ASM avec oradim sans oublier de créer les répertoires qui vont bien.

mkdir %ORACLE_BASE%\admin\+ASM\bdump
mkdir %ORACLE_BASE%\admin\+ASM\cdump
mkdir %ORACLE_BASE%\admin\+ASM\hdump
mkdir %ORACLE_BASE%\admin\+ASM\pfile
mkdir %ORACLE_BASE%\admin\+ASM\udump
oradim -new -asmsid +ASM -syspwd change_on_install -pfile C:\oracle\product\10.1.0\admin\+ASM\pfile\initASM.ora -spfile
    -startmode auto -shutmode immediate

D:\>set ORACLE_SID=+ASM

D:\>sqlplus / as sysdba

SQL*Plus: Release 10.2.0.4.0 - Production on Mer. Juin 10 16:28:11 2009

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.

ConnectÚ Ó :
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> create pfile=’D:\oracle\product\10.2.0\db_1\database\initASM.ora’ from spfi
le;

Fichier créé.
SQL> shutdown immediate
ORA-15100: nom de groupe de disques non valide ou absent
Instance ASM arrétée

Modifier le initASM.ora créé précédemment.

_asm_allow_only_raw_disks=false
asm_diskgroups='DATADG'

SQL> startup pfile=D:\oracle\product\10.2.0\db_1\database\initASM.ora
Instance ASM démarrée

Total System Global Area   83886080 bytes
Fixed Size                  1295152 bytes
Variable Size              57425104 bytes
ASM Cache                  25165824 bytes
ORA-15110: aucun groupe de disques n’est monte

SQL> create diskgroup DATADG external redundancy disk ‘D:\oracle\product\10.2.0\
oradata\ASM\asmdb_setra.asm’;

Groupe de disques crÚÚ.

SQL>

Démarrer le dbca et lancer la création d’une base de données sur ASM, votre diskgroup sera vu dans dbca.

On peut procéder de même en créant un deuxième fichier puis diskgroup FRADG pour la Flash Recovery Area .

Et le tour est joué.

Vider ASM de ses fichiers avec Alter diskgroup drop file! by albanlepunk

ASM pas de Commentaire »

Il est possible de “rentrer” dans ASM et de naviguer dedans en utilisant l’exécutable asmcmd.

C:\oracle\product\10.2.0\db_1\BIN>asmcmd -p
ASMCMD [+] > ls
DATADG/
FRADG/
ASMCMD [+] > cd DATADG
ASMCMD [+DATADG] > ls
ASMCMD [+DATADG] > ls
ASMCMD [+DATADG] > cd ..
ASMCMD [+] > cd FRADG
ASMCMD [+FRADG] > ls
TEST/

la commande rm ayant cours, on peut donc supprimer des fichiers manuellement

Comment automatiser cette tache, par exemple avant de faire un Rman Duplicate sur un serveur de restauration?

Il est possible de supprimer des fichiers dans ASM en étant connecté sys  (cad ORACLE_SID=+ASM) avec l’instruction :  alter diskgroup “XXXXX” drop file ‘yyyyyyyy’;

Toute la difficulté consiste à récupérer les bons noms de fichiers tels qu’ils sont dans ASM.

Voilà un script qui permet de le faire.

set long 20000
set line 200
set pagesize 10000
set heading off
set verify off
set feedback off
set echo off

spool c:\temp\00_nettoie_file_asm.sql

select ‘alter diskgroup ‘||g.name||’ drop file ‘||”’+'|| g.name||’.'||f.file_number||’.'||f.incarnation||”’;’
FROM v$asm_diskgroup g,
v$asm_file f,
v$asm_alias a
where g.name in (’DATADG’,'FRADG’)
and g.group_number = f.group_number
and g.group_number = a.group_number
and f.file_number = a.file_number
order by f.file_number;

spool off

@c:\temp\00_nettoie_file_asm.sql

set heading on
set verify on
set feedback on
set echo on
exit

Penser à renseigner le diskgroup in (’   ‘,’   ‘).

Votre instance ASM est vide et prête à accueuillir de nouveaux fichiers.