Chinaunix首页 | 论坛 | 博客
  • 博客访问: 336812
  • 博文数量: 46
  • 博客积分: 4936
  • 博客等级: 上校
  • 技术积分: 575
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-25 20:14
文章分类

全部博文(46)

文章存档

2012年(4)

2011年(1)

2010年(23)

2009年(18)

分类: LINUX

2010-04-01 14:52:00

今天在使用unixodbc时,发现可执行程序运行就崩溃,然后使用isql看一下数据库发现提示File size limit exceeded。提示如下:
[root@localhost tmp]# isql -v MY_ORACLE
File size limit exceeded
 
重启机器,问题依旧。。
 
经过慎密思考和网络帮助
问题解决了,
解决思路:
1. 该提示说明isql需要打开的一个文件超过系统限制了,我用的是32位操作系统,最大的文件是2G,所以查看和isql相关的文件即可,
2. 使用strace查看isql都做了什么
:strace isql -v MY_ORACLE
open("/root/.odbcinst.ini", O_RDONLY)   = -1 ENOENT (No such file or directory)
time(NULL)                              = 1270104166
time(NULL)                              = 1270104166
time(NULL)                              = 1270104166
open("/etc/odbcinst.ini", O_RDONLY)     = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=322, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f8c000
read(3, "[Oracle_test]\nDescription\t\t= odb"..., 4096) = 322
read(3, "", 4096)                       = 0
close(3)                                = 0
munmap(0xb7f8c000, 4096)                = 0
open("/root/.odbcinst.ini", O_RDONLY)   = -1 ENOENT (No such file or directory)
time(NULL)                              = 1270104166
time(NULL)                              = 1270104166
time(NULL)                              = 1270104166
open("/etc/odbcinst.ini", O_RDONLY)     = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=322, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f8c000
read(3, "[Oracle_test]\nDescription\t\t= odb"..., 4096) = 322
read(3, "", 4096)                       = 0
close(3)                                = 0
munmap(0xb7f8c000, 4096)                = 0
open("/root/.odbcinst.ini", O_RDONLY)   = -1 ENOENT (No such file or directory)
time(NULL)                              = 1270104166
time(NULL)                              = 1270104166
open("/tmp/sql.log", O_WRONLY|O_CREAT|O_APPEND, 0666) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=2147483647, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f8c000
fstat64(3, {st_mode=S_IFREG|0644, st_size=2147483647, ...}) = 0
_llseek(3, 2147483647, [2147483647], SEEK_SET) = 0
gettimeofday({1270104166, 490623}, {4294966816, 0}) = 0
write(3, "[ODBC][4533][1270104166.490623]["..., 98) = -1 EFBIG (File too large)
--- SIGXFSZ (File size limit exceeded) @ 0 (0) ---
+++ killed by SIGXFSZ +++
问题出在/tmp/sql.log, 文件太大了,ll一下/tmp/sql.log,果然是2G!
3. 删除sql.log,执行isql,OK!
3. 那到底为什么会产生/tmp/sql.log呢? 原来是odbc产生的,因为我在/etc/odbcinst.ini 中增加了
[ODBC]
Trace=1
Debug=1
Pooling=No
产生了日志,把他们关掉后,就不会产生sql.log日志了。
 
至此,问题解决!

阅读(1499) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~