Максимальная длина аргумента командной строки, который может быть передан в 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
Другие вопросы по тегам