SQL*Plus出现段错误及Core dump

    当你的SQL语句很长(估计是2048个字节)并写成一行时, 用SQL*Plus去运行这个角本时, 就会出现这个错误. 原因是SQL*Plus中用一个有最大行长度限制的单行缓冲区去读取一行, 当读到的一行比这个单行缓冲区长时就出问题, 整成多行就没有问题. 每读入一行就将这一行的SQL拼接到更大的(如64K)SQL缓冲区中.

    这种Overflow的方法就是一开始黑客用的攻击手段, 想出来的对册是在内核的代码及程序中, 一律改成有长度限制的函数调用, 这样一改后, 通过这种方法攻击的成功率就降低很多了.

    遇到这个问题后, 突然记起我的AUL/MyDUL工具也遇到过, 它的行缓冲区是1024, 当时有一个外国人去恢复表时, 因为表的定段太多了, 在指定列的类型后, 这个UNLOAD命令长得刚好超出了1024个字节, 也是想了好久才想到的. 后来建议将一行折成两行就没事了.

    正在手工将这个SQL折成多行运行呢!

留言 (1)

"Overflow的方法就是一开始黑客用的攻击手段"

没有看懂..., 帮忙给解释一下.

发表留言:

« Previous | Main | Next »

英语900句 | English 900

  • In Brazil, many ancient forests are very well preserves.
  • 在巴西, 古老的森林保存十分完好.
  • Lumbering is very important in some underdeveloped countries.
  • 在一些不发达的国家, 伐木业十分重要.
  • The scenery is very beautiful in the small islands in the Pacific Oceans.
  • 太平洋上一些小岛的景色十分优美.
  • What kind of climate do you have in this country?
  • 这个国家的气候如何?
  • In the west of America, there are many high peeks and deep canyons.
  • 在美国西部有许多高峰和深谷.