Ok

En poursuivant votre navigation sur ce site, vous acceptez l'utilisation de cookies. Ces derniers assurent le bon fonctionnement de nos services. En savoir plus.

oracle

  • [ORACLE] ASM

    clean_asm_disks.sh

    #!/bin/bash

    # =================================================================

    # clean_asm_disks.sh → À exécuter en oracle AVANT tout delete Azure

    # Auteur : toi + moi

    # Objectif : garantir à 100 % que tu peux supprimer un disque sans crasher la base

    # =================================================================

     

    export ORACLE_SID=+ASM1 # ou +ASM2 sur l'autre nœud RAC

    export ORAENV_ASK=NO

    . oraenv > /dev/null 2>&1

     

    echo "================================================================="

    echo "VÉRIFICATION DE SÉCURITÉ ASM - $(date)"

    echo "Instance : ( ORACLE_SID - Host : )(hostname)"

    echo "================================================================="

     

    sqlplus -S / as sysasm <<EOF

     

    SET PAGESIZE 200 LINESIZE 200

    COL dg_name FORMAT A12

    COL disk_path FORMAT A50

    COL header_status FORMAT A12

    COL mount_status FORMAT A12

    COL mode_status FORMAT A12

    COL state FORMAT A10

    COL failgroup FORMAT A20

     

    PROMPT 

    PROMPT 1. État des diskgroups

    SELECT name, state, type FROM v$asm_diskgroup;

     

    PROMPT 

    PROMPT 2. Opérations de rebalance en cours ou en erreur

    SELECT group_number, operation, state, power, est_minutes FROM v$asm_operation;

    SELECT * FROM gv$asm_operation WHERE state!='DONE';

     

    PROMPT 

    PROMPT 3. Disques à risque (FORMER mais rebalance pas fini, ou MISSING)

    SELECT group_number,

           name,

           path disk_path,

           header_status,

           mount_status,

           mode_status,

           state,

           failgroup

    FROM v$asm_disk

    WHERE header_status IN ('FORMER','MISSING')

       OR (header_status='MEMBER' AND mode_status!='ONLINE')

    ORDER BY header_status, group_number;

     

    PROMPT 

    PROMPT 4. Disques vraiment supprimables en toute sécurité (rebalance 100% terminé)

    PROMPT → HEADER_STATUS = CANDIDATE ou PROVISIONED uniquement

    SELECT 'SUPPRIMABLE EN TOUTE SÉCURITÉ' statut,

           path disk_path,

           header_status,

           failgroup

    FROM v$asm_disk

    WHERE header_status IN ('CANDIDATE','PROVISIONED')

    UNION ALL

    SELECT 'ATTENTION - encore dans le diskgroup' statut,

           path, header_status, failgroup

    FROM v$asm_disk

    WHERE header_status = 'FORMER';

     

    PROMPT 

    PROMPT ================================================================

    PROMPT RÈGLE D’OR :

    PROMPT Seuls les disques en CANDIDATE ou PROVISIONED peuvent être

    PROMPT détachés/supprimés dans Azure sans aucun risque.

    PROMPT Si tu vois du FORMER → attends la fin du rebalance ou force le DROP DISK

    PROMPT ================================================================

    EOF

     

    echo

    echo "Fin du check : $(date)"

    echo "Tu peux supprimer dans Azure UNIQUEMENT les disques marqués SUPPRIMABLE EN TOUTE SÉCURITÉ"

    echo

     

    safe_clean_asm_disks.sh

    #!/bin/bash

    # ================================================================

    # safe_clean_asm_disks.sh → Version AUTO (nettoyage intelligent)

    # Exécuter en user oracle sur un nœud où +ASM est vivant

    # ================================================================

     

    export ORACLE_SID=+ASM1 # change en +ASM2 si tu es sur le nœud 2

    export ORAENV_ASK=NO

    . oraenv > /dev/null 2>&1

     

    LOG=/tmp/safe_clean_asm_$(date +%Y%m%d_%H%M%S).log

    exec > $LOG 2>&1

     

    echo "============================================================"

    echo "SAFE CLEAN ASM DISKS - Démarrage $(date)"

    echo "Instance : ( ORACLE_SID - Host : )(hostname)"

    echo "============================================================"

     

    # 1. Vérification préalable

    sqlplus -S / as sysasm <<EOF

    SET PAGESIZE 0 FEEDBACK OFF HEADING OFF

    SELECT COUNT(*) FROM v$asm_operation WHERE state IN ('RUN','WAIT');

    EXIT

    EOF

    REBAL_IN_PROGRESS=$(sqlplus -S / as sysasm <<EOF

    SET PAGESIZE 0 FEEDBACK OFF HEADING OFF

    SELECT COUNT(*) FROM v$asm_operation WHERE state IN ('RUN','WAIT');

    EXIT

    EOF

    )

     

    if [ "$REBAL_IN_PROGRESS" -gt 0 ]; then

        echo "ERREUR : Un rebalance est encore en cours !"

        echo " → Attends qu'il soit terminé avant de relancer ce script."

        exit 1

    fi

     

    # 2. Liste des disques FORMER (ceux qu’on peut nettoyer proprement)

    FORMER_DISKS=$(sqlplus -S / as sysasm <<EOF

    SET PAGESIZE 0 FEEDBACK OFF HEADING OFF

    SELECT name

    FROM v$asm_disk

    WHERE header_status = 'FORMER';

    EXIT

    EOF

    )

     

    if [ -z "$FORMER_DISKS" ]; then

        echo "Aucun disque en statut FORMER → Rien à nettoyer dans ASM."

        echo "Tu peux supprimer directement dans Azure les disques CANDIDATE/PROVISIONED si tu veux."

        echo "Fin du script."

        exit 0

    fi

     

    echo "Disques en statut FORMER détectés (on va les DROP proprement) :"

    echo "$FORMER_DISKS"

     

    # 3. DROP automatique par diskgroup avec rebalance en parallèle

    echo

    echo "Lancement du DROP DISK + rebalance (power 8 pour aller vite)..."

     

    sqlplus -S / as sysasm <<EOF

    WHENEVER SQLERROR EXIT FAILURE

    SET FEEDBACK ON ECHO ON

     

    -- On regroupe par diskgroup pour faire un seul ALTER par DG

    SELECT 'ALTER DISKGROUP ' || dg.name || ' DROP DISK ' ||

           LISTAGG(d.name, ',') WITHIN GROUP (ORDER BY d.name) || 

           ' REBALANCE POWER 8;'

    FROM v$asm_disk d

    JOIN v$asm_diskgroup dg ON d.group_number = dg.group_number

    WHERE d.header_status = 'FORMER'

    GROUP BY dg.name;

     

    -- Exécution réelle

    DECLARE

      v_sql VARCHAR2(4000);

    BEGIN

      FOR rec IN (

        SELECT dg.name dg_name,

               LISTAGG(d.name, ''',''') WITHIN GROUP (ORDER BY d.name) disk_list

        FROM v$asm_disk d

        JOIN v$asm_diskgroup dg ON d.group_number = dg.group_number

        WHERE d.header_status = 'FORMER'

        GROUP BY dg.name

      ) LOOP

        v_sql := 'ALTER DISKGROUP ' || rec.dg_name || 

                 ' DROP DISK ''' || rec.disk_list || ''' REBALANCE POWER 8';

        EXECUTE IMMEDIATE v_sql;

        DBMS_OUTPUT.PUT_LINE('Exécuté : ' || v_sql);

      END LOOP;

    END;

    /

     

    SET FEEDBACK OFF

    PROMPT

    PROMPT Nettoyage terminé.

    PROMPT Les disques viennent de passer en CANDIDATE/PROVISIONED.

    PROMPT Tu peux maintenant les détacher/supprimer dans Azure en toute sécurité.

    PROMPT

    EOF

     

    echo

    echo "============================================================"

    echo "Tout est propre dans ASM !"

    echo "Tu peux maintenant supprimer les disques dans Azure sans aucun risque."

    echo "Log complet : $LOG"

    echo "============================================================"

  • Migrer Oracle dans Spark

    Using Spark with Oracle RDBMS

    The first thing we need to do in order to use Spark with Oracle is to actually install Spark framework. This is a very easy task, even if you don’t have any clusters. There is no need for Hadoop installation or any kind of framework, other than Spark binaries.

    The first step is to go to Spark download page and download a package. In my example, I used Pre-Built for Hadoop 2.6. This means that we don’t need Hadoop cluster – the Spark installation will come with all of its Hadoop prerequisites.

    Lire la suite

  • Candidature

    Bonjour,


    Je recherche un poste de CDI de préférence ou portage salarial.
    Ma fonction au sein de votre entreprise sera d'administrer vos bases de données. Forte expérience en Oracle mais aussi en SQLServer, je serai en mesure d'apporter l'expertise technique afin d'optimiser et de fiabiliser au mieux vos bases.


    Disponibilité: ASAP


    Domiciliation: NICE

    Contact:
    -mail:josselin_joly@hotmail.com
    -tél:+33(0)679276761

    CVWeb:
    http://moncv.keljob.com/josselin_joly_hotmail.com

    Télécharger mon CV

  • Unbelievable Monaco!

    Suite à mon départ de chez ESR, la société qui m'employait sur Strasbourg, j'étais à la recherche d'emploi depuis bientôt trois semaines.

    Toujours pas inscrit à l'ANPE, c'est alors que je mets mon cv en ligne. Après avoir reçu des appels et des entretiens téléphoniques plus tard, me voilà parti pour Antibes dans le but de faire des entretiens d'embauche.Huit heures de train dans les pattes je me dirige vers l'hôtel pour me préparer du lendemain qui allait suivre.

     Rendez-vous devant l'hôtel où une personne m'accompagne au siège social de son entreprise pour un petit briefing.

     Le rendez-vous est pris pour 11 heures, chez le client. La présentation faite, nous nous dirigâmes vers l'autoraute direction Monaco.

    En effet, le client en question est situé à Monaco. Non sans anxiété nous parcourons le parking souterrain puis l'ascenseur de l'immeuble. Nous nous présentons à l'accueil, et l'hotesse nous annonces. La vision des équipes me rassure, ils sont jeunes et dynamques. Nous entrons dans un bureau où deux personnes nous attendent. Je fais ma présentation et la personne à ma gauche me pose quelques questions techniques.

     

  • Perspective d'embauche

    61c0525af4c4f6852e7458ae6ea81ab5.gif

    A titre d'infos perso, mon contrat se termine en Janvier.

    Donc ma boîte tente désespérement de me garder et va me refiler un contrat pour rester chez eux.

    En tout cas si jamais vous recherchez un DBA Oracle Confimé et que vous passez par ici, sachez que je suis là !! 

    Dispo..contactez moi par mail, je vous réponds avec mon CV + lettre de motivation.

    CV

    Motivation 

    Compétences 

     ________________________________________________________________________________________

    Crdlt,

    J.Joly. 

  • Proposition d'embauche

    Ce matin on m'appelle pour une offre d'embauche... à Marseille.

    La femme me propose un job intéressant de DBA Oracle 10g sur environnement RAC, je gère.

    Le seul hic c'est que j'ai déjà un job et ça fait un peu moins d'un an que je suis à Belfort, alors que faire partir, rester?

    Finalement je prends la décision de rester sachant qu'elle me propose un salaire qui dépasse les 35000 euros brut/an.

    Je me rassure en me disant que si l'on me propose ça au bout d'un an de DBA, la valeur de mon expérience au bout de 4 ans de métier n'en sera que meilleure!