Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1401 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [Oracle] Nombre d'instruction maximum d'un bloc d'éxecution

 

 

 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

[Oracle] Nombre d'instruction maximum d'un bloc d'éxecution

n°793624
mareek
Et de 3 \o/
Posté le 12-07-2004 à 14:56:48  profilanswer
 

Comme je l'ai déjà expliqué dans mon précédent topic, je dois insérer un grand nombre d'enregistrement dans une base de données Oracle via les ADO. Après moult tests, la méthode la plus rapide est d'appeller n fois une procedure stockée (qui fait un seul insert) dans un bloc d'execution BEGIN ... END . Le problème, c'est que le nombre d'instructions dans un bloc PL/SQL est limité et que je ne connais pas la méthode pour calculer cette limite.
 
Tout ce que j'ai trouvé c'est ça:

Citation :

Yes, the max size is not an explicit byte limit, but related to the parse tree that is created when you compile the code. You can run the following select statement to query the size of an existing package or procedure:  

SQL> select * from dba_object_size where name = 'procedure_name';



http://www.orafaq.com/faqplsql.htm#BLKSIZE
 
J'ai lancé la requete dans TOAD mais je ne sais pas quoi faire des données qu'il me renvoit, ça reste assez flou :/ (de plus cette requête ne fonctionne que pour un user avec des droits d'administrateur).
 
Si quelqu'un peut m'aider, je crois que je vais craquer :/
 
Merci d'avance  :hello:


Message édité par mareek le 12-07-2004 à 15:03:19

---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
mood
Publicité
Posté le 12-07-2004 à 14:56:48  profilanswer
 

n°793641
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 12-07-2004 à 15:05:30  profilanswer
 

Sous Oracle 7, PL/SQL 2.0, la limite était de 64 Ko pour une procédure stockée ou un package. Mais attention :
- cette limite dépend du client. Ces 64 Ko sont valables pour un client Windows, pour Linux je sais pas
- cette limite de 64 Ko comprend le source + la représentation  de la compilation de ce source. Ce qui fait qu'un source de 10 Ko peut très bien dépasser cette limite


---------------
J'ai un string dans l'array (Paris Hilton)
n°793650
mareek
Et de 3 \o/
Posté le 12-07-2004 à 15:10:32  profilanswer
 

Harkonnen a écrit :

Sous Oracle 7, PL/SQL 2.0, la limite était de 64 Ko pour une procédure stockée ou un package. Mais attention :
- cette limite dépend du client. Ces 64 Ko sont valables pour un client Windows, pour Linux je sais pas
- cette limite de 64 Ko comprend le source + la représentation  de la compilation de ce source. Ce qui fait qu'un source de 10 Ko peut très bien dépasser cette limite


Merci :jap:  
Comment je fais pour calculer la taille de la représentation de la compilation de mon source ? :??:
 
EDIT: t'aurais un lien à ce sujet ?
ça a évolué dans Oracle 8i ou 9i ?


Message édité par mareek le 12-07-2004 à 15:11:39

---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
n°793657
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 12-07-2004 à 15:13:36  profilanswer
 

Peu importe sa taille (c'est ce qu'ils appellent le "parse tree" dans ton article), la requête qu'ils te donnent te permet de calculer la taille totale du paquet, source + représentation comprise. Il te reste qu'à vérifier que ça ne dépasse pas 64 Ko ;)


---------------
J'ai un string dans l'array (Paris Hilton)
n°793663
mareek
Et de 3 \o/
Posté le 12-07-2004 à 15:22:47  profilanswer
 

La requête me renvoit 3 valeurs: SOURCE_SIZE, PARSED_SIZE et CODE_SIZE C'est lequel qui ne doit pas dépasser 64Ko ?
 
 
P.S. tu pourrais répondre à mon précédent edit stp ? :)


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
n°793671
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 12-07-2004 à 15:28:05  profilanswer
 

à mon avis, ce lien devrait répondre à toutes tes questions :)
 
http://members.fortunecity.com/dpa [...] ons_8i.htm


---------------
J'ai un string dans l'array (Paris Hilton)
n°793683
mareek
Et de 3 \o/
Posté le 12-07-2004 à 15:39:57  profilanswer
 

Harkonnen a écrit :

à mon avis, ce lien devrait répondre à toutes tes questions :)
 
http://members.fortunecity.com/dpa [...] ons_8i.htm


Merci :jap: , je sais ce qu'il me reste à faire maintenant:
 
http://www.akademia.ch/noeuds/img/pendu.jpg


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
n°793691
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 12-07-2004 à 15:43:39  profilanswer
 

mareek a écrit :

Merci :jap: , je sais ce qu'il me reste à faire maintenant:
 
http://www.akademia.ch/noeuds/img/pendu.jpg


j'aimerais bien connaitre la limite de taille sous SQL Server tiens [:figti]


---------------
J'ai un string dans l'array (Paris Hilton)
n°793701
mareek
Et de 3 \o/
Posté le 12-07-2004 à 15:47:18  profilanswer
 

Harkonnen a écrit :

j'aimerais bien connaitre la limite de taille sous SQL Server tiens [:figti]


Perso, je m'en fous un peu, je n'ai pas besoin d'avoir recours à de tels bricolages pour avoir des perfs décentes sous SQL Server.


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
n°793702
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 12-07-2004 à 15:48:10  profilanswer
 

c'est clair... au niveau perfs y'a pas photo entre Oracle et SQL Server :/


---------------
J'ai un string dans l'array (Paris Hilton)
mood
Publicité
Posté le 12-07-2004 à 15:48:10  profilanswer
 

n°793734
mareek
Et de 3 \o/
Posté le 12-07-2004 à 16:10:21  profilanswer
 

/me se demande vraiment comment il va faire ...


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
n°793809
mareek
Et de 3 \o/
Posté le 12-07-2004 à 17:12:11  profilanswer
 

[:sisicaivrai] j'y arrives pas


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
n°793891
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 12-07-2004 à 18:05:09  profilanswer
 

[:calin]


---------------
J'ai un string dans l'array (Paris Hilton)
n°793909
mareek
Et de 3 \o/
Posté le 12-07-2004 à 18:22:43  profilanswer
 

Harkonnen a écrit :

à mon avis, ce lien devrait répondre à toutes tes questions :)
 
http://members.fortunecity.com/dpa [...] ons_8i.htm


t'aurais pas la même page pour Oracle 9i, j'ai l'impression que les limitations ne sont plus les mêmes
 
EDIT: D'après mes tests, la taille limite de mon bloc d'execution (qui lance n fois ma procedure stockée de test) semble aux alentours de 100Ko, ce qui me ferait penser que la taille maximale d'un programme est de 128Ko.


Message édité par mareek le 12-07-2004 à 18:26:35

---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
n°794891
mareek
Et de 3 \o/
Posté le 13-07-2004 à 16:49:45  profilanswer
 

Bon, je m'en suis sorti en limitant la taille (le nombre de caractères en fait) de mon bloc BEGIN ... END; à 50Ko. J'espère que ça marchera sur les bases des clients :/


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
n°794904
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 13-07-2004 à 16:54:18  profilanswer
 

Hélas, je n'ai pas l'équivalent pour Oracle 9i, et je te parle même pas de 10g
Mais c'est pas impossible que la taille maximale ait augmenté, dans mon ex boite on avait reçu un commercial de chez Oracle, et on pestait justement contre la limitation des procédures à 64 Ko (on travaillait sur 7 et 8i), et à l'époque, il nous avait assuré, plaquettes à l'appui, que cette taille serait augmentée dans 9i, donc tous les espoirs  sont permis :)


---------------
J'ai un string dans l'array (Paris Hilton)
n°794907
skeye
Posté le 13-07-2004 à 16:55:05  profilanswer
 

mareek a écrit :

Bon, je m'en suis sorti en limitant la taille (le nombre de caractères en fait) de mon bloc BEGIN ... END; à 50Ko. J'espère que ça marchera sur les bases des clients :/


Sinon je suppose qu'écrire un fichier texte et lancer un bon gros sql loader est complètement hors de propos...? :whistle:


Message édité par skeye le 13-07-2004 à 16:55:15

---------------
Can't buy what I want because it's free -
n°794914
mareek
Et de 3 \o/
Posté le 13-07-2004 à 16:56:52  profilanswer
 

Harkonnen a écrit :

Hélas, je n'ai pas l'équivalent pour Oracle 9i, et je te parle même pas de 10g
Mais c'est pas impossible que la taille maximale ait augmenté, dans mon ex boite on avait reçu un commercial de chez Oracle, et on pestait justement contre la limitation des procédures à 64 Ko (on travaillait sur 7 et 8i), et à l'époque, il nous avait assuré, plaquettes à l'appui, que cette taille serait augmentée dans 9i, donc tous les espoirs  sont permis :)


Vu que la plupart des clients ont 8i (ici on a 9i), je crois que je vais baisser ma limite de taille [:boidleau].
Au fait, c'est une limitation du client ou du Serveur ?


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
n°794916
mareek
Et de 3 \o/
Posté le 13-07-2004 à 16:57:19  profilanswer
 

skeye a écrit :

Sinon je suppose qu'écrire un fichier texte et lancer un bon gros sql loader est complètement hors de propos...? :whistle:


ben j'aurais toujours cette limite à la con [:spamafote]


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
n°794924
skeye
Posté le 13-07-2004 à 16:59:56  profilanswer
 

mareek a écrit :

ben j'aurais toujours cette limite à la con [:spamafote]


Euh j'en sais rien, ça dépend comment sqlloader fait ça, mais je suppose qu'il sait se démerder pour la contourner tout seul comme un grand! [:gratgrat]


---------------
Can't buy what I want because it's free -
n°794925
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 13-07-2004 à 17:00:35  profilanswer
 

mareek a écrit :


Au fait, c'est une limitation du client ou du Serveur ?


Du client, en fait sur la 7 (et probablement sur 8i), ça vient du fait que Windows est incapable de gérer des blocs de plus de 64 Ko (explication made in Oracle à l'époque)


---------------
J'ai un string dans l'array (Paris Hilton)
n°794939
mareek
Et de 3 \o/
Posté le 13-07-2004 à 17:05:30  profilanswer
 

Harkonnen a écrit :

Du client, en fait sur la 7 (et probablement sur 8i), ça vient du fait que Windows est incapable de gérer des blocs de plus de 64 Ko (explication made in Oracle à l'époque)


[:rofl] Ils ne savent vraiment pas quoi inventer pour avoir des excuses les commerciaux d'Oracle


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
n°794974
mareek
Et de 3 \o/
Posté le 13-07-2004 à 17:15:23  profilanswer
 

skeye a écrit :

Euh j'en sais rien, ça dépend comment sqlloader fait ça, mais je suppose qu'il sait se démerder pour la contourner tout seul comme un grand! [:gratgrat]


Je vois pas pourquoi SQL loader contournerait cette limitation alors que les autres n'y arrivent pas :/
Ou alors il execute les instructions une par une ce que je ne veux pas car c'est trop lent.


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
n°794984
skeye
Posté le 13-07-2004 à 17:19:00  profilanswer
 

mareek a écrit :

Je vois pas pourquoi SQL loader contournerait cette limitation alors que les autres n'y arrivent pas :/
Ou alors il execute les instructions une par une ce que je ne veux pas car c'est trop lent.


http://www.orafaq.com/faqloadr.htm
 

Citation :


The conventional path loader essentially loads the data by using standard INSERT statements. The direct path loader (DIRECT=TRUE) bypasses much of the logic involved with that, and loads directly into the Oracle data files. More information about the restrictions of direct path loading can be obtained from the Utilities Users Guide.


Ca peut être sympa ça non? [:joce]


---------------
Can't buy what I want because it's free -
n°794996
mareek
Et de 3 \o/
Posté le 13-07-2004 à 17:23:00  profilanswer
 

skeye a écrit :

http://www.orafaq.com/faqloadr.htm
 

Citation :


The conventional path loader essentially loads the data by using standard INSERT statements. The direct path loader (DIRECT=TRUE) bypasses much of the logic involved with that, and loads directly into the Oracle data files. More information about the restrictions of direct path loading can be obtained from the Utilities Users Guide.


Ca peut être sympa ça non? [:joce]


Le truc de bourrin [:wam]
 
Bon, je garde ça sous le coude au cas où :D


Message édité par mareek le 13-07-2004 à 17:23:14

---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
n°794997
skeye
Posté le 13-07-2004 à 17:23:38  profilanswer
 

mareek a écrit :

Le truc de bourrin [:wam]
 
Bon, je garde ça sous le coude au cas où :D


Ah ben toi qui voulais de la perf, ça devrait pas être trop mauvais ça...;)


---------------
Can't buy what I want because it's free -
n°794999
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 13-07-2004 à 17:24:53  profilanswer
 

mareek a écrit :

Le truc de bourrin [:wam]
 
Bon, je garde ça sous le coude au cas où :D


+1 :eek2:


---------------
J'ai un string dans l'array (Paris Hilton)
n°795003
skeye
Posté le 13-07-2004 à 17:26:43  profilanswer
 


Heureusement que les petits jeunes sont là pour te montrer les choses avant que tu embauches, toi!:o


---------------
Can't buy what I want because it's free -
n°795015
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 13-07-2004 à 17:31:04  profilanswer
 

skeye a écrit :

Heureusement que les petits jeunes sont là pour te montrer les choses avant que tu embauches, toi!:o


j'ai jamais utilisé SQL*Loader, au boulot on codait directement par SQL*NET :o


---------------
J'ai un string dans l'array (Paris Hilton)
n°795017
skeye
Posté le 13-07-2004 à 17:32:19  profilanswer
 

Harkonnen a écrit :

j'ai jamais utilisé SQL*Loader, au boulot on codait directement par SQL*NET :o


...et après on vient gueuler que ça marche pas...;)
 
 
 
 
 
 
 
Bon ok j'ai rien dit, j'ai découvert ça ya 2 semaines...:lol:


---------------
Can't buy what I want because it's free -
n°795027
mareek
Et de 3 \o/
Posté le 13-07-2004 à 17:35:16  profilanswer
 

skeye a écrit :

Ah ben toi qui voulais de la perf, ça devrait pas être trop mauvais ça...;)


Le problème, c'est que si tu as une merde dans tes fichiers, tu bousilles ta base en moins de 2 :/


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
n°795032
skeye
Posté le 13-07-2004 à 17:37:37  profilanswer
 

mareek a écrit :

Le problème, c'est que si tu as une merde dans tes fichiers, tu bousilles ta base en moins de 2 :/


ah ben oui...mieux vaut être sûr du contenu de tes fichiers, là...
 
Ici on utilise sql*loader pour charger un fichier dans un table temporaire, et ensuite on a un traitement qui teste la cohérence et insère dans la bonne table, et surtout nous sort les erreurs éventuelles.[:skeye]


Message édité par skeye le 13-07-2004 à 17:37:49

---------------
Can't buy what I want because it's free -
n°795062
mareek
Et de 3 \o/
Posté le 13-07-2004 à 17:48:44  profilanswer
 

skeye a écrit :

ah ben oui...mieux vaut être sûr du contenu de tes fichiers, là...
 
Ici on utilise sql*loader pour charger un fichier dans un table temporaire, et ensuite on a un traitement qui teste la cohérence et insère dans la bonne table, et surtout nous sort les erreurs éventuelles.[:skeye]


Et malgré tout ce traitement, c'est quand même plus rapide qune insertion classique ? :??:


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
n°795067
skeye
Posté le 13-07-2004 à 17:50:28  profilanswer
 

mareek a écrit :

Et malgré tout ce traitement, c'est quand même plus rapide qune insertion classique ? :??:


Aucune idée, je peux pas bencher, j'ai pas le code de ce qui se passe après avoir lancé le sql*loader.
Mais comme je te disais j'insère sans trop de problèmes 20/30000 enregistrements d'un coup sans que cela pose de problème...[:skeye]


---------------
Can't buy what I want because it's free -
n°795069
mareek
Et de 3 \o/
Posté le 13-07-2004 à 17:51:16  profilanswer
 

skeye a écrit :

Aucune idée, je peux pas bencher, j'ai pas le code de ce qui se passe après avoir lancé le sql*loader.
Mais comme je te disais j'insère sans trop de problèmes 20/30000 enregistrements d'un coup sans que cela pose de problème...[:skeye]


ça prend combien de temps ? c'est quoi comme serveur ?


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
n°795082
skeye
Posté le 13-07-2004 à 17:55:54  profilanswer
 

mareek a écrit :

ça prend combien de temps ? c'est quoi comme serveur ?


Le tout (sql*loader + traitements qui suivent) prend à vue de nez (très difficile à contrôler dans le contexte dans lequel je l'utilise) 3 à 4 minutes, sur une base en prod avec des traitements assez lourds régulièrement lancés dessus...
Bref, je peux pas vraiment te filer de chiffres fiables, je contrôle trop peu de ce qui se passe.


---------------
Can't buy what I want because it's free -
n°795088
skeye
Posté le 13-07-2004 à 18:00:22  profilanswer
 

et pour le serveur c'est une machine assez costaud...un HP DS25, si mes souvenirs sont bons.


---------------
Can't buy what I want because it's free -
n°795090
mareek
Et de 3 \o/
Posté le 13-07-2004 à 18:00:51  profilanswer
 

OK, merci quand même :jap:
 
(tiens, j'ai aussi envie de cracher sur Transact-SQL maintenant [:itm] )


Message édité par mareek le 13-07-2004 à 18:01:42

---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
n°795104
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 13-07-2004 à 18:06:25  profilanswer
 

mareek a écrit :


(tiens, j'ai aussi envie de cracher sur Transact-SQL maintenant [:itm] )


t'aurais pas été emmerdé comme ça avec SQL Server :o


---------------
J'ai un string dans l'array (Paris Hilton)
n°795110
mareek
Et de 3 \o/
Posté le 13-07-2004 à 18:10:45  profilanswer
 

Harkonnen a écrit :

t'aurais pas été emmerdé comme ça avec SQL Server :o


Je ne crache pas sur les SGBD sans raison, ce con de transact-SQL n'accepte pas qu'une fonction (un Convert par ex.) soit passée en paramètre d'une procedure stockée. Vachement pratique pour passer des dates à une procedure stockée [:itm]


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [Oracle] Nombre d'instruction maximum d'un bloc d'éxecution

 

Sujets relatifs
ocilogon - attaquer une base oracle avec php[ASP - Oracle] Je suis complètement chèvre ou quoi ?
[Struts] Nombre variable de paramères dans un form ? comment ?Probleme d'acces Oracle Management Server
[BATCH]connaître le nombre de ficihiers d'un répertoire...[resolu][Oracle/PL-SQL] Passer un tableau en paramètre d'une procedure stockée
HTML / VBS execution de patches de sécurité µkrosoft[Oracle/SQL] Différencier des séries de chiffres et de lettres
Fenêtre d'exécution[Oracle] demarrage de la base
Plus de sujets relatifs à : [Oracle] Nombre d'instruction maximum d'un bloc d'éxecution


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR