Максимальная длина аргумента командной строки, который может быть передан в SQL*Plus?
Я звоню 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 ответа
Попробуйте с: 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).
Я натолкнулся на "Как долго список аргументов, который ваше ядро может взять в командной строке, прежде чем он захлебнется?":
getconf ARG_MAX
что дает следующее в моей системе:
131072