为了测试用途,从生产库导出了一份dump文件,打算导入测试环境中,如果这份 dump文件有损坏,可能我执行的impdp,会造成数据库有一部分数据导入成功了,但另一部分失败了,要么挑出失败的部分,断点执行,这难度比较大,要 么只能清空,重新执行。我们是不是只能通过执行impdp,真正执行导入操作才可以知道这份expdp导出的dump文件是否是完整正确的?
Oracle如此智能,会给我们一些方法来校验。这篇文章就介绍了一种方法,How To Validate A DataPump Export (EXPDP) Dump File ? (文档 ID 2113967.1)。
首先,创建directory,执行expdp导出命令,
根据文章介绍,为了验证expdp导出的文件有效性,可以使用SQLFILE参数执行一次测试导入。并不真正执行SQL,目标库并未变。
To validate the dump files generated by the DataPump export, run a test import with SQLFILE parameter. The SQL is not actually executed, and the target system remains unchanged. The file is written to the directory object specified in the DIRECTORY parameter, unless another directory_object is explicitly specified here.
增加参数sqlfile,从回显中未看见报错,
打开sqlfile.sql文件,是一系列的用户、表、存储过程、索引、统计信息、数据等的创建语句,但此时数据库唯有变化,相当于做了一次导入测试,
若是让这个dump文件产生错误,执行导入命令,就会提示报错,
损坏dump文件的方法很多,
The files are invalidated by non-binary ftp transfer. If you transferred a dump file from one machine to another via FTP, make sure that the file is transferred in binary mode.
The transfer of the dump files from source environment to target environment has been interrupted.
The dump file are truncated by disk space of file system size limitations.
The export job has not been completed successfully.
例如,使用FTP传输时未指定二进制模式,破坏文件的传输过程,由于文件系统大小限制,导致文件被截断,导出任务未正确完成操作,这些场景都可能造成dump不可用。
总结:
有了SQLFILE参数,我们就可以在真正导入之前,做一次测试,验证dump文件的有效性。
如果您觉得此篇文章对您有帮助,欢迎关注微信公众号:bisal的个人杂货铺,您的支持是对我最大的鼓励!共同学习,共同进步:)