可以传递给SQL*Plus的命令行参数的最大长度?

Umb*_*ule 51 linux csh sqlplus command-line-arguments

我从Linux C Shell调用SQL*Plus:

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个字符的命令行参数给出了错误,"Word太长了".
  • 1300个字符然后产生SQL*Plus错误,"字符串开头"(000796384 ..."太长.最大大小为239个字符."
  • 一旦我得到239个字符,一切都很顺利.

我想我会sqlldr用来克服这一点.

Pab*_*zzi 83

试试: 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
Run Code Online (Sandbox Code Playgroud)

每个参数没有限制,但是整个命令行长度的总数.在我的系统(Fedora 15/zsh)中,它接近2Mb.(第4行).

  • **FYI**:在显示限制后防止`xargs`挂起的一种简单方法是使用`echo | xargs --show-limits`.它会彻底退出. (9认同)
  • @ABB FYI:这不是挂起,只需按下Ctrl-D就可以给它提供EOF. (5认同)

Umb*_*ule 56

我遇到"你的内核在命令行扼杀之前可以使用多长时间的参数列表?":

getconf ARG_MAX
Run Code Online (Sandbox Code Playgroud)

在我的系统上给出以下内容:

131072
Run Code Online (Sandbox Code Playgroud)

  • 2097152在Ubuntu Server 14.04 LTS中 (7认同)
  • 2621440在CentOS 6.2上 (4认同)
  • OSX 10.11.2上的262144 (2认同)