web-dev-qa-db-fra.com

Longueur maximale de l'argument de ligne de commande pouvant être transmis à SQL * Plus?

J'appelle SQL * Plus depuis Linux C Shell:

sqlplus username/password @file.sql var1 var2 var3

Si je passe une chaîne en tant que var1, Combien de temps cette chaîne peut-elle être?

Est-il régi par le système d'exploitation? Dans ce cas:

Linux version 2.6.9-100.ELsmp ([email protected]) (gcc version 3.4.6 20060404 (Red Hat 3.4.6-11)) #1 SMP Tue Feb 1 12:17:32 EST 2011

Mise à jour: Les tests empiriques ont donné les résultats suivants:

  • Un argument de ligne de commande de 5200 caractères a donné l'erreur "Word trop long".
  • 1300 caractères ont ensuite produit l'erreur SQL * Plus, "début de chaîne" (000796384 ... "est trop long. La taille maximale est de 239 caractères."
  • Dès que j'ai eu moins de 239 caractères, tout allait bien.

Je pense que je vais utiliser sqlldr pour surmonter cela.

50
Umber Ferrule

Essayez avec: xargs --show-limits

Your environment variables take up 2446 bytes
POSIX upper limit on argument length (this system): 2092658
POSIX smallest allowable upper limit on argument length (all systems): 4096
Maximum length of command we could actually use: 2090212
Size of command buffer we are actually using: 131072

Il n'y a pas de limite par argument, mais un total pour toute la longueur de la ligne de commande. Dans mon système (Fedora 15/zsh), il est plus proche de 2 Mo. (ligne 4).

83
Pablo Castellazzi

Je suis tombé sur "combien de temps une liste d'arguments votre noyau peut prendre sur la ligne de commande avant qu'il ne s'étouffe?":

getconf ARG_MAX

ce qui donne ce qui suit sur mon système:

131072
55
Umber Ferrule