2017-07-18 2 views
1

Je lis un fichier ligne par ligne et j'entre les données dans DB après chaque ligne. Le fichier d'entrée contient 100K lignes. De temps en temps, j'obtiens l'erreur ORA-01562: failed to extend rollback segment number et ce n'est pas pour une ligne particulière, ni pour un fichier particulier. L'erreur est aléatoire. Cela se passe sur le système de production.ORA-01562: échec de l'extension du numéro de segment de restauration

Et le MAXEXTENTS pour cette table est déjà défini sur UNLIMITED. Je ne parviens pas à reproduire l'erreur sur mon environnement de développement.

Comment gérer ce scénario? Quelles autres étapes je dois prendre pour que je ne reçoive pas cette erreur à l'avenir?

+0

Si cela est un système de production - il suffit d'appeler le soutien oracle et ouvrir un dossier . Ils aident très vite et ont une connaissance approfondie. Quelle est la taille de vos segments de restauration? Il devrait également y avoir une deuxième erreur avec celle-ci. – Mandraenke

Répondre

1

Ce que vous devez faire est de shrink le segment de retour arrière ou add un autre segment de retour arrière.

Dans votre cas, il semble que vous ayez uniquement le segment de restauration one, le segment d'annulation système par défaut.

Vous devez ajouter au moins un segment d'annulation supplémentaire.

Voici les commandes qui vous aideront question

ces déclarations lorsque vous êtes connecté en tant qu'utilisateur SYSTEM.

Réduction d'un segment Rollback manuellement:

Pour réduire un segment de rollback à l'aide, vous devez avoir le privilège système ALTER ROLLBACK SEGMENT.

Vous pouvez réduire manuellement la taille d'un segment d'annulation à l'aide de la commande SQL ALTER ROLLBACK SEGMENT. Le segment de restauration que vous essayez de réduire doit être en ligne.

La déclaration suivante rétrécit le segment rollback RBS1 à 100K:

ALTER ROLLBACK SEGMENT rbs1 SHRINK TO 100K; 

Affichage Rollback Information sectorielle:

La vue dictionnaire de données DBA_ROLLBACK_SEGS stocke des informations sur les segments de restauration d'une base de données. Par exemple, la requête suivante indique le nom, tablespace associé, et le statut de chaque segment de restauration dans une base de données:

SELECT segment_name, tablespace_name, status 
     FROM sys.dba_rollback_segs; 

Sortie

SEGMENT_NAME TABLESPACE_NAME  STATUS 
------------- ---------------- ------ 
SYSTEM  SYSTEM    ONLINE 
PUBLIC_RS  SYSTEM    ONLINE 
USERS_RS  USERS    ONLINE 

Création de segments Rollback:

Pour créer des segments d'annulation, vous devez disposer du privilège système CREATE ROLLBACK SEGMENT. Pour créer des segments de restauration supplémentaires pour une base de données, utilisez la feuille de propriétés Créer un segment de restauration d'Enterprise Manager ou la commande SQL CREATE ROLLBACK SEGMENT. Le tablespace pour contenir le nouveau segment de restauration doit être en ligne.

L'instruction suivante crée un segment de rollback publique nommé USERS_RS dans le tablespace USERS, en utilisant les paramètres de stockage par défaut du tablespace UTILISATEURS:

CREATE PUBLIC ROLLBACK SEGMENT users_rs TABLESPACE users;