Максимальная длина аргумента командной строки, которая может быть передана SQL * Plus (из командной строки Linux C)?
Я вызываю SQL * Plus из оболочки Linux C:
sqlplus username/password @file.sql var1 var2 var3
Если передать строку как var1
, как долго может быть эта строка?
Он управляется ОС? В этом случае:
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
Обновление: Эмпирическое тестирование дало следующие результаты:
- Аргумент командной строки из 5200 символов дал ошибку "Слово слишком долго".
- 1300 символов затем произвели ошибку SQL * Plus, "начало строки" (000796384... "слишком длинное, максимальный размер - 239 символов."
- Как только я получил 239 символов, все было хорошо.
Думаю, я воспользуюсь sqlldr
, чтобы преодолеть это.
Ответы
Ответ 1
Попробуйте: 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) она ближе к 2 Мб. (строка 4).
Ответ 2
Я наткнулся на "Как долго аргумент перечислит ваше ядро, которое может взять командную строку, прежде чем оно захлопнется?":
getconf ARG_MAX
который дает в моей системе следующее:
131072