Oracle copie des données blob à partir d'une table à l'autre
J'ai une table (plus de 1.000.000 de lignes et 60 go de données) avec une colonne blob. Je veux déplacer la plupart des lignes (toutes les lignes) de la table à une autre. J'ai essayé insert into X select from y
de commande mais c'est trop lent.
Quel est le moyen le plus rapide?
J'ai Oracle 10 ou 11.
- Vous pourriez poser votre question sur la dba.stackexchange.com .
- Pouvez-vous définir "trop lent"? Combien de temps faut-il pour copier 60 GO de données? Combien de temps avez-vous besoin de prendre? Quels sont les événements d'attente? N'60 GO comprennent la taille de la table segment? Ou le LOB segment? Ou la taille combinée des deux segments?
- c'est en prendre plein la nuit (18:00-08:00) pour copier c'est normall?
Vous devez vous connecter pour publier un commentaire.
utiliser /*+ ajouter */astuce pour passer archive log
lorsque vous utilisez l'indicateur oracle dosent créer arcive journaux
ses trop tard pour proposer quelque chose, mais il peut aider avec des solutions ci-dessus, si votre nouvelle(la cible), table a des contraintes ou des indices ou des déclencheurs, puis essayez de supprimer/désactiver d'abord, puis les charger en vrac de données et, enfin, de créer et d'activer vos contraintes, les index et les déclencheurs du recul et d'analyser votre table d'index. ce gain de temps solution est proposé uniquement lorsque vous n'avez qu'à répliquer vos données en vrac une fois. comme lors de l'insertion de nouveaux enregistrements dans la table SGBD garantit les contraintes, les vérifications et des indices qui réduit la vitesse
Ok, donc nous ne savons pas votre système de sorte qu'il est difficile de vous en dire beaucoup. Votre question dépend vraiment de votre environnement. Peu importe, voici quelques tests de toute façon pour montrer le temps et les ressources qu'il faut pour utiliser votre méthode par rapport à une autre méthode:
Disons que votre méthode est la méthode 1 et l'autre méthode est la méthode 2.
Ok, donc nous nous soucions les deux méthodes, nous avons testé c'est à dire
qui nous fait un traçage réponse pour et
que nous ne pouvons pas obtenir un traçage pour.
Heureusement j'ai aussi couru sql_trace et j'ai ramassé un TKprof de stats.
C'est ce que j'obtiens:
pour "insert into t (select * from u);":
et pour "create table t (select * from u)", nous obtenons:
Qu'est ce que cela nous dit?
bien:
-Méthode 2 a pris environ 65% moins de temps que la méthode 1 (ensemble de 5 secondes de moins de 1 million de lignes)
-Méthode 2 a pris environ 48% moins de temps PROCESSEUR que la méthode 1
-Un peu plus de disque a été analysée avec la méthode 2 de la méthode 1
-beaucoup moins de tampons ont été récupérées pour la méthode 2 que pour la méthode 1
espère que cela vous aide 🙂