我现在有个需求:
我的存储过程大概有6000行代码,里面有insert操作一个批次不超过5000条吧,
执行到最后如果成功则commit,否则rollback。不知道这样会不会有问题,请大家尽情发言。oracle
我的存储过程大概有6000行代码,里面有insert操作一个批次不超过5000条吧,
执行到最后如果成功则commit,否则rollback。不知道这样会不会有问题,请大家尽情发言。oracle
解决方案 »
- 通过代码循环往数据库中插入数据时报错,求大神指教
- oracle数据库中 怎么去掉非汉字的字符,并选择出2个或3个汉字的 数据
- 请问如果找到正在执行的存储过程进程
- 是用or快还是分开快点???
- 各位好,遇到一个麻烦,还请各位大虾帮忙解决,分数不多,单一定兑现
- 在sql检索数据的时候,就是where in语句,检索一个字段是肯定可以的.但能否用两个字段来做为in的条件
- Oracle达人请入!RedFlag DB Sever 3.0 &Oracle 901!如何将Oracle数据库定时自动备份到另外一台机子上去!
- 如何截取字符串的前10个字符?
- 请教一条有难度的SQL语句(高手进)
- 简单问题:两个完全相同的oracle数据库是否可以在同一客户端同时使用?
- 求教:关于oracle将数据导入导出为txt文本的proc编程问题
- 为何CANVAS_STACKED显示不出来?????
其实commit执行前,在数据库中已经执行了数据更改,所以已经完成了99%的任务,例如:下列操作已经产生:
1.在SGA(Buffer Cache)中已经生成了undo块;
2.在SGA(Buffer Cache)中已经生成了产生改变的数据块和索引块;
3.在REDO LOG BUFFER生成了前面两项的redo信息;
4.依赖于前三项产生的数据量大小以及操作需要的时间,buffer中的数据可能已经
有一部分输出到了磁盘;
5.所有需要的锁已经获得;
当执行COMMIT命令时,只执行如下操作:
1.为事务生成SCN:SCN是ORACLE数据库的一种计时信息,用以保证事务的顺序性,
同时还用于失败恢复和保证数据库的读一致性和检查点,无论何时何人提交,SCN
自动加1;
2.将事务相关的未写入redo log file中的redo信息从redo log buffer写入到redo log
file,这才是真实的COMMIT,这步操作完成,说明我们已经完成COMMIT,事务从
V$TRANSACTION中移除;
3.V$LOCK中记录的SESSION关于该事务的锁会释放,其他需要这些锁的事务被唤醒;
4.执行块清理,清理块头保存的事务信息;
第2点看出大数据量commit时涉及到对服务器io的考验。
但5000条理论上是肯定没问题的。