|
原帖由 holly_pansy 于 2008-7-18 17:48 发表 ![]()
谢谢楼主的指出,我的关于"direct load与常规load一样;"的确不够严谨.
我在做本次测试的时候,是和另外一个测试一起做的.
得出这段话的依据如下:
我的data.txt文件大小为4.3G,这个文件里的数据格式为
more data.txt
97 97
4474 97
4481 97
1810 97
5770 97
5788 97
这个数据是从从2个dba_objects表做笛卡尔乘积的2个object_id列spool出来取的数据,在data文件到4g的时候中断spool.
在sqlldr的过程中,direct load加载到30,000,000万行的时候终止sqlldr,共产生了31个100M的归档文件.产生的归档日志量还是很大的.
这个测试还有后续一部分,将该表建立为nologging模式
create table ttt(id varchar2(100)) nologging;
进行同样的测试,以及同样在33,000,000行的时候结束sqlldr,只产生了2个100M的归档日志.
再测试用常规load加载到30,000,000结束sqlldr,观察产生的归档数量为30个100M的归档,与31个100M的归档处于同一数量级.
最后关于一楼的分批提交问题,我的看法是的确不是commit,因为表里面无数据;同样,在rows参数的说明中,oracle特意使用save,而不是commit,不知楼主的看法如何?
你好,very sorry for reply to you.
你的数据库应该是在archive mode下吧.
noarchive mode就不用care 表是nologging或logging的状态.
我也不明白save是为何物,不过save就不能rollback,但其它session是看不到save的数据. |
|