在Linux系统中导入

导入前请确认当前Linux用户具有读取dmp文件的权限,并已正确设置Oracle环境变量,包括
使用传统imp导入dmp文件:基本语法为imp username/password@sid file=xxx.dmp full=y ignore=y log=imp.log。例如导入整个数据库:imp system/oracle@orcl file=/home/oracle/backup.dmp full=y ignore=y log=/home/oracle/imp.log。若仅导入特定表,可使用tables=table1,table2;若指定表空间,使用tablespaces=ts1。传统imp在导入时会执行SQL语句,若对象已存在,结合
使用数据泵impdp导入dmp文件:数据泵导入格式与imp不同,必须使用directory对象指定操作系统目录,且dmp文件必须位于该目录内。首先创建目录对象:CREATE OR REPLACE DIRECTORY dmpdir AS '/home/oracle/backup';,然后授权:GRANT READ, WRITE ON DIRECTORY dmpdir TO system;。导入语法为:impdp system/oracle@orcl directory=dmpdir dumpfile=backup.dmp full=y logfile=impdp.log。若需要从多分卷文件导入,使用dumpfile=backup1.dmp,backup2.dmp;若使用通配符,如dumpfile=backup_%U.dmp。
常用impdp参数说明:schemas=用户名仅导入该用户的全部对象;tables=表名仅导入指定表;remap_schema=源用户:目标用户用于跨用户导入;remap_tablespace=源表空间:目标表空间用于表空间映射。配合transform=segment_attributes:n可忽略存储属性,便于迁移。使用exclude=statistics可避免导入统计信息,加快导入速度。
两种工具的重要区别:imp生成的日志中包含“Import terminated successfully with warnings”等提示;impdp生成的日志中若出现“Job parallel=4)和网络导入(从远程数据库直接导入),传统imp不具备这些功能。
注意事项:导入前最好先备份目标库或制定回滚计划;若目标是已有对象,可能需要table_exists_action=replace/truncate/skip参数(impdp特有)。传统imp没有该参数,只能通过NLS_LANG环境变量调整。对于大型dmp文件,确保磁盘空间充足,并考虑分卷导入或使用并行参数优化性能。
常见错误处理:如果提示“ORA-39001: Invalid argument”或“ORA-39002: invalid operation”,说明命令语法不正确,检查参数拼写。如果提示“ORA-39087: directory name is invalid”,需确认directory对象是否存在及dmp文件是否在正确目录中。如果提示“ORACLE not available”或“ORA-12154”,请检查环境变量和监听器状态。如果权限不足,请使用更高权限账户或与DBA联系。
总结:在Linux上导入dmp文件,核心是识别dmp类型并选择合适的导入工具。传统

查看详情

查看详情