IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Oracle Discussion :

[9i] Coupure réseau et VM


Sujet :

Oracle

  1. #1
    Membre éclairé
    Inscrit en
    Décembre 2002
    Messages
    438
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 438
    Par défaut [9i] Coupure réseau et VM
    Bonjour,

    J'ai constaté que les vues matérialisées (dont la table maitre est distante via un DBLINK) étaient vides dès qu' il y a un problème de communication au moment du rafraichissement.

    Avez-vous le même phénomène ?

    Existe-t-il un moyen d'éviter cela ?

    Merci

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2006
    Messages : 133
    Par défaut
    Si j'ai bien compris :

    Tu as une Mview M1 sur une instance I1
    qui pointe vers
    une table T2 d'une instance I2.

    Les 2 instances sont liées pas DBLINK

    De plus, si tu lances sur I1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select count(*) from M1 ;
    Ta Mview M1 n'est pas vide.

    Ensuite, lorsque tu lances un refresh avec :
    [FONT=Courier]"DBMS_SNAPSHOT.REFRESH" alors que le réseau est coupé,
    tu te retrouves avec ta Mview vide.

    C'est bien cela ?

    --

    1. En théorie, si le lien est coupé, ton ordre DBMS_REFRESH doit te renvoyer une erreur (ORA-3113 ou 3114)

    2. Quel est le mode de refresh que tu utilises : Fast, FORCE, Complete ?

    3. Comment as tu crées ta mview (ordre DDL) ?




    [/FONT]

  3. #3
    Membre éclairé
    Inscrit en
    Décembre 2002
    Messages
    438
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 438
    Par défaut
    Citation Envoyé par jlucch

    1. En théorie, si le lien est coupé, ton ordre DBMS_REFRESH doit te renvoyer une erreur (ORA-3113 ou 3114)

    2. Quel est le mode de refresh que tu utilises : Fast, FORCE, Complete ?

    3. Comment as tu crées ta mview (ordre DDL) ?
    1. Effectivement si tu lance un refresh sans réseau tu as une erreur et la VM ne sera pas vide. Si par contre, tu lances le refresh et tu coupes le réseau la VM sera vide. Comment oracle fait-il ? Pourquoi il ne fait pas une transaction ? Il fait des commit intermediaire ?

    2. Il est en FORCE et comme j'ai pas de log il fait la complète

    3. ordre DDL

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2006
    Messages : 133
    Par défaut
    1. Effectivement si tu lance un refresh sans réseau tu as une erreur et la VM ne sera pas vide. Si par contre, tu lances le refresh et tu coupes le réseau la VM sera vide. Comment oracle fait-il ? Pourquoi il ne fait pas une transaction ? Il fait des commit intermediaire ?

    2. Il est en FORCE et comme j'ai pas de log il fait la complète

    3. ordre DDL

    1. Lorsque ta Miew est en mode "COMPLETE" , si le refresh est lancé, Oracle vide ta Mview, et ensuite la reconstitue avec l'ensemble des données.

    Avez vous essayé de la créer en mode REFRESH FAST ?

    3. Je voulais savoir quel était l'ordre DLL de création ...

    Exemple en mode FAST :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    create materialized view test_mview
    BUILD IMMEDIATE
    REFRESH FAST 
    AS
    select *
    from PRP.TEST@base_distante;

  5. #5
    Membre éclairé
    Inscrit en
    Décembre 2002
    Messages
    438
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 438
    Par défaut
    Merci pour tes réponses. L'ordre DDL est identique à celui que tu as donné.

    Une dernière question...
    Dans le cas d'une table maître sur une instance I1 répliquée sur plusieurs Instance I2, I3, I4...

    En mode fast, il faut un log où sont enregistrées toutes les modifs de la table maître. Les enregistrements seront éffacés du log uniquement losrque toutes les MV sur les instances I2, I3, I4.. seront mises à jour ? Autrement dit, toutes les MV seront bien mises à jour ? Comment fait Oracle pour savoir si les MV sont biens toutes à jour ?

    Merci

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2006
    Messages : 133
    Par défaut
    En mode fast, il faut un log où sont enregistrées toutes les modifs de la table maître. Les enregistrements seront éffacés du log uniquement losrque toutes les MV sur les instances I2, I3, I4.. seront mises à jour ? Autrement dit, toutes les MV seront bien mises à jour ? Comment fait Oracle pour savoir si les MV sont biens toutes à jour ?
    Je pense que pour répondre à ton problème, il faut monter un groupe de réplication Maitre-esclave.
    En effet, Avec un groupe de réplication, Oracle saura :
    - Combien il y a de site esclave,
    - A quel niveau de transaction (SCN) chacun de site déportés se situe,

    En gros, lors d'un refresh d'une instance I2 sur l'instance Maître I1, Oracle notera dans un coin quel est le numéro SCN de la dernière TRX appliquées avec succès sur I2.
    Il en fera de même sur chaque instance "répliquée".

    Du coup, lors de la purge du ou des "Mlog$" (sur le site Maître), Oracle n'effacera de son snaplog que les transactions qui ont été transmises à tous les sites (il purgera jusqu'au dernier SCN commun) ... (il gardera les autres tant qu'elles ne seront pas appliquées partout).

    En conclusion , pour te répondre : Sans un moteur de réplication, je ne pense pas que cela soit possible, du moins je ne vois pas commun Oracle pourrait faire pour savoir combien de Mview sont accrochées à chaque snaplog.

Discussions similaires

  1. Problème de coupures réseau
    Par shkyo dans le forum Windows 7
    Réponses: 1
    Dernier message: 21/03/2011, 08h51
  2. [AC-2003] Problème de connexion ODBC Oracle après coupure réseau
    Par isajobelle dans le forum Access
    Réponses: 0
    Dernier message: 23/04/2010, 10h18
  3. [Réseau] coupures réseau et connexion exchange
    Par bannik dans le forum Windows XP
    Réponses: 1
    Dernier message: 14/04/2010, 11h57
  4. Rafraichissement automatique de page et coupures réseau
    Par JoN28fr dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 18/11/2008, 17h31
  5. Rien Qd coupure réseau avec un client TClientSocket
    Par fba dans le forum Composants VCL
    Réponses: 3
    Dernier message: 18/02/2006, 13h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo