Максимальная длина аргумента командной строки, который может быть передан в SQL * Plus? - PullRequest
50 голосов
/ 27 июля 2011

Я звоню SQL * Plus из Linux C Shell:

sqlplus username/password @file.sql var1 var2 var3

Если я передам строку как var1, как долго эта строка может быть?

Это управляется ОС? В этом случае:

Linux version 2.6.9-100.ELsmp (mockbuild@x86-010.build.bos.redhat.com) (gcc version 3.4.6 20060404 (Red Hat 3.4.6-11)) #1 SMP Tue Feb 1 12:17:32 EST 2011

Обновление: Эмпирическое тестирование дало следующие результаты:

  • Аргумент командной строки из 5200 символов выдал ошибку «Слово слишком длинное».
  • 1300 символов, после чего возникла ошибка SQL * Plus, "начало строки" (000796384 ... "слишком длинное. Максимальный размер - 239 символов."
  • Как только я набрал 239 символов, все было хорошо.

Я думаю, что буду использовать sqlldr, чтобы преодолеть это.

Ответы [ 2 ]

83 голосов
/ 27 июля 2011

Попробуйте с помощью: 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

Не существует ограничения для аргумента, но есть общее значение для всей длины командной строки.В моей системе (Fedora 15 / zsh) он ближе к 2Mb.(строка 4).

55 голосов
/ 29 июля 2011

Я сталкивался с вопросом «Как долго список аргументов, который ваше ядро ​​может взять в командной строке, прежде чем он захлебнется?»:

getconf ARG_MAX

, что дает в моей системе следующее:

131072
...