Précédent   Forum des professionnels en informatique > Bases de données > Oracle
Oracle Forum Oracle : le serveur, les outils, ... Voir F.A.Q Oracle Tutoriels Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/04/2008, 14h50   #1
Invité de passage
 
Inscription : avril 2008
Messages : 23
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 23
Points : 0
Points : 0
Par défaut Replication Oracle Streams

Bonjour,

J'ai entendu qu'il était possible de répliquer les données d'un schéma (ex: nom : test) d'une base source vers une base cible dont le nom de schéma est différent (nom :test1). Est ce que quelqu'un sait comment faire ?

Merci
stroracle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/04/2008, 16h04   #2
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
Si tu as la 10g alors utilise la DB Console qui propose des assistants qui génèrent les scripts pour toi, c'est assez compliqué en partant de rien mais avec ce script tu devrais en saisir les arcanes
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2008, 10h10   #3
Invité de passage
 
Inscription : avril 2008
Messages : 23
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 23
Points : 0
Points : 0
La console d'Oracle permet la simple réplication, mais je ne peux pas choisir le schéma de destination donc mon schéma test de ma base source va se répliquer vers mon schéma test de ma base cible.

Dois-je effectuer une transformation?
stroracle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2008, 10h26   #4
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
Il faut modifier les scripts pour changer à la main le schema_name de la base de destination.
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2008, 10h35   #5
Invité de passage
 
Inscription : avril 2008
Messages : 23
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 23
Points : 0
Points : 0
Il faut juste que je change le nom de mon schéma dans le processus d'application des transactions ? Parce que c'est ce que j'ai essayé, et ma réplication ne fonctionne pas.
stroracle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2008, 10h54   #6
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
Quels sont les scripts et l'erreur rencontrée ?
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2008, 11h19   #7
Invité de passage
 
Inscription : avril 2008
Messages : 23
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 23
Points : 0
Points : 0
Mes scripts sont les suivants:

Code :
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
Connect xxx/xxx
BEGIN
  DBMS_STREAMS_ADM.SET_UP_QUEUE(
   queue_table => 'streams_queue',
   queue_name  => 'streams_queue',
   queue_user  => 'xxx');
END;
/
Exec dbms_streams_adm.set_up_queue() ;
 
CREATE DATABASE link BASE2.world connect TO xxx IDENTIFIED BY xxx USING 'BASE2.world';
 
BEGIN
 DBMS_PROPAGATION_ADM.CREATE_PROPAGATION
 (
  propagation_name   => 'streams_BASE1_to_BASE2' ,
  source_queue       => 'streams_queue' ,
  destination_queue  => 'streams_queue' ,
  destination_dblink => 'BASE2.world');
END ;
/
 
BEGIN
  DBMS_STREAMS_ADM.ADD_SCHEMA_PROPAGATION_RULES(
    schema_name              => 'test',
    streams_name            => 'streams_BASE1_to_BASE2',
    source_queue_name       => 'streams_queue',
    destination_queue_name  => 'streams_queue@BASE2.world',
    include_dml             =>  true,
    include_ddl             =>  true,
    include_tagged_lcr      =>  true,
    source_database         =>  'BASE1.world',
    inclusion_rule          =>  true);
END;
/
 
BEGIN
  DBMS_STREAMS_ADM.ADD_SCHEMA_RULES(
    schema_name     => 'test',   
    streams_type   => 'capture',
    streams_name   => 'streams_capture',
    queue_name     => 'streams_queue',
    include_dml    => TRUE,
    include_ddl    => TRUE,
    inclusion_rule => TRUE);
END;
/
 
 
Connect xxx/xxx@BASE2.world
BEGIN
  DBMS_STREAMS_ADM.SET_UP_QUEUE(
   queue_table => 'streams_queue',
   queue_name  => 'streams_queue',
   queue_user  => 'xxx');
END;
/
Exec dbms_streams_adm.set_up_queue() ;
 
BEGIN
  DBMS_STREAMS_ADM.ADD_SCHEMA_RULES(
    schema_name      => 'test1',
    streams_type    => 'apply', 
    streams_name    => 'streams_apply',
    queue_name      => 'streams_queue',
    include_dml     => TRUE,
    include_ddl     => TRUE,
    source_database => 'BASE1.world',
    inclusion_rule  => TRUE);
END;
/
 
DECLARE
  iscn  NUMBER;        
BEGIN
  iscn := DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER();
     DBMS_APPLY_ADM.SET_SCHEMA_INSTANTIATION_SCN@BASE2.WORLD(
    source_schema_name    => 'test',
    source_database_name  => 'BASE1.world',
    instantiation_scn     => iscn,
    recursive             => true);
END;
/
 
BEGIN
  DBMS_APPLY_ADM.SET_PARAMETER(
    apply_name  => 'streams_apply', 
    parameter   => 'disable_on_error', 
    value       => 'n');
END;
/
 
BEGIN
  DBMS_APPLY_ADM.START_APPLY(
    apply_name  => 'streams_apply');
END;
/
 
 
connect xxx/xxx
BEGIN
  DBMS_CAPTURE_ADM.START_CAPTURE(
    capture_name  => 'streams_capture');
END;
/
Je n'ai pas d'erreur lorsque j'execute mes scripts mais quand je crée une nouvelle table sur ma base1, elle n'est pas répliquée sur ma base2.
stroracle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2008, 11h28   #8
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
T'as bien lancé l'export/import pour synchroniser tes 2 bases déjà ? C'est une étape obligatoire pour instantier les objets.
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2008, 11h33   #9
Invité de passage
 
Inscription : avril 2008
Messages : 23
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 23
Points : 0
Points : 0
Comme mes schéma sont vides, j'ai les mêmes objets sur ma source et ma base cible donc pour instancier les deux bases, l'utilisation du scn est suffisant non?
stroracle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2008, 11h53   #10
Invité de passage
 
Inscription : avril 2008
Messages : 23
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 23
Points : 0
Points : 0
J'ai quand même fait l'export/import de la manière suivante:

Code :
! exp userid=system/system FILE=9.dmp OWNER=TEST OBJECT_CONSISTENT=y ROWS=y
connect xxx/xxx@BASE2.world
Code :
! imp userid=system/system@BASE2.world FILE=9.dmp FROMUSER=TEST TOUSER=TEST1 IGNORE=y
J'ai remarqué que mon processus d'application P000 depilait bien les messages mais que le processus coordinateur C000 était au statut IDLE donc le processus d'application ne reçoit pas les transactions.
stroracle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2008, 11h56   #11
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
D'abord, merci de penser aux balises CODE dans tes messages.

Ensuite, c'est datapump que tu dois utiliser, le script est tout fait via la console

Tu captures bien les DDL aussi ?
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2008, 12h00   #12
Invité de passage
 
Inscription : avril 2008
Messages : 23
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 23
Points : 0
Points : 0
Je capture bien les DLL, lorsque je réplique un schema de ma base source vers le même schema sur ma base cible, ma réplication marche tres bien. C'est uniquement avec une schéma de destination différents. Je pense que le problème doit donc venir de l'instanciation.
stroracle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2008, 12h12   #13
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
je dirais plutôt que ça vient de la config du APPLY.
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2008, 14h25   #14
Invité de passage
 
Inscription : avril 2008
Messages : 23
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 23
Points : 0
Points : 0
Vous n'avez pas des exmples de source qui marche parce que j'arriva pas à trouver le problème. Je comprends pas pourquoi le process d'apply n'arrive pas à transformer les messsages qu'il dépile en transactions.
stroracle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2008, 14h31   #15
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
tu as vérifié que tu n'as pas d'erreur ?
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2008, 14h34   #16
Invité de passage
 
Inscription : avril 2008
Messages : 23
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 23
Points : 0
Points : 0
Oui il n'y a aucunes erreurs, mais des que je mets un autre schema de destination que celui d'origine, le process d'apply dépile les messages mais n'arrive pas a faire les transactions avec.
stroracle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2008, 14h40   #17
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
là je ne sais pas... si tu vois bien le APPLY appliquer les messages et que tu n'as pas d'erreur, j'vois pas où pourrait être le problème

Le user qui est admin de Streams a bien les droits DDL suffisant sur ton schéma ?
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2008, 14h48   #18
Invité de passage
 
Inscription : avril 2008
Messages : 23
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 23
Points : 0
Points : 0
Non je ne vois pas le processus d'apply appliquer la transaction: je vois uniquement le server de lecture dépiler les messages mais pas les transformer en transactions. De ce fait le processus de coordination ne transmet pas les transactions du serveur de lecture au processus d'apply:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
 
 
Apply Process                          Process                   Total Messages
Name            Apply Type             Name    State                   Dequeued
--------------- ---------------------- ------- ----------------- --------------
STREAMS_APPLY   Captured LCRS          P000    DEQUEUE MESSAGES              22
 
 
 
 
                              Trans     Trans  Apply Trans Being     Trans
Apply Process Name         Received   Applied Errors     Applied   Ignored
------------------------- --------- --------- ------ ----------- ---------
STREAMS_APPLY                     0         0      0           0         0
stroracle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2008, 14h51   #19
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
tu as essayé de redémarrer la base, parce que j'ai déjà eu des soucis de ce style. Et puis l'instantiation marche mal sur ma base aussi, seul datapump m'intantie correctement les tables
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2008, 15h00   #20
Invité de passage
 
Inscription : avril 2008
Messages : 23
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 23
Points : 0
Points : 0
Oui j'ai même déjà détruite et refait ma base entièrement.
stroracle est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h01.


 
 
 
 
Partenaires

Hébergement Web