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

Entreprise Manager Oracle Discussion :

Oracle 11g : Réplication avancée


Sujet :

Entreprise Manager Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 24
    Par défaut Oracle 11g : Réplication avancée/Data Guard
    Bonjour à tous,

    J'espère poster dans la bonne zone de discussion, dans le cas contraire, veuillez m'excuser messieurs les admins

    Nous disposons à l'heure actuelle d'un serveur Oracle (Version 11.1.0.6.0) qui est requêté par des utilisateurs en local et sur 2 sites distants.
    Le problème est que l'outil a des temps de réponse considérables sur les sites distants, ce qui dégrade l'efficacité du travail des utilisateurs, selon la société qui développe l'outil qui exploite Oracle, ceci est dû au débit
    L'augmentation du débit entre les sites n'a pas résolu le problème (lien SDSL 2M), pour un fonctionnement optimal il faudrait des liaisons louées, mais nous n'avons pas le budget pour cela...
    Il a donc été décidé de déployer 3 machines sur les 3 sites utilisateurs : 1 serveur puissant (Win server 2003, Quad core, 16Go RAM) et 2 Stations en XP (l'outil fonctionne actuellement sur une machine en XP et à part quelques rares plantages d'Oracle, cela fonctionne bien en local)

    Nous avons décidé que le serveur principal servirait aux chargements des données et à la consultation des données en local, les autres machines ne serviront qu'à la consultation (les mises à jour des bases après chargement ne demandent pas beaucoup de ressources et elles sont en nombre limité) ce qui signifie que les données du maitre viendront écraser les données des esclaves à chaque "synchro"
    Après quelques recherches la mise en place de la réplication de données m'a semblé être une solution qui répondait aux critères énoncés ci-dessus.
    J'ai donc essayé de déployer cette solution et dans ce cadre, j'ai commencé par configurer un site maitre de vues matérialisées (à partir d'"Enterprise manager", clic sur l'onglet "Mouvement de données", zonz "Réplication avancée", clic sur "Installation". Puis "Réplication des vues matérialisées actualisables" et enfin "Configurer des sites maîtres pour la réplication".

    Cette procédure se déroule en 7 étapes (si vous le souhaitez je peux les détailler), et mon problème a lieu à l'étape 6 "Programmer un travail EM". Il m'est demandé de saisir un identifiant et un mot de passe dans la zone "Informations d'identification et de connexion de l'hôte", l'aide en ligne me donne les informations suivantes :
    "Saisissez le nom utilisateur dont vous avez besoin pour vous connecter à l'ordinateur hôte sur lequel l'instance de base de données du site maître est installée.

    Remarque : N'indiquez pas de compte d'administration de base de données, à savoir SYS, SYSMAN, REPADMIN et SYSTEM."

    J'ai donc tenté de créer un utilisateur "REPLICATION" ayant différents droits :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE ANY MATERIALIZED VIEW
    CREATE ANY TABLE
    ALTER ANY MATERIALIZED VIEW
    ALTER ANY TABLE
    IMPORT FULL DATABASE
    EXPORT FULL DATABASE
    j'ai ajouté les 4 premiers privilèges à la suite de mes recherches dans la doc oracle.

    mais j'obtiens systématiquement l'erreur suivante :
    "Echec de la connexion à hôte en tant qu'utilisateur REPLICATION.ERROR: Invalid username and/or password"

    Le choix de la réplication Avancée est-il pertinent ?
    Quel utilisateur faut-il noter à l'étape 6 et/ou quels droits/privilèges doit avoir cet utilisateur ?

    Merci d'avance pour vos réponses

    Bonne journée

  2. #2
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    et pourquoi pas des bases répliquées avec dataguard et ouverte en lecture ?

  3. #3
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 461
    Par défaut
    Bonjour et bienvenue sur le forum

    Un grand bravo pour la présentation claire et détaillée de votre problème !

    En principe, ce qu'Entreprise Manager appelle "identifiant de l'hôte", c'est un compte OS, donc Windows dans votre cas.

  4. #4
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 24
    Par défaut
    et pourquoi pas des bases répliquées avec dataguard et ouverte en lecture ?
    J'ai très peu d'infos sur dataguard, y aurait-il un tuto pour sa mise en oeuvre ?
    D'après ce que j'ai lu, j'ai déduit qu'il fallait que la base soit en mode ARCHIVELOG. J'avais fait le test du changement de mode avant d'essayer la réplication avancée
    L'aide en ligne d'oracle est assez évasive sur le changement de mode à partir d'Enterprise manager, et lorsque j'ai fait le test à partir de SQLPLUS, j'ai effectué les opérations suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    SQL> ALTER SYSTEM SET 
    2    log_archive_format='redo_%S_%R_%T.arc' 
    3    SCOPE=SPFILE;
     
    SQL> ALTER SYSTEM SET 
    2    log_archive_dest_1='LOCATION=E:\oracle\oradata\arch\HERMES' 
    3    SCOPE=SPFILE;
     
    SQL> SHUTDOWN IMMEDIATE
    SQL> STARTUP MOUNT
    SQL> ALTER DATABASE ARCHIVELOG;
    SQL> ALTER DATABASE OPEN;
    Concernant le nom du chemin (log_archive_dest_1) je me suis inspiré du livre "Oracle 11g - Administration"

    Mon problème est qu'après le SHUTDOWN IMMEDIATE, plus aucune requête ne fonctionne (malheureusement je n'ai pas noté les messages d'erreur, mais de mémoire, il me semble avoir eu le message "STARTUP commande non reconnue" ou "impossible d'accéder à la base")

    J'ai fait 2 tests :

    - SHUTDOWN IMMEDIATE seul (sans les commandes "ALTER SYSTEM SET" avant) et ma base a planté, un redémarrage du service Oracle a résolu le problème
    - La procédure détaillée ci-dessus, la base a planté et là plus moyen de la redémarrer (redémarrage de tous les services oracle et de la machine). J'ai du réinstaller Oracle...

    Je précise que j'utilise l'édition Standard d'Oracle (si cela a une importance)
    D'après la documentation, "log_archive_dest_n" (n de 1 à 10) n'est dispo qu'en édition enterprise, j'aurais peut-être dû utiliser "log_archive_dest" tout court, mais je n'ai pas eu de message d'erreur à cette étape...

    En bref si Dataguard est une solution viable et plus simple à mettre en oeuvre que la réplication avancée, comment le mettre en oeuvre ? et comment résoudre le problème évoqué ci-dessus (dans le cas où dataguard fonctionne en mode ARCHIVELOG)

    Un grand bravo pour la présentation claire et détaillée de votre problème !
    Merci

    En principe, ce qu'Entreprise Manager appelle "identifiant de l'hôte", c'est un compte OS, donc Windows dans votre cas.
    J'ai déjà essayé, mais sans succès. Faut-il modifier des droits d'accès sur le serveur afin qu'oracle puisse utiliser ces identifiants?

  5. #5
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    Pour le compte, il me semble que c'est celui qui a servi pour l'install d'Oracle qu'il faut indiquer.

    Pour Dataguard, il faut te taper la doc et Metalink, faut être scrupuleux mais c'est pas particulièrement compliqué. La gestion par MV j'suis pas fan personnellement ça pose des problèmes de synchronisation des refresh de consommation de UNDO, etc... alors que dataguard applique les archives c'est bien plus simple.

  6. #6
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 461
    Par défaut
    Citation Envoyé par havoc31 Voir le message
    J'ai déjà essayé, mais sans succès. Faut-il modifier des droits d'accès sur le serveur afin qu'oracle puisse utiliser ces identifiants?
    En 10g, oui !
    Il faut que le compte Windows en question dispose du privilège "log on as a batch job" ("ouvrir une session en tant que tâche" en français).
    Vous trouverez la procédure ici http://download.oracle.com/docs/cd/B...g.htm#BABFAEIG
    Contrairement à ce qu'ils indiquent, il n'y a aucun besoin de redémarrer la machine, la prise d'effet du privilège est absolument immédiate.

  7. #7
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 24
    Par défaut
    En 10g, oui !
    Et en 11g aussi !!

    J'ai effectué les manipulatiions du lien que vous m'avez transmis et effectivement en ajoutant l'utilisateur à 4 privilèges (dont "log on as batch job"), j'ai enfin pu terminer la procédure.
    Cependant, et malgré une journée de lecture intensive hier, je me suis un peu noyé dans la doc, et j'ai peur de ne pas tout avoir compris sur la réplication avancée.

    D'après ce que j'ai lu et ce que je veux faire, la solution la plus adaptée serait la "Read-Only Materialized View". le tutoriel ne détaille que des créations de vues matérialisées concernant des tables, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SELECT employee_id, 
            first_name, 
            last_name, 
            email, 
            phone_number, 
            hire_date, 
            job_id,
            salary, 
            commission_pct, 
            manager_id, 
            department_id
    FROM hr.employees@master_site
    Où d'après ce que j'ai compris tous les éléments entre SELECT et FROM sont des champs, hr est le schéma, employees est la table et master_site est le site maitre. Si je souhaite répliquer le schéma complet, cela signifie-t-il que je dois effectuer la requête suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM hr@master_site
    De plus, nous créons des schémas presque tous les jours (finalement mon problème n'était pas complètement détaillée ), donc cela signifie-t-il que je vais devoir créer des vues matérialisées pour chaque schéma ?

    Plus généralement, je n'ai pas trouvé dans la doc (Paragraphes 7 et 8) quelles étaient les actions à effectuer sur chaque serveur.

    Il faut aller dans "Mouvement de données", zone "Réplication avancée", et clic sur "Installation", j'arrive sur un écran où sont détaillés les menus suivants :

    Réplication à plusieurs maîtres
    o Créer un groupe maître

    Réplication des vues matérialisées actualisables
    o Configurer des sites maîtres pour la réplication
    o Configurer des sites de vues matérialisées pour la réplication
    o Créer un groupe de vues matérialisées
    o Créer un journal de vues matérialisées dans les tables de base de données source pour la régénération rapide
    o Créer une vue matérialisée

    Vues matérialisées en lecture seule
    o Créer un journal de vues matérialisées dans les tables de base de données source pour la régénération rapide
    o Créer une vue matérialisée

    Créer un modèle pour le déploiement en masse de sites de vues matérialisées
    o Créer un modèle

    A partir de là, je suppose que sur le serveur maitre :

    dans "Réplication des vues matérialisées actualisables", sélectionner "Configurer des sites maîtres pour la réplication", et suivre la procédure
    dans "Réplication des vues matérialisées actualisables", sélectionner "Configurer des sites de vues matérialisées pour la réplication", et suivre la procédure

    Et sur les serveurs distants :

    dans "Vues matérialisées en lecture seule", sélectionner "Créer une vue matérialisée", et suivre la procédure, mais je ne sais pas quelle requête saisir...

    Je vais tester et je vous tiens informés...

  8. #8
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 24
    Par défaut
    Alors, d'après mes recherches, La réplication avancée à un seul maitre permet de copier vers une vue matérialisée tout ou partie d'une table.
    On peut créer autant de vues matérialisées que l'on souhaite, mais à chaque création de table il faut créer une nouvelle vue matérialisée.

    Ai-je bon jusque là?

    Le principe de fonctionnement de notre outil est la création d'un utilisateur à partir duquel on importe un fichier .dmp. Ce fichier .dmp contient plusieurs tables. Des utilisateurs sont crées presque tous les jours.

    La solution des vues matérialisées semble donc ne pas être adaptée.

    l'idéal serait de pouvoir "synchroniser" nos 3 bases de données avec uniquement les données modifiées au cours de la journée, la sauvegarde s'effectuant 1 fois par jour.

    Je suis en train de traduire un tuto en anglais sur Dataguard (oracle 11g) et plus j'avance plus je me pose de questions...

    De toute évidence, pour fonctionner avec DataGuard, la base doit être en mode ARCHIVELOG. Or comme je l'avais expliqué précédemment, lors de la procédure, après avoir fait le SHUTDOWN IMMEDIATE, je n'ai plus la possibilité d'effectuer la moindre commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    >sqlplus sys/mot_de_passe@instance AS SYSDBA
     
    SQL*Plus: Release 11.1.0.6.0 - Production on Ven. Sept. 11 16:36:08 2009
     
    Copyright (c) 1982, 2007, Oracle.  All rights reserved.
     
     
    Connecté à :
    Oracle Database 11g Release 11.1.0.6.0 - Production
     
    SQL>ALTER SYSTEM SET
    2   log_archive_format='redo_%S_%R_%T.arc'
    3   SCOPE=SPFILE;
     
    Système modifié
     
    SQL>ALTER SYSTEM SET
    2   log_archive_dest='LOCATION=E:\oracle\oradata\arch\MAVILLE'
    3   SCOPE=SPFILE;
     
    Système modifié
     
    SQL>SHUTDOWN IMMEDIATE
     
    Base de données fermée.
    Base de données démontée.
    Instance ORACLE arrêtée.
     
    SQL>STARTUP MOUNT
     
    ORA-12514: TNS : le processus d'écoute ne connait pas actuellement le 
    service demandé dans le descripteur de connexion
     
    SQL>
    la base de données est à priori bien fermée...si bien qu'on ne peut plus l'ouvrir
    Où est l'erreur dans ma procédure ? Suis-je connecté avec le mauvais utilisateur ?
    Pour le moment je suis parti pour réinstaller oracle pour la énième fois...

  9. #9
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 24
    Par défaut
    J'ai trouvé la solution :
    1) Sur chacune des machines clientes, il faut le même tnsnames.ora que sur les serveurs, ainsi les machines ont accès à la BDD primaire et aux Standby
    2) Pas trouvé de réponse mais après une réinstallation propre de la standby (c'est à dire en suivant les étapes dans l'ordre ) les redos sont bien appliqués
    3) Je purge les REDO logs lors du Backup dans RMAN
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RMAN>BACKUP DATABASE PLUS ARCHIVELOG DELETE ALL INPUT;
    Ma base standby est en lecture seule, est-il possible de la rendre accessible en écriture ? Si oui, où trouver la doc ?
    D'après la doc (commerciale) Oracle oui, mais je n'ai pas trouvé comment mettre cette solution en oeuvre, je ne dois pas saisir les bons mots clés (dataguard, write, OPEN_MODE)...

  10. #10
    Membre Expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Par défaut
    Avec 11gR1, une base physical standby peut être ouverte en écriture en tant que snapshot standby.

  11. #11
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 24
    Par défaut
    Merci pifor, cela fonctionne parfaitement, sauf quand je souhaite redémarrer l'application des Redo; voici ce que je fais :

    Arrêter l’application des redo
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
    Convertir en snapshot (base montée non ouverte) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    C:>SQLPLUS sys/chicago@boston AS SYSDBA
     
    SQL> SHUTDOWN IMMEDIATE
     
    SQL> exit
     
    C:>set oracle_sid=BOSTON
     
    C:>sqlplus /nolog
     
    SQL> CONNECT / AS SYSDBA
     
    SQL> startup mount
     
    SQL> ALTER DATABASE CONVERT TO SNAPSHOT STANDBY;
    Convertir en Physical (base montée non ouverte) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    C:>SQLPLUS sys/chicago@boston AS SYSDBA
     
    SQL> SHUTDOWN IMMEDIATE
     
    SQL> exit
     
    C:>set oracle_sid=BOSTON
     
    C:>sqlplus /nolog
     
    SQL> CONNECT / AS SYSDBA
     
    SQL> STARTUP MOUNT
     
    SQL> ALTER DATABASE CONVERT TO PHYSICAL STANDBY;
     
    Redémarrer l’application des redo
     
    SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE;
    Lorsque je suis à ce point, et que j'exécute la dernière requête, le curseur reste bloqué et ne bouge plus.
    Si j'ouvre une autre invite de commande et que j'essaie d'ouvrir la base :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SQL> alter database open;
    alter database open
    *
    ERREUR à la ligne 1 :
    ORA-01154: base de données occupée ; ouvrir, fermer, monter et démonter non permis
    La fenêtre est déjà restée dans cet état depuis plusieurs heures (alors qu'aucun schéma ou utilisateur n'a été créé sur la base primaire il y a donc très peu de redo logs à appliquer...)
    Sauriez-vous d'ou vient ce problème ?

  12. #12
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 24
    Par défaut
    De retour avec plein de questions...

    J'avais pu contourner le problème évoqué dans le post précédent (blocage de la dernière requête) en n'ouvrant pas la base, étant donné qu'elle n'a besoin d'être accessible qu'en mode snapshot.

    Le problème est que lorsque j'essaie de repasser en mode snapshot, la requête d'ouverture de la base (ALTER DATABASE OPEN; ) pose le même problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    C:>SQLPLUS sys/chicago@boston AS SYSDBA
     
    SQL> SHUTDOWN IMMEDIATE
     
    SQL> exit
     
    C:>set oracle_sid=BOSTON
     
    C:>sqlplus /nolog
     
    SQL> CONNECT / AS SYSDBA
     
    SQL> startup mount
     
    SQL> ALTER DATABASE CONVERT TO SNAPSHOT STANDBY;
     
    SQL> SHUTDOWN IMMEDIATE
     
    SQL> exit
     
    C:>set oracle_sid=BOSTON
     
    C:>sqlplus /nolog
     
    SQL> CONNECT / AS SYSDBA
     
    SQL> startup mount
     
    SQL> ALTER DATABASE open;
    <plus de réaction de la part de la fenêtre de commande>
    Si j'ouvre une nouvelle fenêtre et que je tente de me connecter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    C:>sqlplus sys/chicago@boston as sysdba
     
    SQL*Plus: Release 11.1.0.6.0 - Production on Mar. Oct. 6 15:55:56 2009
     
    Copyright (c) 1982, 2007, Oracle.  All rights reserved.
     
    Connecté.
    SQL> desc dba_users;
    ERROR:
    ORA-01012: not logged on
    PS : il se passe un délai très long (environ 1 minute) avant que l'invite affiche "Connecté"

Discussions similaires

  1. Réponses: 0
    Dernier message: 24/08/2010, 17h48
  2. install Oracle 11g sur Enterprise Linux Oracle
    Par Soutou dans le forum Installation
    Réponses: 2
    Dernier message: 31/10/2007, 11h38
  3. Oracle 11g disponible sur Linux
    Par pifor dans le forum Oracle
    Réponses: 8
    Dernier message: 16/08/2007, 23h28
  4. [ORACLE 9i] Réplication via vue matérialisée
    Par had69 dans le forum Oracle
    Réponses: 3
    Dernier message: 26/10/2005, 10h47

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