Précédent   Forum des professionnels en informatique > Bases de données > Oracle > Outils > SQL*Loader
SQL*Loader Forum d'entraide sur Oracle SQL*Loader
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 30/01/2007, 15h58   #1
Invité régulier
 
Inscription : juin 2004
Messages : 49
Détails du profil
Informations forums :
Inscription : juin 2004
Messages : 49
Points : 6
Points : 6
Envoyer un message via Yahoo à Fiora
Par défaut [9i] Migration par SQL Loader OU inserts avec DB link ???

Bonjour,

J'ai deux bases V1 et V2, je dois migré le contenue d'une importante table maTable (80 millions de lignes) de la V1 vers 4 tables de la base V2 (selons des 4 critères) avec un petit mapping dont lequel j'ai besoin de quelques données de la V2.

Je voulais savoir quelle est la plus meilleure (plus performante) façon de faire:

- Passer par des inserts avec un database link de la V2 vers la V1.
- Passer par des fichiers plats et Sql loader.
- Création de view de maTable sur la base V2 puis des inserts
...

Je veux savoir vos avis et/ou vos propositions

Merci d'avance pour vos réponses.
Fiora est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2007, 16h15   #2
Membre émérite
 
Avatar de Yorglaa
 
Inscription : janvier 2004
Messages : 845
Détails du profil
Informations personnelles :
Âge : 41
Localisation : Suisse

Informations forums :
Inscription : janvier 2004
Messages : 845
Points : 939
Points : 939
Salut,
personnellement je pense que je ferais un export/import de la table source vers une table provisoire dans la base cible, puis un traitement (genre procédure) à l'interne de la base cible pour répartir mes lignes dans les 4 tables finales...

Au final tu n'aura plus qu'à supprimer ta table provisoire... mais dans le cas où ton traitement de répartition ne se passe pas comme tu veux, tu as toujours tes données sources déjà migrées dans la base cible pour pouvoir recommencer, donc sans ré-impacter la base source.
__________________
Il est plus facile de voir les signes avant-coureurs après coup que l'inverse !

Yorglaa
Yorglaa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2007, 16h39   #3
Responsable Business Intelligence
 
Avatar de kalyparker
 
Femme
Consultant en Business Intelligence
Inscription : janvier 2007
Messages : 1 192
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence

Informations forums :
Inscription : janvier 2007
Messages : 1 192
Points : 2 564
Points : 2 564
Bonjour,

Je rejoint Yorglaa sur la réponse.
Je pense que Sql loader n'est pas très adapté pour ce genre de chose, la charge est trop importante.
L'import/export est beaucoup plus rapide et comme dit Yorglaa si ton traitement échoue au moins les données sont déjà dans ta base cible.
kalyparker est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2007, 16h42   #4
Invité régulier
 
Inscription : juin 2004
Messages : 49
Détails du profil
Informations forums :
Inscription : juin 2004
Messages : 49
Points : 6
Points : 6
Envoyer un message via Yahoo à Fiora
Citation:
Envoyé par Yorglaa
Salut,
personnellement je pense que je ferais un export/import de la table source vers une table provisoire dans la base cible

Evidement c'est aussi une piste, mais vous pensez pas que créer une copier de (80 millions d'enregitrement) en locale, est un double travail !!
Est ce que la création d'une view sur la table V1 maTable n'est pas mieux ?
Fiora est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2007, 17h00   #5
Membre émérite
 
Avatar de Yorglaa
 
Inscription : janvier 2004
Messages : 845
Détails du profil
Informations personnelles :
Âge : 41
Localisation : Suisse

Informations forums :
Inscription : janvier 2004
Messages : 845
Points : 939
Points : 939
Salut,
passer 80 millions de lignes via le réseau (vue avec DBLink) ne me semble pas vraiment "gratuit" en charge !

Sans compter que comme tu dois faire du traitement pour ventiler tes lignes dans tes tables cibles, tu n'est pas à l'abri d'une erreur, d'un plantage réseau, ou tout autre de ces petits soucis qui jalonnent l'informatique et qui te fasse planter tout le traîtement... et là bonjour la perte de temps !

Personnellement, pour transférer un tel nombre de lignes, je suis prêt à prendre les paris sur le fait que export/import est la solution la plus adaptée en terme de charge...
évidemment ça implique de créer un "doublon" dans la base cible avant d'effectuer ta ventilation... mais je ne sais pas en l'état si l'espace disque est une contrainte majeure de ta problématique !
__________________
Il est plus facile de voir les signes avant-coureurs après coup que l'inverse !

Yorglaa
Yorglaa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2007, 19h09   #6
Membre Expert
 
Inscription : avril 2006
Messages : 1 024
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 1 024
Points : 1 175
Points : 1 175
Pas tout à fait d'accord
En terme de performance, le plus éfficace sera d'exporter 4 fichiers à l'image des 4 tables finales, de copier ces fichiers sur la machine cible (en faisant éventuellement une copression intermédiaire) et d'effectuer un sql-loader en mode "DIRECT=TRUE".
Je parle bien de performances, cette methode comporte un risque si les données ne sont pas en cohérence parfaite avec la cible finale (contraintes et indexs cassés....)
remi4444 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2007, 20h14   #7
Membre émérite
 
Avatar de Yorglaa
 
Inscription : janvier 2004
Messages : 845
Détails du profil
Informations personnelles :
Âge : 41
Localisation : Suisse

Informations forums :
Inscription : janvier 2004
Messages : 845
Points : 939
Points : 939
huuuum...
dans ce cas tu fais faire le travail de répartition par la base source pour avoir tes 4 fichiers distinct.

Hors si ces clauses de répartitions s'appuient sur des données pré-éxistantes dans la base cible, ça reste la cata puisqu'on repart sur des DBLinks.

Je dis ça, je dis rien...

Mais en partant du postulat que le schéma cible est différent du schéma source (puisqu'on va de 1 table vers 4 tables), rien ne me garantis que j'ai les éléments de répartition dans la bas source, je cites le Post initial :
Citation:
...(selons des 4 critères) avec un petit mapping dont lequel j'ai besoin de quelques données de la V2...
sinon pourquoi les transférer ?
__________________
Il est plus facile de voir les signes avant-coureurs après coup que l'inverse !

Yorglaa
Yorglaa 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 01h24.


 
 
 
 
Partenaires

Hébergement Web