摘要:本文主要从系统级别的改变、init.ora参数的改变、import选项的改变三个方面来介绍如何实现提高Oracle关系数据库系统的import实用工具的性能,对广大ORACLE系统治理员在进行数据库故障恢复时提高效率有较大意义。
Import和EXPort是ORACLE数据库系统的两个配套的实用程序,Export把数据库中的数据卸出到操作系统文件中,而Import实用程序则把Export卸出的数据恢复到数据库中。import过程有时要花费几个小时甚至几天时间才能成功地完成。不幸的是,在许多情况下,import需要对数据库进行故障的恢复,这时对时间的要求比较高,因而这种性能是不能胜任的。笔者在从事ORACLE 7系统治理工作两年期间,总结出有几个基本的参数改变可以减少import所需的时间。
一、 系统级别的改变
1在重建数据库时尽可能增大DB_BLOCK_SIZ参数。块的大小越大,所需I/O循环的次数就越少。这种改变是永久性的,因此在修改它的时候应考虑到各种可能的影响。
2建立并使用一个大的rollback段,同时将其他rollback段关闭(offline)。一个rollback段大约需要最大的表(table)的50%的大小就足够了。
3在import完成之前将数据库置于NOARCHIVELOG模式。这将减少创建和治理archive日志的时间。
4与rollback段一样,创建几个大的重做日志文件(redo log files),越大越好。关闭一些小的重做日志文件。重做日志文件越大,所需的日志切换的次数就越少。检查警告日志信息如“Thread 1 cannot allocate new log,sequence 17,Checkpoint not complete”,这就意味着日志文件需要扩大或数量需增加。
5假如可能,尽量将rollback段、表数据和重做日志文件分布在不同的硬盘上。这样可以减少I/O冲突的可能性。
二、 intr.ora参数的改变
1将LOG_CHECKPOINT_INTERVAL的值置为大于重做日志文件的大小。这个值通常以操作系统的块大小来定义(UNIX系统大多是512字节)。这样可以将检查点checkpoint)减小到最少(仅在日志切换时执行)。
2增大SORT_AREA_SIZE的值。这种增加取决于机器中其他活动进程的状况以及还有多少可用的空闲内存。我们可以试5-10次来寻找一个最佳值。若机器开始交换(swapping)及页面(paging)切换,说明值设置得太大。
三、 import选项改变
1置COMMIT=N。这将导致import在每个对象(如table)结束之后提交(commit),而非缓冲区满提交。这就是我们为什么需要一个大的rollback段。
2采用一个大的BUFFER值。这个值要视系统活动状况、数据库大小等情况而定。通常几兆字节就够了,但是若有足够的内存这个值还可更大些。同样,我们可以查看页面和交换的情况来确定这个值是否太大。这将减少import进程到文件中读取数据的次数(每次它将读取一个buffer大小的数据)。
3置INDEXES=N。这将加快导入无索引表的速度。采用INDEXFILE选项,在数据导入完成后建立索引。建立索引时SORT_AREA_SIZE值要足够大。