最近客户有个测试项目,需要将大量的文本文件用sqlloder加载到oracle数据库中。特此做出如下实验,演练一下sqlloader的几个重要参数。
主要参考官方文档上关于redo产生的控制
关闭归档日志模式
关闭所有实例
查看sqlloader所需的文件及大小
控制文件
数据文件
观察当前的log序列号
在oracle用户下执行sqlloader,参数silent=all 不输出屏幕信息
查看日志输出
查看执行sqlloader后log的变化,测试环境没有其他应用,可以认为log的变化全部来自于sqlloder加载数据产生。
本机是rac双节点环境,sqlloader在节点一的服务器上执行,可以看出日志的序列从刚才的133,132变化到了159,158。 节点二的日志不发生变化。
下面开始优化sqlloader
一,优化:直接路径加载
虽然直接加载的方式不经过sql引擎,不会产生redo和undo,但是我们看到还是会有微乎其微的日志增长。
二,优化:nologging
日志序列已经不再变化了,可是并没有使速度变得更快,反而慢了5秒
三,优化:unrecoverable
四,优化 — parallel
实验总结:
0,如果是测试环境做数据加载,一定要先关闭归档日志(alter database no archivelog)。如果归档日志不关闭,后面的所有优化都没有效果。
1, sqlloder的direct 加载方式效果最突出。
2,设置表为nologing虽然可以彻底避免日志的生成,但是优化的效果已经不明显了。
3,parallel需要在同时执行多个控制文件,访问多个数据文件是才会有效果。例如: