版权所有©1993-2016金蝶国际软件集团有限公司④内部公开请勿外传Oracle导出导入操作指导手册金蝶云星空基础系统部,张华福2022/08④内部公开请勿外传1以ORACLE操作系统账号,登录到数据库服务器上执行。2EXPDP命令中,这些参数很重要:DIRECTORY,DUMPFILE,LOGFILE,CLUSTER,EXCLUDE,SCHEMAS,VERSION。2.1DIRECTORY参数,说明输出文件(两参数dumpfile和logfile)的存放路径,此参数值必须先在数据库里创建,如:createorreplacedirectoryexpdp_diras‘/backup/expdp’;此命令告诉数据库,在操作系统下有一目录:/backup/expdp,当我们在导出命令里设置此参数值,directory=expdp_dir时,导出命令将把两类文件(dumpfile和logfile的值),保存在/backup/expdp目录下。在创建了目录值:expdp_dir后,记得授权给,用于导出操作的某个数据库用户。一般情况下,为了省事,我们会把该目录的所有权限,授予给所有用户:grantallondirectoryexpdp_dirtopublic;2.2DUMPFILE参数,用于说明,保存数据的DMP文件的名称。2.3LOGFILE参数,用于说明,导出操作的整个过程的输出日志名称。这个文件对后续导入DMP文件的操作,很有指导意义。因此,切记把DMP文件和LOG文件,一起交给使用者。2.4SCHEMAS参数,用于说明,要导出的用户名;多个用户之间,用逗号分开,如:SCHEMAS=USER1,USER2,,2.5EXCLUDE参数,用于说明,导出时,要排除掉哪些对象,或者哪类对象,比如:可以排除掉视图:所有视图都不导出。或者指定的表名,也就是不导出某个表,某些表等。或者某类特征的表,比如:TMP开头的表。如:exclude=table:“like\‘TMP%\’”,statistics,就是说,不导出统计信息,也不导出以TMP开头的表。EXPDP要点④内部公开请勿外传2.6CLUSTER,该参数只用于RAC环境,意思是,导出/导入操作,是否在多实例上执行?默认是Y,建议改成N,表示只在当前实例执行:因为CLUSTER=Y时,很容易出错,且效率未必比单实例上执行的高。2.7VERSION,该参数说明,要导入的目标库的版本,比如:导出的数据库是19C,要导入的目标库是11G,由于11G版本,比19C版本老,19C版本上的一些新特性,11G版本没有,此时,导入操作将失败,因此,在导出时,就告诉导出操作,目标数据库的版本是多少?这样,导出操作将只选择11G版本能接受的特性导出,避免在11G版本上,导入失败。一句话总结:低版本数据库的DMP文件,可以导入到高版本数据库中,比如:11G版本导出的DMP文件,可以正常导入到19C;但高版本的DMP文件,无法导入到低版本数据库,此时,导出时,需要参数VERSION说明目标数据库的版本。补充:2.8COMPRESSION,说明,要对哪些导出对象进行压缩,包括:ALL(全压缩),DATA_ONLY(只压缩导出数据),METADATA_ONLY(只压缩元数据),NONE(不压缩)。建议选择:ALL(全压缩),节省空间,加快数据传输。2.9PARALLEL,说明,导出操作的并行度,目的是加快操作。如:PARALLEL=4。2.10FILESIZE,说明导出文件的最大尺寸,超过了,就生成新的文件。如:FILESIZE=4g,要求生成的文件尺寸,不能超过4G。使用此参数时,通常会对DUMPFILE参数指定的文件名,后缀新增:_%U,以确保产生多个DMP文件时,文件名唯一。EXPDP要点(2)④内部公开请勿外传3export=var_bak_date=`date+%Y%m%d%H%M`expdp"'/assysdba'"directory=expdp_dirdumpfile=expdp_${var_bak_date}_%U.dmplogfile=expdp_${var_bak_date}.logschemas=HYSHR,GSLTD,HYMCexclude=table:\"like\'TMP%\'\",statisticscompression=allcluster=nparallel=2filesize=4gversion=11.2.0.41以ORACLE操作系统账号,登录到数据库服务器上执行,2dmp文件名,是以expdp开头,中间用当时的时间(年月日时分),以_1、_2等结尾;log文件名没此结尾,3导出文件:*.dmp,*.log,保存在expdp_dir目录参数所指定的位置,4按用户导出,有3个用户:HYSHR、GSLTD、HYMC,5不导出对象的统计信息,不导出以TMP开头的表,6导出时,对所有数据进行了压缩,7脚本带了cluster=n,不走集群模式导出,不过因为是单节点数据库,此参数在此无意义,8每个文件dmp最大尺寸为4G,9并行度为2,意味着会同时创建2个dmp文件,10目标数据库的版本是11204,11此脚本在19.5的单节点数据库上成功执行,12导出结束后,记得检查下导出日志,看看是否存在什么错误?得先确保导出正常结束,导入才可能正常执行。EXPDP脚本案例(Linux)④内部公开请勿外传1以ORACLE操作系统账号,登录到数据库服务器上执行。2在执行导入前,先在目标数据库里创建好目标用户使用的表空间,最好和源表空间同名,且尺寸足够(可以先到源库上查询源账号占用的磁盘尺寸),并创建好和源账号匹配的目标用户,授予足够权限(参照源账号被授予的角色、权限)。3这些参数很重要:DIRECTORY,DUMPFILE,LOGFILE,CLUSTER,EXCLUDE,SCHEMAS,REMAP_SCHEMA,TRANSFORM,3.1DIRECTORY,DUMPFILE,LOGFILE,CLUSTER的意义,和EXPDP的一样。3.2SCHEMAS参数,用于说明,要导入的用户名;多个用户之间,用逗号分开,如:SCHEMAS=USER1,USER2,,,3.3REMAP_SCHEMA参数,用于说明源用户和目标用户名不匹配时的对应关系:导出是USER1,要导入到USER2中时,就得用着参数说明:USER1:USER2,多个用户时,得一一说明;显然,若源和目标同名时,则不需要说明。3.4REMAP_TABLESPACE参数,用于说明源用户所分配的表空间名,和目标用户所分配的表空间名,不匹配时的对应关系:TS1:TS2,TS3:TS4(源TS1,目标TS2;源TS3,目标TS4);显然,若源和目标同户名时,则不需要说明。3.5TRANSFORM参数,用于说明,对象到新库时的命名规则或一些转换关系。比如:一些LOB字段,创建时对应的段名,及其索引名,ORACLE会使用了内部的一些SEQ值来确保唯一;当这些值导入库时,若用回原始名,则可能会和目标库中的一些对象,因同名冲突而导入失败;此时,必须使用transform=oid:n,知会ORACLE,使用新库中的SEQ来避免冲突,并确保唯一;又如当目标用户使用的表空间,和源用户的表空间名并不一致,但又不知道源表空间的名称时,则可以配置transform=segment_attributes:n,知会ORACLE,对于源用户的任意表空间,都用目标用户的默认表空间来匹配。IMPDP要点④内部公开请勿外传4impdp"'/assysdba'"directory=expdp_dirdumpfile=expdp_202207251715_%U.dmplogfile=imp_expdp_202207251715.logschemas=HYSHR,GSLTDremap_schema=HYSHR:HYSHR1,GSLTD:GSLTD1exclude=table:\"like\'TMP%\'\"cluster=nparallel=2transform=oid:n,segment_attributes:n1以ORACLE操作系统账号,登录到数据库服务器上执行,2在expdp_dir目录参数所指定的位置,读取:*.dmp数据源;同时,也是在该目录下,保存导入过程的日志文件,3两个dmp文件名,以_1、_2结尾,为了不把两文件都罗列出来,还是照样用_%U来说明,4只导入两用户:HYSHR、GSLTD,在目标库中,分别对应HYSHR1、GSLTD1来匹配,5不导入以TMP开头的表(导出时,没导出统计信息,此时,若此参数带统计信息,则会报错),6cluster=n,这是照抄,7transform=old:n,照抄,8transform=segment_attributesn:不匹配表空间名了,使用目标用户的默认表空间来保存数据,建索引等,9此脚本在11204的单节点数据库上成功执行,10导入结束后,记得检查下导入日志,看看是否存在什么错误?有些错误可以忽略,有些错误必须修复才能使用,问题严重时,得删掉,重头再来。IMPDP脚本案例(Linux)Thanksterimakasih感謝谢谢ありがとうขอบคุณ④内部公开请勿外传版权所有©1993-2016金蝶国际软件集团有限公司