日期:2014-05-16  浏览次数:20550 次

Oracle 11g数据库手动操作和设置导出和导入过程


  关于导出和导入的实用工具,你不一定要接受其默认参数。事实上,你应该采用大部分的自定义设置,这样能够使移植过程更容易进行,而且在产品环境实际进行操作时能够节省大量时间。

  我们首先来看看索引文件的参数设置,在导入过程中,最好使用indexfile=filename的设置,原因至少有四条。

  第一,这样可以把表和索引等对象信息(全部或部分,取决于导出dump文件中包含了什么内容)存储在指定的输出文件中。想知道创建模式的源代码在哪里吗?如果你没有源代码,那这个参数(连同一个返回所有其他信息的简单查询)对于这些信息的提供会有很大帮助。查询部分会将全部的或user_source数据字典的内容输出到文件中。包、包体、存储过程、函数和触发器等代码信息都包括在输出的结果文件里。再稍微加工一下,例如执行CREATE OR REPLACE命令,清除SQL*Plus工具存储区域里无用的结果(如标题行、换页等),剩下的就是一个模式最重要那部分的当前代码。

  第二,如果你想对表和索引对象进行清洗或重排操作,那么在导入时通过这一设置,对索引文件进行编辑,并对表空间映射和存储参数进行更新时机恰到好处。

  第三,如果你想让逻辑布局维持原样,可以分隔索引和表,也就是分离SQL CREATE命令(一部分脚本专门用于创建表,另一部分专门用于索引)。在进行实际的移植之前,要尽可能先设置好目标数据库。其中一部分工作就是创建新的同样的表空间,并运行创建表的脚本。提前运行创建表的标本有两个理由,一是使逻辑布局生效,二是提高移植导入的速度。

  第四个原因回到了索引文件中所列的索引。当执行数据批量插入时,是有索引好呢还是没有所以更好呢,这对于插入效率有多大的影响?由于每插入一个新记录,就必须更新一个或多个索引(假设该记录至少有一个主键),所以对于大型数据库而言,Oracle的建议是等所有的数据都已经插入完毕后再构建索引。这样的建议无疑又重申了indexfile的重要性,因为当导出时使用“indexes=n”(默认设置是y)的设置把索引忽略掉以后,想要在数据全部导入完毕后重新构建索引,indexfile就是衔接的桥梁。