Oracle导入dmp文件

2024-06-30 1040阅读

文章目录

  • 写在前面
  • 一、详细知识点
    • 1、dmp文件
    • 2、导出dmp文件
      • 2.1、exp和expdp区别
      • 2.2、exp导出操作
      • 2.3、expdp导出操作
      • 2.4、PL/SQL使用客户端导出
        • 2.4.1 特殊说明
        • 2.4.2 操作指引
        • 3、导入dmp文件
          • 3.1、imp和impdp区别
          • 3.2、imp导入操作
          • 3.3、impdp导入操作
          • 3.4、PL/SQL使用客户端导入
          • 二、 具体示例
            • impdp导入dmp文件

              写在前面

                     笔者只是一名后端程序员,并非专业的数据库管理员,说实在的,数据库的功力很是一般般,只是比较熟练平常程序中的增删改查之类的操作,其实 dmp 导入导出更多的使用场景是数据迁移和备份,只不过工作中恰巧碰到一次被领导要求进行导出导入的操作,因此学习了一下,并整理了此次学习记录,如发现纰漏,欢迎留言。

                     再次提醒,非专业人士,仅供参考,因涉及数据,请审慎地对待您对数据库执行的每一条命令!请在了解文中提到的命令的每一个参数含义后,再判断如何修改命令并执行!

              一、详细知识点

              1、dmp文件

                     dmp是"Data Pump"的缩写,它是Oracle独有的一种数据导入导出文件格式。dmp文件是Oracle数据库备份/还原的常用文件格式之一,是一种完整备份文件,可以记录Oracle数据库的所有数据,包括表、视图、过程等等,保存为二进制格式的文件。dmp文件一般包含数据定义语言(DDL)和数据操作语言(DML)。具体来说,DDL是用来定义数据库对象,例如表、视图、用户等等;DML则是用来操作这些对象,例如插入、删除、更新数据等等。

              2、导出dmp文件

              2.1、exp和expdp区别

                     exp(Export) 和 expdp(Data Pump Export) 是Oracle数据库提供的导出工具,用于将数据库对象和数据导出为DMP文件。它们之间的主要区别如下:

              工作原理exp是使用传统的导出技术,而expdp是使用Oracle Data Pump技术。Data Pump是Oracle在10g版本中引入的高性能、可扩展的导入导出工具,即 Oracle 10g 之前的版本不可以使用 expdp。
              导出速度和效率由于Data Pump使用了并行处理和更高级的压缩算法,相对于exp,expdp通常具有更快的导出速度和更高效的性能。
              支持的导出对象exp支持导出整个数据库、模式(用户)和表级别的对象,而expdp支持更多的导出对象级别,包括表、模式、表空间、工作表、存储过程等。
              导出选项和灵活性expdp提供了更多的选项和参数,允许更灵活地控制导出的内容,如选择特定的对象、数据过滤、并行度配置等。它还提供了更丰富的重定向和日志记录选项。
              文件格式exp和expdp生成的DMP文件格式不同。虽然都是.dmp后缀,但exp生成的DMP文件格式只可通过imp进行导入,而expdp生成的DMP文件格式也只可通过impdp进行导入 。

                     总的来说,expdp相对于exp提供了更高级的功能和性能,尤其在大型数据库中进行导出操作时,更为推荐使用。它提供了更多的灵活性和性能优势,可以更精细地控制导出的内容和过程,但假如使用的数据库版本为10g之前的版本,则只能使用exp。

              2.2、exp导出操作

              要使用exp工具导出dmp文件,可以按照以下步骤进行操作:

                  1) 使用 oracle 用户登录服务器,打开命令行终端或命令提示符窗口。

                  2) 输入以下命令,以连接到Oracle数据库实例:

              	sqlplus 用户名/密码@数据库实例
              

                  3) 输入以下命令,以创建一个目录对象,用于存储导出的dmp文件:

              	 CREATE DIRECTORY 目录名称 AS '目录路径';
              

                         当然也可以通过下面这条语句,查询现有的目录路径:

                 	 SELECT * FROM ALL_DIRECTORIES;
              

                  4) 输入以下命令,以确保您具有导出数据的适当权限:

                 	 GRANT EXP_FULL_DATABASE TO 用户名;
              

                  5) 输入以下命令,以使用exp工具执行导出操作:

                 	 exp 用户名/密码@数据库实例 FILE=导出文件的文件名.dmp DIRECTORY=目录名称
              

                  6) 当使用exp工具进行导出操作时,可以使用以下一些常用的参数来控制导出的方式和内容:

              参数使用说明
              USER指定要导出的用户名。
              TABLES指定要导出的表格。例如,TABLES=table1,table2。
              FILE指定导出文件的路径和名称。例如,FILE=/path/to/export.dmp。
              LOG指定导出过程的日志文件路径和名称。例如,LOG=/path/to/export.log。
              QUERY指定要导出数据的查询条件。例如,QUERY=“WHERE column_name=‘value’”。
              ROWS指定要导出的行数限制。例如,ROWS=100。
              STATISTICS指定是否导出统计信息。可以是ALL、ESTIMATE或NONE。
              GRANTS指定是否导出对象的授权信息。可以是Y、N或FULL。
              CONSISTENT指定是否导出一致性视图。可以是Y或N。
              INDEXES指定是否导出索引。可以是Y或N。
              COMPRESS指定是否压缩导出文件。可以是Y或N。

                         这些只是一些常用的参数示例,exp工具还支持其他更多的参数和选项,例如是否导出触发器、外键约束、序列等。可以使用exp help=y命令来查看完整的参数列表和详细的帮助信息。

              2.3、expdp导出操作

              以下是使用expdp工具来导出dmp文件的一般步骤:

                  1) 使用 oracle 用户登录服务器,打开命令行终端或命令提示符窗口。

                  2) 输入以下命令,以连接到Oracle数据库实例:

                   sqlplus 用户名/密码@数据库实例
              

                  3) 输入以下命令,创建一个目录对象用于存储导出的dmp文件:

                 	 CREATE DIRECTORY 目录名称 AS '目录路径';
              

                         当然也可以通过下面这条语句,查询现有的目录路径:

                 	 SELECT * FROM ALL_DIRECTORIES;
              

                  4) 输入以下命令,以确保您具有执行导出操作的适当权限:

                 	 GRANT EXPORT_FULL_DATABASE TO 用户名;
              

                  5) 输入以下命令,使用expdp工具执行导出操作(此是导出全库,请根据自己的使用场景搭配不同的参数):

                 	 expdp 用户名/密码@数据库实例 DIRECTORY=目录名称 DUMPFILE=导出文件名.dmp FULL=Y
              

                  6) 使用expdp工具执行数据泵导出操作时,可以根据需要指定不同的参数来控制导出的方式和内容。以下是一些常用的expdp参数:

              参数使用说明
              SCHEMAS指定要导出的模式名。例如,SCHEMAS=schema1,schema2。
              INCLUDE指定要包括的对象类型。例如,INCLUDE=TABLE,VIEW将只导出表和视图。
              EXCLUDE指定要排除的对象类型。例如,EXCLUDE=INDEX将排除索引的导出。
              DIRECTORY指定导出文件的目录对象。例如,DIRECTORY=datapump_dir。
              DUMPFILE指定导出文件的名称。例如,DUMPFILE=export.dmp。
              LOGFILE指定导出操作的日志文件名称。例如,LOGFILE=export.log。
              PARALLEL指定并行导出的进程数。
              COMPRESSION指定导出文件是否压缩。可以是ALL、DATA_ONLY、METADATA_ONLY或NONE。
              CONTENT指定导出内容。可以是ALL、DATA_ONLY、METADATA_ONLY或METADATA_ONLY_EXCLUDING_DATA。
              QUERY指定导出的数据查询条件。例如,QUERY=“WHERE column_name=‘value’”。
              FILESIZE指定导出文件的最大文件大小。
              JOB_NAME指定导出作业的名称。
              VERSION给定系统版本号的对象。例如,VERSION=SCN,SCN为版本号。

                         这些只是一些常用的参数示例,expdp工具还支持其他更多的参数和选项,例如导出模式的映射、导出过程的过滤、导出数据的转换等。可以使用expdp help=y命令来查看完整的参数列表和详细的帮助信息。

              2.4、PL/SQL使用客户端导出

              2.4.1 特殊说明

                     需要在本地下载Oracle完整版,只下载客户端可能没有exp.exe文件,且需要指出的是,使用 PL/SQL直接导出,相当于在服务端使用 exp 导出。

                     笔者在使用plsql进行导出时,还出现了 PL/SQL 比 Oracle 版本过高,导致Dos框一闪而过,且并没有生成导出文件,降低 PL/SQL 版本后成功解决,但查询一番并未有 PL/SQL 和 Oracle 版本需要一致的官方说明。

              2.4.2 操作指引

                     这里直接引用一篇博主的文章,该文章中有截图有步骤:https://blog.csdn.net/qq_36292543/article/details/105193485。由于文章中是汉化版的,加一个英文版界面截图:

              Oracle导入dmp文件

              3、导入dmp文件

              3.1、imp和impdp区别

                     imp(Import)和impdp(Data Pump Import)都是Oracle数据库中用于导入dmp文件的工具,它们具有以下区别:

              功能imp是Oracle传统的导入工具,而impdp是更为强大和灵活的数据泵导入工具。impdp提供了比imp更多的选项和功能,可以更精确地控制导入过程。
              导入方式imp使用单进程导入数据,而impdp使用多进程并行导入数据。因此,impdp通常比imp更快,特别是对于大型数据集导入。
              平台和版本支持imp是基于Oracle旧的导入工具,对于较新的Oracle版本和平台可能支持有限。而impdp是Oracle Data Pump的一部分,对于大多数Oracle版本和平台都有良好的支持。
              导入对象类型imp和impdp都可以导入数据库对象,如表、索引、视图等。然而,impdp还支持导入其他数据对象类型,如数据泵导出的导入导出任务、PL/SQL程序包、触发器等。
              导入选项imp和impdp具有不同的导入选项和参数。例如,impdp可以通过INCLUDE和EXCLUDE参数来选择性地导入特定的对象,以及通过TRANSFORM参数来修改导入对象的属性。

                     总的来说,如果使用的是较新的 Oracle 版本,并且希望更高效、更灵活地控制导入过程,那么 impdp 是更推荐的导入工具。但是,如果正在使用较旧的 Oracle 版本或需要进行简单的导入操作,那么只能使用 imp。

              3.2、imp导入操作

              要使用imp工具进行导入操作,可以按照以下步骤进行:

                  1) 打开命令行终端或命令提示符窗口。

                  2) 输入以下命令,以连接到您的Oracle数据库实例:

                	 sqlplus 用户名/密码@数据库实例
              

                  3) 输入以下命令,创建一个目录对象用于存储导入的dmp文件:

                	 CREATE DIRECTORY 目录名称 AS '目录路径';
              

                         当然也可以通过下面这条语句,查询现有的目录路径:

                   SELECT * FROM ALL_DIRECTORIES;
              

                  4) 输入以下命令,以确保您具有执行导入操作的适当权限:

                   GRANT IMPORT_FULL_DATABASE TO 用户名;
              

                  5) 输入以下命令,使用imp工具执行导入操作:

                   imp 用户名/密码@数据库实例 FILE=导入文件的路径.dmp FROMUSER=源用户名 TOUSER=目标用户名
              

                  6) 在使用 imp 工具进行数据导入时,可以根据需要指定不同的参数来控制导入的方式和内容。以下是一些常用的 imp 参数:

              参数使用说明
              USER指定要导入数据的用户名。
              FILE指定要导入的文件路径和名称。例如,FILE=/path/to/import.dmp。
              FROMUSER指定导入数据来自的用户名。
              IGNORE指定是否忽略导入过程中遇到的错误。可以是Y或N。
              INDEXES指定是否导入索引。可以是Y或N。
              ROWS指定导入的行数限制。例如,ROWS=100。
              DATA_ONLY指定只导入数据,不包括对象定义。可以是Y或N。
              IGNORECASE指定导入时是否忽略大小写。可以是Y或N。
              FULL指定导入前先删除现有对象。可以是Y或N。
              LOG指定导入操作的日志文件路径和名称。例如,LOG=/path/to/import.log。
              BUFFER指定读取导入文件时的缓冲区大小。
              REMAP_SCHEMA指定要将导入的对象映射到的新模式名。
              REMAP_TABLESPACE指定要将导入的表空间映射到的新表空间名。

                         这些只是一些常用的参数示例,imp工具还支持其他更多的参数和选项,例如导入特定表、导入具有特定条件的数据、使用不同的字符集等。可以使用imp help=y命令来查看完整的参数列表和详细的帮助信息。

              3.3、impdp导入操作

              要使用impdp工具进行导入操作,可以按照以下步骤进行:

                  1) 打开命令行终端或命令提示符窗口。

                  2) 输入以下命令,以连接到您的Oracle数据库实例:

                	 sqlplus 用户名/密码@数据库实例
              

                  3) 输入以下命令,创建一个目录对象用于导入的dmp文件:

                 	 CREATE DIRECTORY 目录名称 AS '目录路径';
              

                         当然也可以通过下面这条语句,查询现有的目录路径:

                   SELECT * FROM ALL_DIRECTORIES;
              

                  4) 输入以下命令,以确保您具有执行导入操作的适当权限:

                	 GRANT IMPORT_FULL_DATABASE TO 用户名;
              

                  5) 输入以下命令,使用impdp工具执行导入操作:

                   impdp 用户名/密码@数据库实例 DIRECTORY=目录名称 DUMPFILE=导入文件的名称.dmp REMAP_SCHEMA=源用户名:目标用户名
              

                  6) impdp 工具提供了许多参数,用于控制导入过程中的行为和选项。以下是一些常用的 impdp 参数:

              参数使用说明
              ATTACH指定是否附加到正在运行的 impdp 作业。
              DIRECTORY指定导入和导出文件所在的目录对象。
              DUMPFILE指定要导入的数据泵文件名。
              REMAP_DATAFILE指定要将源数据文件映射到的目标数据文件。
              REMAP_SCHEMA指定要将源模式映射到的目标模式。
              REMAP_TABLESPACE指定要将源表空间映射到的目标表空间。
              TABLE_EXISTS_ACTION对于已存在的表,指定要采取的操作(SKIP、APPEND、TRUNCATE、REPLACE)。
              TRANSFORM指定要应用的数据转换选项。
              CONTENT指定要导入的对象类型(ALL、DATA_ONLY、METADATA_ONLY)。
              PARALLEL指定并行执行导入作业的程度。
              LOGFILE指定导入操作的日志文件名。
              INCLUDE/EXCLUDE指定要导入或排除的对象。
              QUERY指定导入时使用的查询条件。

                         这些只是一些常用的参数示例,impdp 工具还支持其他更多的参数和选项,例如处理数据冲突、启用并行导入、使用网络传输压缩等。可以使用 impdp help=y 命令来获取完整的参数列表和详细的帮助信息。

              3.4、PL/SQL使用客户端导入

              3.4.1 特殊说明

                     需要在本地下载Oracle完整版,只下载客户端可能没有exp.exe文件(笔者在使用plsql进行导出时,出现了 PL/SQL 和 Oracle 版本号不一样,导致频频失败,但查询一番并未有 PL/SQL 和 Oracle 版本需要一致的官方说明)

              3.4.2 操作指引

                     这里直接引用一篇博主的文章,该文章中有截图有步骤:https://blog.csdn.net/qq_36292543/article/details/105193485。由于文章中是汉化版的,加一个英文版界面截图:

              Oracle导入dmp文件

              二、 具体示例

                     此示例中只是使用 impdp 导入的示例,也是笔者操作过的一个例子,imp 导入大体相当,至于导出,笔者只使用过用PL/SQL导出,因其简单,不再赘述,后续也有可能会再补充不同场景的导入导出操作。

              impdp导入dmp文件

                  1) 假设你不是数据库维护人员,你的领导直接给了你一份.dmp文件,让你导入到数据库中,你对从那个库中导出的,怎么导出的一无所知,这时候第一步,你最少要询问一下这是使用 exp 还是 expdp 导出的(示例是假设使用的expdp导出的数据),还有就是索要导出日志。导出日志中会显示导出的实例名、表名和数据行数;

                  2) 在 PL/SQL 中执行 SELECT * FROM ALL_DIRECTORIES;查询已登记的目录,并通过XFTP或者其他工具将 .dmp 文件上传到其中某一个目录,记下来上传目录对应的目录名称;

              Oracle导入dmp文件

                  3) 使用 xshell 等工具连接要导入的数据库所在的服务器,使用 oracle 用户登录(或者登录root用户后,使用命令su - oracle切换到oracle也一样);

                  4) 假如你使用 PL/SQL 连接数据库时所填的信息和导出 .dmp 的文件是这样的:

              Oracle导入dmp文件

              Oracle导入dmp文件

                  5) 你可以参考如下这条命令修改自己的命令语句:

                   impdp 1111/2222@orcl remap_schema=MTM:1111 directory=DATA_PUMP_DIR  dumpfile=DMP_FILE.dmp logfile=implog.log transform=segment_attributes:n
              

                         即:

                   impdp username/password@数据库实例名 remap_schema=导入文件中的用户名:导入数据库中的用户名 directory=dmp文件所在目录  dumpfile=导入文件.dmp logfile=implog.log transform=segment_attributes:n
              
VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]