Bonjour,
Je travaille sur Oracle 10g (niveau débutant...)
Je vous expose mon problème:
_ J'ai une application 1 qui me crée automatiquement un utilisateur/schéma (j'ai du mal à voir la différence), avec toutes les tables associées
_ J'ai une application 2 qui est une interface utilisateur pour rentrer des données dans les tables créées par l'application 1.
Nous venons de recevoir une nouvelle version des applications 1 et 2: on pourrait tout recommencer à zéro , ce serait le plus simple, mais les utilisateurs chez moi ont commencé à rentrer plein de données (alors qu'on est en phase de test, grrrr) et ne veulent pas recommencer toute leur saisie.
j'ai fait comme ça:
1/ Export de la base existante
Avec la commande exp file=C:\sauvegarde.dump full=y
2/ Je crée un nouveau schéma dans ma base Oracle
Création d’un nouvel utilisateur/schéma dans Oracle avec mon application 1
3/ Import de la base dans le nouveau schéma vide
Avec la commande imp file=C:\sauvegarde.dump fromuser=<old_schema> touser=<new_schema> ignore=y
Ca me permet de prendre uniquement ce qui m'intéresse dans mon fichier dump pour remplir le nouveau schéma vide, et le "ignore=y" est indispensable pour ne pas avoir un arrêt à cause du fait que les tables existent déjà
Ca marche bien en apparence (toutes les données sont copiées d’un schéma à l’autre) mais le problème est que l'import ne respecte pas les valeurs pour les colonnes correspondant aux identifiants (clés primaires) : lors de l’import, oracle reprend à 1 une numération incrémentale pour chaque ID, ce qui fait que les relations entre tables sont parfois rompues, et donc c’est le foutoir ensuite dans les données!!
Exemple: j'avais un table nommée "IMPROVEMENTS", avec 4 objets saisies dedans, qui portent le ID_IMPROVEMENTS (clé primaire): 1, 2, 4 et 6
(ces chiffres ne se suivent pas certainement parce que j'ai du supprimer les objets portant les ID 3 et 5...)
Et bien, après import, j'ai bien 4 lignes dans la table IMPROVEMENTS de mon nouveau schéma, mais les identifiants sont 1, 2, 3 et 4!! Un grand nombre de fonctions de mon application 2 est basée sur des liens entre les tables, avec utilisation de ID_IMPROVEMENTS comme clé étrangère, il n'y a donc plus rien qui marche...
Comment faire pour que l'import du Dump me génère des valeurs identiques pour TOUS les éléments de toutes mes tables, même pour ceux qui sont clés primaires?
Merci pour vos conseils
(j'espère avoir été clair...)
Partager