ORA supprimer / truncate
Je suis à l'aide de SQL loader pour charger mes données dans la base de données.
Avant de m'insérer les données que j'ai besoin de supprimer les données dans la table:
options(skip=1,load=250000,errors=0,ROWS=30000,BINDSIZE=10485760)
load data
infile 'G:1.csv' "str '^_^'"
replace
into table IMPORT_ABC
fields terminated by "," OPTIONALLY ENCLOSED BY '"'
trailing nullcols(
.
.
.
.)
Mais je suis d'erreur comme:
SQL*LOADER-926: BEC d'erreur lors de l'exécution de supprimer/truncate table IMPORT_ABC
ORA-30036: impossible d'étendre segment par 8 dans le tablespace undo 'undo1'
Comment puis-je supprimer des données par exemple par 10000 lignes?
Je sais que j'ai une certaine limite sur ma DB.
Si elle n'a pas besoin d'être recouvrable, probablement pas si vous êtes en remplacement de toute façon est - il une raison pour laquelle vous êtes à l'aide de
non, je veux juste supprimer tous les éléments de la table et puis vis un nouveau
replace
plutôt que truncate
?non, je veux juste supprimer tous les éléments de la table et puis vis un nouveau
OriginalL'auteur 4est | 2013-04-08
Vous devez vous connecter pour publier un commentaire.
La suppression d'enregistrements dans des lots peut être fait dans une PL/SQL boucle, mais est généralement considéré comme une mauvaise pratique que l'ensemble de supprimer devrait normalement être considéré comme une seule opération; et qui ne peut être fait à partir de SQL*Loader fichier de contrôle. Votre DBA la taille de la
UNDO
d'espace pour accueillir le travail que vous devez faire.Si vous êtes à la suppression de l'intégralité de la table, vous aurez presque certainement être mieux de les tronquer, de toute façon, que ce soit dans le fichier de contrôle:
Ou d'un autre
truncate
instruction SQL*Plus/SQL Developer/un autre client avant de commencer la charge:L'inconvénient est que votre table vide à d'autres utilisateurs, alors que les nouvelles lignes sont en cours de chargement, mais si c'est une dédiée à l'importation de la zone (deviner à partir du nom) qui ne peut pas d'importance de toute façon.
Si votre
UNDO
est vraiment petit, puis vous pouvez exécuter plusieurs charges, dans ce cas - sans doute, évidemment, vous devez vous assurer que vous avez latruncate
dans le fichier de contrôle pour la première (ou utilisez le séparertruncate
), et ontappend
la place à un contrôle a posteriori des fichiers que vous avez noté dans les commentaires.Vous pouvez également envisager de des tables externes si vous êtes en utilisant ces données comme base pour remplir quelque chose d'autre, car il n'y a pas de
UNDO
généraux sur le remplacement de la source de données externe. Vous aurez probablement besoin de parler à votre DBA à propos de mettre en place et de vous donner le nécessaire autorisations de répertoire.oui, c'est ce que je voulais dire. Ajout d'une référence à la réponse, merci.
Thx! Mais mon utilisateur ne sera pas accordée à tronquer les autorisations. J'ai seulement supprimer privs. Pour l'instant je utiliser un sqlplus déclaration de supprimer les données et que sqlldr comme ci-dessus... Mais je ne suis pas amusé...
OriginalL'auteur Alex Poole
Votre tablespace undo est de petite pour contenir tous les défaire de l'information et il semble qu'il ne peut pas être prolongé.
Vous pouvez diviser l'importation en petits lots et d'émettre un commit après chaque lot ou d'obtenir votre DBA pour augmenter l'espace de stockage pour undo1
Et utiliser truncate au lieu de les remplacer avant de vous commencer la immports
replace
va essayer de tout supprimer dans la table lors de la première manche, cependant, de nombreux dossiers sont en train d'être inséré; et par la suite s'exécute avec le même paramètre à supprimer les lignes que vous venez d'insérer. Le dosage peut être requis pour l'insertion de la phase...Vrai, mais à l'aide de tronquer devrait résoudre ce problème
oui, j'ai des données d'importation divisé en 3 fichiers de config et c'est ok, mais je ne peut pas supprimer tous les éléments (en DB) en une fois, en quelque sorte, j'ai besoin de les supprimer par 1000rows etc comment puis-je le faire ?
Avez-vous essayer de les tronquer ? ou vous pouvez essayer de supprimer basé sur rowid asktom.oracle.com/pls/apex/...
OriginalL'auteur Sibster