mar 01 2011

Mise a jour photos VTT

Tag: VTTUggla @ 22 h 16 min

Et voila, j’ai remis à jour ma galerie de façon massive avec  l’ensemble des photos de VTT de la saison précédente jusqu’à aujourd’hui.
De cette manière je vais essayer de faire un suivi plus régulier des sorties.

La galerie :

http://uggla.free.fr/phpwebgallery/index.php?/category/1


mar 01 2011

Gestion des espaces dans les boucles « for » avec IFS

Tag: ScriptsUggla @ 14 h 17 min

Une astuce pour gérer les espaces dans les boucles « for » en shell (bash, ksh).
Rien ne vaut un petit exemple pour montrer le problème :

root@hx04970: /root/home/root/nene # ll
total 0
-rw-r--r--   1 root       sys              0 Feb 28 14:09 1
-rw-r--r--   1 root       sys              0 Feb 28 14:09 2
-rw-r--r--   1 root       sys              0 Feb 28 14:09 3
drwxr-xr-x   2 root       sys             96 Feb 28 12:04 tata tutu
drwxr-xr-x   2 root       sys             96 Feb 28 12:03 titi
drwxr-xr-x   2 root       sys             96 Feb 28 12:03 toto

Imaginons que je fasse une boucle sur l’ensemble des fichiers de l’arborescence ci dessus.

root@hx04970: /root/home/root/nene # for i in *;do echo $i;done
1
2
3
tata tutu
titi
toto

Ici tout se passe bien, pas de problèmes, le répertoire « tata tutu » est bien interprété.

Maintenant je complique un peu en voulant faire une boucle sur les répertoires seulement :

root@hx04970: /root/home/root/nene # for i in $(find . -type d);do echo $i;done
.
./toto
./titi
./tata
tutu

Et la c’est le drame :) .

L’espace sur le répertoire « tata tutu » est vu comme un séparateur et le shell croit que nous avons 2 répertoires tata et tutu.
Le bon administrateur Unix sait qu’il faut éviter les espaces c’est mal. (C’est comme : on ne croise jamais les effluves : c’est mal –> cf Ghostbuster).

Cool ! Mais si le répertoire est un share cifs avec des utilisateurs de windows, il y a de grande chance que l’on retrouve plein d’espaces dans les noms de fichier.

La meilleure méthode de résolution du problème ci dessus est d’utiliser la « variable » IFS.
Un petit man ksh me donne :

IFS Internal field separators, normally space, tab,
and newline that are used to separate command
words resulting from command or parameter
substitution, and for separating words with the
special command read. The first character of the
IFS parameter is used to separate arguments for
the « $* » substitution (see Quoting below).

IFS est la « variable » qui définie le séparateur, par défaut espace, tab et nouvelle ligne.

En redéfinissant le séparateur, sans l’espace et le tab on obtient :

root@hx04970: /root/home/root/nene # IFS=$'\n' && for i in $(find . -type d);do echo $i;done
.
./toto
./titi
./tata tutu

Le problème est résolu.

Pour aller plus loin : http://tldp.org/LDP/abs/html/internalvariables.html#IFSH


mar 01 2011

Passer une base Oracle en archivelog mode.

Tag: DBUggla @ 14 h 15 min

Truc de base, mais j’arrive jamais à me souvenir….

  1. Vérifier l’etat de la base.
    SQL> select name,log_mode from v$database;
    
    NAME      LOG_MODE
    --------- ------------
    MODEFRR1  NOARCHIVELOG
    
  2. Définir la destination des archives.
    SQL> alter system set log_archive_dest_1='location=+DCLICDGR' scope=both sid='*';
    System altered.
    
    SQL> show parameter log_archive_dest_1
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    log_archive_dest_1                   string      location=+DCLICDGR
    log_archive_dest_10                  string
    ...
    
  3. Arrêt de la base.
    $ srvctl stop database -d MODEFRR1
    
  4. Passage en mode archive.
    $ sqlplus / as    sysdba
    
    SQL*Plus: Release 11.2.0.2.0 Production on Tue Mar 1 12:03:41 2011
    
    Copyright (c) 1982, 2010, Oracle.  All rights reserved.
    
    Connected to an idle instance.
    
    SQL> startup mount
    ORACLE instance started.
    
    Total System Global Area 1068937216 bytes
    Fixed Size                  2188072 bytes
    Variable Size             683674840 bytes
    Database Buffers          377487360 bytes
    Redo Buffers                5586944 bytes
    
    SQL> alter database archivelog;
    
    Database altered.
    
    SQL> alter database open;
    
    Database altered.
    
  5. Démarrage 2eme instances.
    $ srvctl start database -d MODEFRR1
    
  6. Vérification.
    SQL> archive log list
    Database log mode              Archive Mode
    Automatic archival             Enabled
    Archive destination            +DCLICDGR
    Oldest online log sequence     4
    Next log sequence to archive   5
    Current log sequence           5
    
  7. Commande (que j’oublie à chaque fois) pour générer des logs.
    SQL> alter system archive log current;
    
    System altered.
    
    SQL> alter system switch logfile;
    
    System altered.
    

mar 01 2011

Ajouter un group à un utilisateur (hpux)

Tag: UnixUggla @ 11 h 10 min

Petite astuce pour hpux.

La commande usermod de hpux n’a pas de fonction append comme sous Linux.

L’ajout d’un group a un utilisateur oblige a redéfinir entièrement l’utilisateur.

La « commande » ci dessous simplifie cette opération :

account=grid && newgrp=dclicdba && echo "usermod -g $(id -g $account) -G $(id -G $account | sed 's/ /,/g'),$newgrp $account"

Résultat :

usermod -g 107 -G 107,108,109,110,111,112,114,dclicdba grid

Plus qu’a exécuter la ligne ci dessus pour ajouter le groupe.
Si le login est deja utilisé, alors il faut ajouter l’option -F –> usermod -F -g 107 -G 107,108,109,110,111,112,114,dclicdba grid


fév 26 2011

Sortie a la ferme de Pissou

Tag: VTTUggla @ 20 h 13 min

Petite virée à la ferme Pissou avec Olivier et Rico.
Olivier mon nouvel élève, :)   commence à aller pas mal il a bien négocier un des passages techniques sur le haut. Ca devrait le faire pour aller en Oisans.

Rico lui en a bien ch… à la montée, petit manque d’entraînement, mais au mois il est détendu.

Sinon RAS, bonne sortie comme d’hab, passage dans le champs plein gaz.
Bonnes sensations avec le Kern, malgré une fuite sur la roue arriere.

 

Distance : ~28 km D+ : ~780 m.
Voir la trace avec Google map.

Le fichier gpx: http://uggla.free.fr/gps_track/2k11/Pissou20110226.gpx.
Le fichier kml : http://uggla.free.fr/gps_track/2k11/Pissou20110226.kml.
Les photos de la sortie sur la galerie.


fév 21 2011

Procédure export/import d’un VG

Tag: UnixUggla @ 16 h 58 min

Procédure d’export/import d’un VG d’une machine vers une autre.

  1. Exporte la map du vg
    root@hx000140: /root/home/root # vgexport -s -v -p -m /tmp/stage.map /dev/stage
    Beginning the export process on Volume Group "/dev/stage".
    vgexport: Volume group "/dev/stage" is still active.
    /dev/dsk/c34t0d0
    /dev/dsk/c35t0d0
    vgexport: Preview of vgexport on volume group "/dev/stage" succeeded.
    
  2. Copier la map sur l’autre node
    scp /tmp/stage.map hx000141:/tmp
    
  3. Importer en mode previous (-p) pour verifier que c’est ok
    root@hx000141: /root/home/root # vgimport -s -v -p -m /tmp/stage.map /dev/stage
     
    Beginning the import process on Volume Group "/dev/stage".
    Logical volume "/dev/stage/stagelv" has been successfully created
    with lv number 1.
    vgimport: Volume group "/dev/stage" has been successfully created.
    Warning: A backup of this volume group may not exist on this machine.
    Please remember to take a backup using the vgcfgbackup command after activating the volume group.
    
  4. Importer le vg
    root@hx000141: /root/home/root # vgimport -s -v -m /tmp/stage.map /dev/stage
    Beginning the import process on Volume Group "/dev/stage".
    Logical volume "/dev/stage/stagelv" has been successfully created
    with lv number 1.
    vgimport: Volume group "/dev/stage" has been successfully created.
    Warning: A backup of this volume group may not exist on this machine.
    Please remember to take a backup using the vgcfgbackup command after activating the volume group.
    
  5. Vérifier que le VG est maintenant dans la conf
    root@hx000141: /root/home/root # vgdisplay stage
    vgdisplay: Volume group not activated.
    vgdisplay: Cannot display volume group "stage".
    
  6. Démonter le fs sur le 1er node
    root@hx000140: /root/home/root # umount /staging
    
  7. Désactiver le VG sur le 1er node
    root@hx000140: /root/home/root # vgchange -a n /dev/stage
    Volume group "/dev/stage" has been successfully changed.
    
  8. Exporter le VG (effacement de la conf) sur le 1er node
    root@hx000140: /root/home/root # vgexport /dev/stage
    vgexport: Volume group "/dev/stage" has been successfully removed.
    
  9. Activer le VG sur le 2nd node
    root@hx000141: /root/home/root # vgchange -a y /dev/stage
    Activated volume group.
    Volume group "/dev/stage" has been successfully changed.
    
  10. Vérification que le vg est ok sur le 2nd node
    root@hx000141: /root/home/root # vgdisplay -v /dev/stage
    --- Volume groups ---
    VG Name                     /dev/stage
    VG Write Access             read/write
    VG Status                   available
    Max LV                      255
    Cur LV                      1
    Open LV                     1
    Max PV                      16
    Cur PV                      1
    Act PV                      1
    Max PE per PV               32000
    VGDA                        2
    PE Size (Mbytes)            32
    Total PE                    31999
    Alloc PE                    31360
    Free PE                     639
    Total PVG                   0
    Total Spare PVs             0
    Total Spare PVs in use      0
    VG Version                  1.0
    VG Max Size                 16000g
    VG Max Extents              512000
     
       --- Logical volumes ---
       LV Name                     /dev/stage/stagelv
       LV Status                   available/syncd
       LV Size (Mbytes)            1003520
       Current LE                  31360
       Allocated PE                31360
       Used PV                     1
     
    
       --- Physical volumes ---
       PV Name                     /dev/dsk/c33t0d0
       PV Name                     /dev/dsk/c35t0d0 Alternate Link
       PV Status                   available
       Total PE                    31999
       Free PE                     639
       Autoswitch                  On
       Proactive Polling           On
    
  11. Vérification que le vg est ok sur le 2nd node
    Commenter :
    /dev/stage/stagelv /staging vxfs defaults 0 2
    dans /etc/fstab sur le 1er node
    
    De-commenter :
    /dev/stage/stagelv /staging vxfs defaults 0 2
    dans /etc/fstab sur le 2nd node
    
  12. Vérifier que le point de montage est présent
    root@hx000141: /root/home/root # ll -d /staging
    drwxr-xr-x   2 root       sys             96 Feb  3 15:12 /staging
    
  13. Montage et vérification
    root@hx000141: /root/home/root # mount -aQ
    
    root@hx000141: /root/home/root # mount
    / on /dev/vg00/lvol3 ioerror=mwdisable,largefiles,delaylog,dev=40000003 on Thu Jan  6 14:54:02 2011
    /stand on /dev/vg00/lvol1 ioerror=mwdisable,nolargefiles,log,tranflush,dev=40000001 on Thu Jan  6 14:54:12 2011
    /var on /dev/vg00/lvol8 ioerror=mwdisable,largefiles,delaylog,dev=40000008 on Thu Jan  6 14:54:53 2011
    /var/adm/crash on /dev/vg00/lvol10 ioerror=mwdisable,largefiles,delaylog,dev=4000000a on Thu Jan  6 14:54:53 2011
    /usr on /dev/vg00/lvol7 ioerror=mwdisable,largefiles,delaylog,dev=40000007 on Thu Jan  6 14:54:54 2011
    /tmp on /dev/vg00/lvol4 ioerror=mwdisable,largefiles,delaylog,dev=40000004 on Thu Jan  6 14:54:54 2011
    /opt on /dev/vg00/lvol6 ioerror=mwdisable,largefiles,delaylog,dev=40000006 on Thu Jan  6 14:54:54 2011
    /home on /dev/vg00/lvol5 ioerror=mwdisable,largefiles,delaylog,dev=40000005 on Thu Jan  6 14:54:54 2011
    /appl on /dev/vg01/lvol1 ioerror=mwdisable,largefiles,delaylog,dev=80000001 on Thu Jan  6 14:54:55 2011
    /net on -hosts ignore,indirect,nosuid,soft,nobrowse,dev=4000002 on Thu Jan  6 14:56:19 2011
    /staging on /dev/stage/stagelv ioerror=mwdisable,largefiles,delaylog,dev=40010001 on Thu Feb  3 15:13:08 2011
    

fév 21 2011

Deplacer les « undo » Oracle

Tag: DBUggla @ 15 h 39 min

Quelques commandes pour déplacer les « undo » sur Oracle RAC 10gR2.

  • Requête pour trouver les undo:
    select FILE_NAME,TABLESPACE_NAME,BYTES/1024/1024,AUTOEXTENSIBLE,STATUS,USER_BYTES from dba_data_files where TABLESPACE_NAME like 'UNDO%';
    
  • Créer les nouveaux undo :
    create undo tablespace UNDOTBS3 datafile '/oradata/GFSTEUR1/group01/undotbs03_1.dbf' size 15G autoextend off;
    create undo tablespace UNDOTBS4 datafile '/oradata/GFSTEUR1/group01/undotbs04_1.dbf' size 15G autoextend off;
    
  • Pointer sur les nouveaux undo :

    Attention : ne pas oublier le SID !!!

    ALTER SYSTEM SET undo_tablespace = UNDOTBS3 SCOPE=BOTH SID='GFSTE1R1';
    ALTER SYSTEM SET undo_tablespace = UNDOTBS4 SCOPE=BOTH SID='GFSTE2R1';
    
  • Effacer les anciens undo :
    DROP TABLESPACE UNDOTBS1 INCLUDING CONTENTS AND DATAFILES;
    DROP TABLESPACE UNDOTBS2 INCLUDING CONTENTS AND DATAFILES;
    

fév 21 2011

Script mapping EVA

Tag: ScriptsUggla @ 15 h 07 min

Un petit script perl pour trouver les correspondances entre les luns UUIDs, special files, major numbers, minor numbers.

Dépendances :

evainfo –> outil client pour extraire les informations des EVA.

#!/usr/bin/perl

use strict;
use warnings;
use Data::Dumper;

my @evainfo=`evainfo -a`;
my @ioscan=`ioscan -m dsf`;
my %devmap;
my %devmap2;
my %lunmap;
my %sf;

my $dsf;
my $olddsf;
my $legacy;

# Create map : "legacy device" = "dsf device"
foreach(@ioscan){
        if ( /\/dev/ ){
                ($dsf, $legacy)=split(/\s+/,$_);
                if ( $dsf eq "" ){
                        $dsf=$olddsf;
                }
                $devmap{$legacy}=$dsf;
        $olddsf=$dsf;
        }
}

# Create map : "wwnn id" = "legacy device"
foreach(@evainfo){

        if ( /\/dev/){
                (my $legacy, undef, my $wwnn, my $size, my $ctrl)=split(/\s+/,$_);
                $lunmap{$wwnn}=$legacy;
        }
}

# Create map : "dsf device" = "major and minor"
%devmap2=%devmap; # values() modify the hash, so copy to a new one to avoid %devmap to be modified
foreach(values(%devmap2)){
        open (SHELLCMD,"ll $_ |");
                while (<SHELLCMD>){
                        (undef,undef,undef,undef,my $major, my $minor,undef,undef,undef,my $dev)=split(/\s+/,$_);
                        $sf{$dev}->{"major"}=$major;
                        $sf{$dev}->{"minor"}=$minor;
                }
        close (SHELLCMD)
}

# Debug purpose
#print Dumper(\%devmap);
#print Dumper(\%lunmap);
#print Dumper(\%sf);

# Print output
foreach(sort(keys(%lunmap))){
        my $legacy=$lunmap{$_};
        printf("%s %s %s %s\n",$_ ,$devmap{$legacy}, $sf{$devmap{$legacy}}->{"major"}, $sf{$devmap{$legacy}}->{"minor"});
}

Exemple d'usage :
root@hx000140: /root/home/root # perl eva_mapping.pl
6001-4380-05DE-C738-0000-6000-08B4-0000 /dev/oracle/asm_eva1 13 0x000019
6001-4380-05DE-C738-0000-6000-08B8-0000 /dev/oracle/asm_eva2 13 0x00001a
6001-4380-05DE-C738-0000-6000-08BC-0000 /dev/oracle/asm_eva3 13 0x00001b
6001-4380-05DE-C738-0000-6000-08C0-0000 /dev/oracle/asm_eva4 13 0x00001c
6001-4380-05DE-C738-0000-6000-08C4-0000 /dev/oracle.bak/asm_eva5 13 0x00001d
6001-4380-05DE-C738-0000-6000-08C8-0000 /dev/oracle.bak/asm_eva6 13 0x00001e
6001-4380-05DE-C738-0000-6000-08CC-0000 /dev/oracle.bak/asm_eva7 13 0x00001f
6001-4380-05DE-C738-0000-6000-08D0-0000 /dev/oracle.bak/asm_eva8 13 0x000020


fév 17 2011

Twitter et Facebook

Tag: DiversUggla @ 18 h 03 min

Twitter :
http://twitter.com/Uggla_

Facebook :
http://www.facebook.com/home.php/rene.ribaud


fév 17 2011

Reprise du blog.

Tag: WordpressUggla @ 1 h 24 min

Après un long moment d’inactivité, ce blog va reprendre du service.

Les articles seront probablement plus court de façon a générer moins de charge de travail.

Pour fêter cette reprise, il fallait mettre à jour :

- WordPress à la version 3.0.5 ainsi que certaines extensions.

- Piwigo ex Phpwebgallery en version 2.0.10.


« Page précédentePage suivante »