Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour Oracle
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 22/01/2008, 13h07   #1
Invité de passage
 
Inscription : septembre 2007
Messages : 10
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 10
Points : 0
Points : 0
Par défaut ORA-20000: ORU-10027: buffer overflow, limit of 1000000 bytes!

Bonjour,

A l'exécution d'un script SQL (via un lanceur shell script), je me retrouve face à l'erreur suivante:

ORA-20000: ORU-10027: buffer overflow, limit of 1000000 bytes

Ce script contient des procédures de traçage dans des fichiers mais quasiment aucun DBMS_OUTPUT.PUT_LINE si ce n'est à la fin, voici en détails:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
------------------------------------------------------------------
 
WHENEVER SQLERROR EXIT FAILURE ROLLBACK;
 
SET ECHO OFF
SET SERVEROUTPUT ON SIZE 1000000
SET VERIFY OFF
SET FEED OFF
 
DECLARE
 
   [...]
 
PROCEDURE TRACE(...) IS
BEGIN
 
   [...]
 
END TRACE;
 
-- MAIN --
 
BEGIN
 
FOR CURSOR_1 IN ( SELECT ... )
 
LOOP
 
  FOR CURSOR_2 IN ( SELECT ... )
 
  LOOP
 
     [...] (pas de DBMS_OUTPUT.PUT_LINE, uniquement du traçage via TRACE)
           (le curseur CURSOR_2 renvoie plus de 50000 lignes contenant chacune une dizaine de champs)
 
    *** ici intervient l'erreur: ORA-20000: ORU-10027: buffer overflow, limit of 1000000 bytes ***
 
  END LOOP;
 
END LOOP;
 
DBMS_OUTPUT.PUT_LINE('Je renvoie l'erreur ci erreur il ya, par exemple celle vue plus haut')
 
------------------------------------------------------------------
Je n'arrive pas à comprendre d'où cela peut venir si ce n'est du curseur qui n'est pas déclaré avant mais incorporé directement.

Quelqu'un a-t-il une idée?

Merci d'avance,
Cordialement,
Ptiboua.
ptiboua est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2008, 13h56   #2
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 319
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 3 319
Points : 5 837
Points : 5 837
Il faut partir de l’évidence. Soit la procédure Trace soit une autre appelée dans le script utilise dbms_output.putline
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2008, 13h57   #3
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
Citation:
SET SERVEROUTPUT ON SIZE 1000000

Citation:
ORA-20000: ORU-10027: buffer overflow, limit of 1000000 bytes
t'as plus qu'à lire la doc maintenant et faire des recherches sur UTL_FILE par exemple pour orienter la sortie vers un fichier plutôt que l'écran
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2008, 08h40   #4
Invité de passage
 
Inscription : septembre 2007
Messages : 10
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 10
Points : 0
Points : 0
Par défaut SET SERVEROUTPUT ON SIZE unlimited; ???

Bonjour à tous,

Voici une solution que l'on m'a proposé pour éviter de faire péter le buffer Oracle, cela présente t'il un risque au niveau de la base?

Merci d'avance,
Ptiboua.
ptiboua est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/01/2008, 13h49   #5
Nouveau Membre du Club
 
Inscription : janvier 2008
Messages : 116
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 116
Points : 33
Points : 33
Bonjour,

Tu peux également regarder mon post :
Citation:
curseur et dbms_output.put_line
ça peut t'aider.
vincent_17 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/01/2008, 16h17   #6
Expert Confirmé Sénior


 
Avatar de laurentschneider
 
Homme Laurent Schneider
Administrateur de base de données
Inscription : décembre 2005
Messages : 2 927
Détails du profil
Informations personnelles :
Nom : Homme Laurent Schneider
Localisation : Suisse

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : Finance

Informations forums :
Inscription : décembre 2005
Messages : 2 927
Points : 4 549
Points : 4 549
je ne sais pas si c'est à cause de mes nouvelles lunettes mais je ne vois pas la version

Code :
SET serverout ON size unlimited
(unlimited = 10gR2)
__________________
Mon blog : laurentschneider.com
Mon livre : Advanced Oracle SQL Programming
laurentschneider 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 06h03.


 
 
 
 
Partenaires

Hébergement Web