Comment copier des données sélectives d’une firebase database à une autre (ORACLE)

Nous devons trouver un moyen de copier certaines données de la production dans nos régions de développement afin de pouvoir déboguer / résoudre tout problème. Parfois, les données relatives à un utilisateur unique sont affectées. Nous devons reproduire le même scénario dans dev et trouver une solution. Actuellement, nous suivons deux approches: –

1. Check the audit history and try to recreate the similar scenario in dev. <50% sucess rate in recreating the exact same scenario. 2. Restore+Encrypt the "whole" production into dev and then continue on the work. It is an overkill if issue impacts only a single user. 

J’essaie donc de trouver un moyen de sélectionner simplement une donnée utilisateur de la production et de l’insérer dans la région de développement.

Nous avons juste Java et Oracle. Impossible d’utiliser des outils externes. Parce que nous n’avons pas de licence et ne pouvons pas télécharger de logiciel gratuit pour des raisons de sécurité.

J’ai essayé le suivant: –

  1. Ecrivez un code Java qui interrogera les tables de schéma informaition pour trouver les relations entre les tables et créera des instructions select comme ci-dessous: –

 select 'insert into TABLE1(C1,C2,C3,C4) values ('||''''||C1||''''||','||coalesce(to_char(C2),'null')||','||''''||C3||''''||','||coalesce(to_char(C4),'null'));' from TABLE1 where ID='1006' union all select 'insert into TABLE2(C1,C2,C3,C4) values ('||''''||C1||''''||','||coalesce(to_char(C2),'null')||','||''''||C3||''''||','||coalesce(to_char(C4),'null'));' from TABLE2 WHERE TABLE1ID in ( select ID FROM TABLE1 where ID='1006') union all select 'insert into TABLE3(C1,C2,C3,C4) values ('||''''||C1||''''||','||coalesce(to_char(C2),'null')||','||''''||C3||''''||','||coalesce(to_char(C4),'null'));' from TABLE3 WHERE TABLE2ID in ( select ID FROM TABLE2 WHERE TABLE1ID in ( select ID FROM TABLE1 where ID='1006')); 

2. Utilisez cet ensemble de sélections en production afin d’obtenir un ensemble d’instructions insert en sortie. 3. Utilisez les instructions insert dans dev.

Problème: – Les requêtes sélectionnées deviennent énormes. Environ 25 Mo au total 🙁 Nous ne pouvons même pas exécuter cette grosse requête en production.

Pourriez-vous suggérer une meilleure approche pour ce cas d’utilisation? Oracle lui-même permet-il d’exporter des données sélectives? Ou toute autre manière que je devrais écrire mon code Java?

Nous utilisons quelque chose comme ceci pour déplacer des enregistrements d’une firebase database à une autre:

copy from username/password@database1 to username/password@database2 insert target_table using select * from source_table where where_clause_goes_here;

Utilisez datapump pour déplacer les données pour les tables dont vous avez besoin et avec la pause souhaitée. Fonctionnalité simple et standard de la firebase database.

Si les deux bases de données sont Oracle, vous pouvez créer un DBLINK dans votre firebase database locale pour la firebase database distante et créer un travail dans votre firebase database locale qui interroge toutes les données de la firebase database distante à l’aide de DBLINK et mettre à jour les tables de votre firebase database locale. Ou bien, il existe de nombreuses API de migration de données disponibles, vous pouvez essayer l’une d’elles.

Vous trouverez ci-dessous le lien “certains”, jetez-y un coup d’oeil, cela résoudra peut-être votre problème

http://code.google.com/p/c5-db-migration/

http://flywaydb.org/documentation/migration/java.html

http://migrate4j.sourceforge.net/

http://flywaydb.org/ — c’est mieux d’utiliser

http://www.operatornew.com/2012/11/automatic-db-migration-for-java-web.html