oracle怎么提交 oracle提交事务的sql语句

如何向Oracle数据库表中进行大数据量的插入并提交?

你好!

成都创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:网站建设、成都网站设计、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的龙湾网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!

一次折腾几千万的话,

那么设置一下,

20W了,

就自动提交一下。

set

autocommit

on;

set

autocommit

200000;

然后,假如你的目标数据库,

是归档的话,

可以

INSERT

/*+

append

*/

INTO

目标表

nologging

SELECT

*

FROM

源表@DBLINK;

commit;

set

autocommit

off;

假如你的

目标表

上面,

索引的话,

建议先删除

索引。

上面的

INSERT

语句执行完毕后,

再重建索引。

仅代表个人观点,不喜勿喷,谢谢。

oracle事务提交的两种方式是什么

显式提交和隐式提交

显式提交,比如出现commit,这类的就是显式提交。

隐式提交是不用写commit的提交,比如alter语句的提交。

oracle批量提交的问题

两种方式实现oracle批量提交

方式一:利用 fetch .. bulk collect into .. limit limitnumber;--limitnumber批量提交条数

declare Cursor dataCursors

is

/*定义游标*/

;

type dataCursor is table of tablename%rowtype;

dataCursorP dataCursor;

begin

open dataCursors;

while (true) loop

fetch dataCursors bulk collect into dataCursorP limit 50;

forall i in 1 .. dataCursorP.count

insert into tablename values dataCursorP(i);

commit;

exit when dataCursors%notfound;

end loop;

close dataCursors;

end;

方式二:自己实现批量提交功能

实现原理:定义一个number类型的记录数,游标循环过程中记录数自增1,利用mod判断如果是否整除,整除就提交。

declare executenum:=0;

declare Cursor dataCursors

is

/*定义游标*/

;

dataCursor dataCursors%rowtype;

begin

for dataCursor in dataCursors

loop

executenum:=executenum+1;

/*update,insert or delete 等操作 */

if mod(executenum,50)=0 --这里设置50条一提交

then commit;

end if;

end loop;

commit;--最后提交一次,因为有可能最后不是50的整数

end;

--executenum还可以记录操作的条数,

Oracle 中怎么手工提交Cluster Table的事务

QL conn roger/roger

Connected.

SQL create

cluster t_cluster(id number(2)) ;

Cluster created.

SQL create

table t_0610

2 (id number(2)

primary key,

3

name varchar2(13))

4 cluster t_cluster(id);

Table

created.

SQL create

index t_cluster_idx

on cluster t_cluster;

Index

created.

SQL

SQL insert

into t_0610 values(1,'baidu');

1 row created.

SQL insert

into t_0610 values(2,'google');

1 row created.

SQL insert

into t_0610 values(8,'roger');

1 row created.

SQL commit;

Oracle事务提交

重新启动时,系统先REDO,然后对未提交的UNDO,数据在更新前的状态

oracle DBLink更新了另一个数据库数据后,怎么提交那条数据

这个commit应该是本机的,和dblink没什么关系,而且就算你找到的dblink的那个session那么也不行,以为这个session在dblink的操作完成后已经关闭了。

个人感觉不要这么远程insert,最好是调用一个那个数据库上的过程去insert这样的话,在那个过程中commit肯定是没有问题的。

如果必须要这么写,那么可以加入一条insert和一条delete

就是上面是正常insert的语句。

下面有一条delete(这条删除一个绝对不可能出现的一条试试)

按照你的说法,第二个事务提交时,第一个事务才能commit。可是这样会出现问题,因为如果你大量提交,那么数据库会因此夯住的,所以你看看第一个办法行不行,我觉得第一个办法还靠谱点。


网站栏目:oracle怎么提交 oracle提交事务的sql语句
URL分享:http://csdahua.cn/article/hhiceo.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流