ora 06502字符串缓冲区太小,ora06512 字符串缓冲区太小

  ora 06502字符串缓冲区太小,ora06512 字符串缓冲区太小

  作者:聪明的鸵鸟

  创建时间:2013年4月17日

  博客:http://blog.csdn.net/c 359719435 /

  版权2013精明的鸵鸟http://blog.csdn.net/c359719435/

  且转载请注明出处。

  套接字tcp缓冲区大小的设置

  1)发现如果在setsockopt中设置默认缓冲区SO_SNDBUF和SO_RCVBUF的值,并在getsockopt中获取设置值,则返回值是设置值的两倍。为什么?

  网上查了一下,然后查linux内核代码/usr/src/Linux-2 . 6 . 13 . 2/net/core/sock . c,这段代码的函数名是sock_setsockopt。

  案例SO_SNDBUF:

  /*不要害怕这不会改变你的想法

  否则就看你的了

  玩“猜猜最大尺寸”games.rcvbuf/snd buf

  在BSD中被视为提示*/

  If(valsysctl_wmem_max )//val是要设置的缓冲区大小的值

  val=sysctl _ wmem _ max如果//大于最大值,则将val值设为最大值。

  sk-sk _ user locks =sock _ snd buf _ lock;

  如果()val*) SOCK_MIN_SNDBUF )//val比最小值小两倍,则设置为最小值。

  sk-sk _ snd buf=SOCK _ MIN _ snd buf;

  其他

  sk-sk _ snd buf=val *;//当2倍val大于最小值时,设置为2倍Val值。

  /*

  *唤醒发送任务,如果我们

  *提升价值。

  */

  sk-sk _ write _ space(sk;

  布莱克;

  案例SO_RCVBUF:

  /*不要害怕这不会改变你的想法

  否则就看你的了

  玩“猜猜最大尺寸”games.rcvbuf/snd buf

  在BSD中被视为提示*/

  if(valsysctl_rmem_max)).

  val=sysctl _ rmem _ max

  sk-sk _ user locks =sock _ rcvbuf _ lock;

  /* fix me:isthislowerboundtherightone?*/

  if () val* ) SOCK_MIN_RCVBUF)).

  sk-sk _ RCVBUF=SOCK _ MIN _ RCVBUF;

  其他

  sk-sk _ rcvbuf=val *;

  布莱克;

  根据上面的代码,(1)设置val sysctl_wmem_max的最大值将被设置为最大值的两倍。2 * sysctl _ wmem _ max

  )2)如果val*2有一个最小值是设定值的两倍,则将其设为最小值(SOCK_MIN_SNDBUF)。

  (3)当设定值val的最大值为sysctl_wmem_max且val*2 SOCK_MIN_SNDBUF时,设定为2*val。

  要查看linux文档:

  SO_RCVBUF:

  setsorgetsthemaximumsocketreceivebufferinbytes .

  使用setsockopt)设置kerneldoublethisvalue(toallowspaceforbookkeepingoverhead)时,

  和thisdoublevalueisreturnedbygetsockopt(.

  defaultvalueissetbythe/proc/sys/net/core/rmem _ default文件,

  和maximumallowedvaluesetbythe/proc/sys/net/core/rmem _ max文件。

  迷你酒吧

  此选项的m (doubled)值为。

  查看我的主机Linux 2 . 6 . 6:/proc/sys/net/core/rmem _ max:

  4194304 //4M

  请参见/proc/sys/net/core/wmem_max:

  8388608 //8M

  因此,可以设置的接收缓冲区的最大值是8M,发送缓冲区的最大值是16M。

  2:为什么要有2倍这样的内核设置?我的理解是,用户在设置这个值的时候,可能只考虑数据的大小,而不考虑数据包的字节开销。所以将这个值设置为两倍。

  注:开销,在计算机网络的帧结构中,除了有用的数据外还有很多控制信息,用来保证通信的完成。这种控制信息称为系统开销。

  2 TCP缓冲区大小的默认值

  设置一个套接字,通过getsockopt获取缓冲区值,如下所示:

  发送缓冲区大小:SNDBufSize=16384

  接收缓冲区大小:RCVBufSize=87380

  3:在3:linux手册中,接收缓冲区的默认值保存在/proc/sys/net/core/rmem _ default中,发送缓冲区保存在/proc/sys/net/core/wmem _ default中。

  [root @ CFS _ net storage core]# cat/proc/sys/net/core/rmem _ default

  1048576

  [root @ CFS _ net storage core]# cat/proc/sys/net/core/wmem _ default

  512488

  可以看出,接收缓冲区的默认值为:1048576,1M。发送缓冲区的默认值是:512488,512k。为什么设置套接字时获得的默认值是87380和16384?

  进一步查阅资料发现,linux下socket缓冲区大小的默认值配置在/proc虚拟文件系统中。在以下两个文件中:

  /proc/sys/net/ipv4/tcp_wmem

  [root @ CFS _ net storage core]# cat/proc/sys/net/IP v4/TCP _ wmem

  496 16384 131072//第一个代表最小值,第二个代表默认值,第三个代表最大值。

  /proc/sys/net/ipv4/tcp_rmem

  [root @ CFS _ net storage core]# cat/proc/sys/net/IP v4/TCP _ rmem

  4096 87380 174760

  可以看到,新创建的socket的默认值都是从这两个文件中读取的。您可以通过更改这两个文件中的值来调整它,但最可靠的方法是在程序中调用setsockopt来设置它。通过setsockopt的设置,接收缓冲区的最大值可以设置为8M,发送缓冲区的最大值为16m(在Linux 2.6.6中)。

  另一篇文章中的简介:http://www.linuxidc.com/Linux/2012-08/68874.htm

  1.tcp发送和接收缓冲区默认值

  [root @ www . linuxidc . com]# cat/proc/sys/net/IP v4/TCP _ rmem

  4096 87380 4161536

  8380:TCP接收缓冲区的默认值

  [root @ www . linuxidc . com]# cat/proc/sys/net/IP v4/TCP _ wmem

  4096 16384 4161536

  1384:TCP发送缓冲区的默认值

  2.TCP或udp发送和接收缓冲区的最大值

  [root @ www . linuxidc . com]# cat/proc/sys/net/core/rmem _ max

  131071

  31071:TCP或udp接收缓冲区的最大kydlr设置值的一半。

  也就是说调用setsockopt (s,sol _ socket,so _ rcvbuf,rcv _ size,opt len);当rcv_size超过131071时,则

  getsockopt(s,SOL_SOCKET,SO_RCVBUF,rcv_size,opt len);的值等于131071 * 2=262142。

  [root @ www . linuxidc . com]# cat/proc/sys/net/core/wmem _ max

  131071

  31071:TCP或udp发送缓冲区的最大kydlr设置值是一半。

  原因同上。

  3.UDP发送和接收缓冲区的默认值

  [root @ www . linuxidc . com]# cat/proc/sys/net/core/rmem _ default

  11616:UDP接收缓冲区的默认值

  [root @ www . linuxidc . com]# cat/proc/sys/net/core/wmem _ default

  111616

  11616:UDP发送缓冲区的默认值

  4.TCP或udp发送和接收缓冲的最小值

  tcp或udp接收缓冲区的最小值为256字节,由内核宏决定;

  tcp或udp发送缓冲区的最小值是2048字节,由内核的宏决定。

  TCP缓冲区大小的默认值和最大值

  作者:悟性鸵鸟创作于:2013年4月17日博客:3http://blog.csdn.net/c359719435/copyright 2013悟性鸵鸟3358blog.cs.

  TCP缓冲区大小和限制

  这个问题在之前的一些部分已经有所涉及,这里总结一下。主要指UNIX网络编程。(1)数据报大小IPv4数据报的最大大小是65,535字节,包括IPv4报头,因为报头中指示大小的字段是16位。IPv6号码。

  TCPsol学习IP (4) TCP缓冲区大小和限制(回合)

  链接来自:http://blog.csdn.net/ysu108/article/details/7764461.这个问题在之前的一些部分已经有所涉及,这里再总结一下。主要参考UNIX网络编程。(1)数量.

  lbrack转移到rsqblinux tcpsolIp调谐

  TCP/IP性能调优2011年3月15日,linux中,tips,by netoearth在TCP/IP协议中,TCP协议提供可靠的连接服务,使用三次握手建立连接。

  Linux网卡调优——禁用ipv6并优化套接字缓冲区大小

  Linux网卡调优-禁用ipv6并优化socket缓冲区大小作者:hldxz版权声明:原创作品,谢绝转载!否则,我们将追究法律责任。一般在内网环境下,我们几乎不用IPV6,所以不需要多加或少加。

  关于linux udp发送和接收数据包的缓冲区大小

  1.修改单个套接字的缓冲区大小:通过setsockopt使用SO_RCVBUF来设置接收缓冲区。该参数在设置时不会与rmem_max进行比较,但是如果设置大小超过rmem_max,

  lbrackcmdrsqb如何设置Windows默认命令行窗口大小和缓冲区大小

  Windows命令行cmd窗口系统的默认大小(80*40)对于目前的屏幕配置来说跟不上时代。我们总是要把它变大,缓冲区大小也想变大。只需修改当前Windows命令行窗口的显示。

  如何设置Windows默认命令行窗口大小和缓冲区大小

  关键词:命令行不能全屏,命令行只能半屏最大化,命令行字体背景色解决方案:http://unmi.cc/save-windows-command-size/简述:win r,输入.

  Redis的maxmemory和dbnum的默认值是什么?最大值会有限制吗?

  一、Redis的默认配置了解Redis的人都知道,Redis服务器状态有很多可配置的默认值。例如,数据库的数量、kydlr使用的最大内存、AOF持久性相关配置和RDB持久性相关配置等。我相信,大约.

  随机推荐

  Python教程lpar学习Pythonrpar-1周期;3 Python数据输入

  大多数应用程序都有数据输入语句,用于读取数据和与用户交互。在Python中,可以通过raw_input函数从键盘读取数据。基本语法结构:raw_input(prompt)通常p.

  RHEL6中ulimit的Nproc限制

  更改用户在当前http://blog.csdn.net/kumu_linux/article/details/8301760外壳下可以打开的进程数。修改limits.conf配置文件以使其生效[root.

  ORACLE ORDER BY usage汇总

  ORDER BY后面的形式很新颖(对我来说哦)。以前没见过这种用法,就想写下来,只是为了总结一下order by的知识。1.order by、Oracle in或中NULL的默认处理.

  如何选择版本控制系统——为什么选择Git版本控制系统?

  作为软件研发的核心产品,版本控制系统的“代码”在整个开发周期中不断增加,不断融入新的需求和新的补丁来解决bug,这就要求系统能够存储和跟踪文件的修改历史,记录多个版本的打开。

  主库添加数据文件后,备用库无法创建文件和终止数据同步。

  主库是RAC环境,asm用来存储数据文件,备用库是操作系统的本地文件系统,用来存储数据文件。在主库中执行以下操作:SQL alter tablespace YSDV add datafile dat.

  音频视频控制播放和停止。

  .

  Java学习笔记11(这个,超级)

  这在构造函数之间的使用,公共类person { private string name私人年龄;public Person() { //this(.

  java继承

  继承格式,优缺点,概述:/*继承概述:从多个类中提取相同的内容,在一个类中定义。如何实现传承?Java提供了关键字:扩展格式:类子类名称扩展父类名.

  身份验证组件——FluentValidation

  Fluent验证Fluent验证是一个不同于ASP.NET data annotation属性验证实体的数据验证组件,它提供了实体与验证的分离。

  [MySQL Notes]用户管理

  1.帐户管理1.1 MySQL服务器的登录和注销MySQLh hostname hostipp portu usernamep[password]databasenamee qu.

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: