我所写的程序的步骤大致如下(程序有点长,用文字代替),出现的错误是运行了一段时间后就停止了运行。一般是读了十几个txt文件后程序就停在下方提示处。好像是引起了表的锁的机制(是不是我OCI的程序的设计问题导致的),请问怎么才能解除这种错误。或者我OCI的结构有问题还是什么的。 do
{
if("文件夹中的文件不是系统文件")
{
读取txt文件名称
申请环境句柄
申请服务器句柄
申请错误句柄
申请用户会话句柄
申请服务上下文句柄
申请语句句柄
申请结合句柄
使用线程和对象模式来创建环境句柄OCIEnvCreate
分配服务器句柄OCIHandleAlloc
分配错误句柄OCIHandleAlloc
创建服务器上下文句柄,“LE”为建立连接的数据库名OCIServerAttach
分配服务器上下文句柄OCIHandleAlloc
设置服务器上下文句柄的服务器句柄属性OCIAttrSet
分配用户会话句柄OCIHandleAlloc
为用户会话句柄设置用户名和密码属性OCIAttrSet
OCIAttrSet
OCISessionBegin
在服务器上下文环境中设置用户会话属性OCIAttrSet
分配语句句柄OCIHandleAlloc
准备SQL语句OCIStmtPrepare
由位置绑定OCIBindByPos
fp=fopen(txt文件,"r");while(条件满足)
{
读取文件内数据,并赋给相关变量
[b]执行插入数据操作OCIStmtExecute[/b]****************************程序停止处
读完退出(每个txt文件中大概有12000组数据,所以上面插入操作要执行12000次)
}提交OCITransCommit
fclose(fp);
结束会话OCISessionEnd
断开连接OCIServerDetach
释放句柄OCIHandleFree
}
}while("文件夹中还有文件(文件夹中大概有200个文件)")
{
if("文件夹中的文件不是系统文件")
{
读取txt文件名称
申请环境句柄
申请服务器句柄
申请错误句柄
申请用户会话句柄
申请服务上下文句柄
申请语句句柄
申请结合句柄
使用线程和对象模式来创建环境句柄OCIEnvCreate
分配服务器句柄OCIHandleAlloc
分配错误句柄OCIHandleAlloc
创建服务器上下文句柄,“LE”为建立连接的数据库名OCIServerAttach
分配服务器上下文句柄OCIHandleAlloc
设置服务器上下文句柄的服务器句柄属性OCIAttrSet
分配用户会话句柄OCIHandleAlloc
为用户会话句柄设置用户名和密码属性OCIAttrSet
OCIAttrSet
OCISessionBegin
在服务器上下文环境中设置用户会话属性OCIAttrSet
分配语句句柄OCIHandleAlloc
准备SQL语句OCIStmtPrepare
由位置绑定OCIBindByPos
fp=fopen(txt文件,"r");while(条件满足)
{
读取文件内数据,并赋给相关变量
[b]执行插入数据操作OCIStmtExecute[/b]****************************程序停止处
读完退出(每个txt文件中大概有12000组数据,所以上面插入操作要执行12000次)
}提交OCITransCommit
fclose(fp);
结束会话OCISessionEnd
断开连接OCIServerDetach
释放句柄OCIHandleFree
}
}while("文件夹中还有文件(文件夹中大概有200个文件)")
解决方案 »
- 连接oracle出现“未发现Oracle(tm)客户端和网络组件”,求高手
- Oracle 到底有沒有 GUI 介面,好似SQL Server Studio Managment 的....
- trim函数索引,查询的时候为什么不使用
- 请教怎样查看当前数据库的时间格式?
- 请问一个merge into 的ON后面多个条件如何实现?
- 新手的简单问题,orcale高手请进(来者有分)
- 查询速度出奇的慢,但是服务器的cpu和内存的利用率很低,怎样提高效率?充分的利用服务器?
- 优化建表的问题。
- 同表中字段A的值赋给B
- 表空间异常增大,删除对应表相应条目报错 ORA-01654
- oracle存储过程与JOB技术问题
- 字符串操作求助
{
读取文件内数据,并赋给相关变量
执行插入数据操作OCIStmtExecute****************************程序停止处
读完退出(每个txt文件中大概有12000组数据,所以上面插入操作要执行12000次)
}
================
在循环里面分批提交,不要循环完成后再提交,那么需要的内存太大了
有可能是服务器内存不够而产生锁或死机建议你在循环里每有500条INSERT语句时提交一次;
还有,做这么大的操作,回滚段应该适当加大。
表的结构为:
名称 数据类型 大小 小数位
T_INUM NUMBER 10 0
T_ECLA VARCHAR2 1
T_IDES VARCHAR2 8
T_ESEP NUMBER 13 8
T_STDE VARCHAR2 10
T_NDDE VARCHAR2 8
T_DRAG VARCHAR2 8
T_ETYP NUMBER 1 0
T_ENUM NUMBER 4 0
T_CSUM NUMBER 1 0
T_OINC NUMBER 8 4
T_RAAN NUMBER 8 4
T_ECCE NUMBER 7 0
T_AROP NUMBER 8 4
T_MEAN NUMBER 10 8
T_MMOT NUMBER 10 8
T_RNAE NUMBER 5 0
T_CKUM NUMBER 1 0