那么设置一下,
有
20W了,
就自动提交一下。
set
autocommit
on
set
autocommit
200000
然后,假如你的目标数据库,
是归档的话,
可以
INSERT
/*+
append
*/
INTO
目标表
nologging
SELECT
*
FROM
源表@DBLINK
commit
set
autocommit
off
假如你的
目标表
上面,
有
索引的话,
建议先删除
索引。
等
上面的
INSERT
语句执行完毕后,
再重建索引。
数据库用户的创建、权限的分配数据库安装完成后,有两个系统级的用户:
system 默认密码为:manager
sys默认密码为:change_on_install
在安装的数据库目录中找到 \oracle\product\9.2\bin 中的sqlplus程序, 运行:./sqlplus system/manager@ora9i
用system用户创建自己的用户、权限;sql语句如下:
1、创建用户:
create user username identified by pwd default tablespace users Temporary TABLESPACE Temp
2、 用户授权 grant connect,resource,dba to business
3、 提交: commit
数据库数据的导入,导出
假设有两个数据库 9.0.1 与 9.0.2 1.导出数据
exp system用户/system的密码@服务器名 owner用户名=“oradial ” file="oradial.dmp"
说明:
(1) 如果该命令是在本地执行,则不用指定服务器名
(2) owner用户名,通过sys用户的登录所创建的用户名。同时授予的权限包括
connect , dba , resource ,还要创建表空间。
(3) system用户名,owner用户名 是9.0.1数据库中的用户 2.导入数据
imp system用户/system的密码@服务器名 file=oradial.dmp fromuser(用户名)=oradial touser(用户名)=abc
若了解更多详情,在DOS下输入 exp help = y imp help = y
这个commit应该是本机的,和dblink没什么关系,而且就算你找到的dblink的那个session那么也不行,以为这个session在dblink的 *** 作完成后已经关闭了。个人感觉不要这么远程insert,最好是调用一个那个数据库上的过程去insert这样的话,在那个过程中commit肯定是没有问题的。
如果必须要这么写,那么可以加入一条insert和一条delete
就是上面是正常insert的语句。
下面有一条delete(这条删除一个绝对不可能出现的一条试试)
按照你的说法,第二个事务提交时,第一个事务才能commit。可是这样会出现问题,因为如果你大量提交,那么数据库会因此夯住的,所以你看看第一个办法行不行,我觉得第一个办法还靠谱点。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)