oracle数据库中执行备份、恢复与数据的重整的方式有多种,其中最简单快捷的是导入导出功能,oracle有两个工具导出(export unility)和导入(import unility),export unility可以创建一个逻辑的备份文件,可以只单纯创建备份对象的定义,也可以将对象的数据及对象的完整性约束一起备份,导出的文件格式是二进制(binary file)。
import unility会读取导出文件,先执行ddl语句,将对象的定义及约束创建完成后,再执行dml语句,将数据存入数据库中。
export unility导出功能主要是将数据或对象的定义利用导出的指令导出到文件中,共有四种模式,表模式、表空间模式、用户模式、全库模式。
表模式主要是在导出的时候指定具体的表来导出,导出时与表相关的对象(index\triggers\constraint\grants\analyzemethod)将一起被导出
exp user_name/password@oracle_sid tables=(table1,table2...) file=file_name log=log_name
用户模式
exp user_name/password@oracle_sid file=file_name log=log_name owner=user_name
表空间模式
exp user_name/password@oracle_sid file=file_name log=log_name tablespaces=tablespace_name
表空间模式自oracle9i之后才有的,只针对单一的表空间,在导出时tablespaces是导出的表空间
全库模式
exp user_name/password@oracle_sid file=file_name log=log_name full=y;
此模式下user_name必须具有特性的权限才能处理
import unility导入功能主要是将导出文件里的数据导入到数据库中,根据导出的模式对应也有以下四种模式
表模式
imp user_name/password@oracle_sid tables=(table1,table2...) file=file_name log=log_name
单个表时可使用tables=table1
用户模式
imp user_name/password@oracle_sid file=file_name log=log_name fromuser=user_name touser=user_name
用户模式下fromuser指导出文件导出时所指定的用户,touser是指将导入的用户
表空间模式
imp user_name/password@oracle_sid file=file_name log=log_name tablespaces=tablespace_name
imp导入时tablespaces是指将导入的表空间,而不是导出文件时指定的表空间
全库模式
imp user_name/password@oracle_sid file=file_name log=log_name full=y
oracle导出方式有两种conventional path export和direct path export,exp的导出方式由参数direct决定,
如direct=y时表示exp导出采用直接路径模式direct path export。如direct=n时则采用传统路径模式conventional path export,export unility在未指定参数direct时
,direct默认值为n。
conventional path export:会先执行一个select * from的语法,表模式下,会先查询出指定的表,在去执行sql语句;表空间模式下,会先找出该表空间下所有的表,再执行sql语句;用户模式下,会先找出该用户下所有的表,再执行sql语句;
全库模式下会先找出所有的表再执行sql语句,在执行中会读取数据,然后将数据存入缓冲区,然后再经过缓冲区的评估来判断是否需要处理数据字符集的转换等操作,最后才写入导出文件。
direct path export:速度较快,因为不需要执行select * from语法,直接从数据区读取数据存入缓存区,,然后不经过评估处理直接写入导出文件。
两种方式比较
direct path export比conventional path export要快,一般情况下direct path export到处的时间是n,则conventional path export的导出时间是2*n或3*n。
direct path export导出时,导出的时间跟参数recordlength有关,最大值是64k,而conventional path export方式下,导出时间跟参数buffer相关。
direct path export导出并不影响imp的导入,与conventional path export是一样的。
direct path export导出方式不支持表空间模式,同时也不支持lob对象的导出
exp和imp功能简单、方便,以上各模式只介绍了部分参数,详细的参数定义可通过exp help=y可查询,亦可参考ora 10g dba reference
