原始的普通导出导入工具,是一个客户端工具。使用导出工具(export utility简称exp)是将数据从oracle数据库以二进制形式写入操作系统文件,这个文件存储在数据库之外,并且可以被另一个数据库使用导入工具(import utility简称imp)读入。
注意:从oracle11g开始,不再支持oracle导出导入的使用(不再支持,但11g还可以使用这个功能)。唯一支持的是使用导出导入将XMLType数据向后迁移至10g或者更早版本。
参照
https://docs.oracle.com/cd/E11882_01/server.112/e22490/original_export.htm#BABBHCIE
https://docs.oracle.com/cd/E11882_01/server.112/e22490/original_import.htm#i1023560
exp
exp导出工具提供了一种在oracle数据库之间传输数据对象的简单方式,即使这些数据库是位于不同硬件和软件配置的平台上。
当在oracle数据库使用exp时,对象会被抽取,与被抽取对象相关的任何对象也会被抽取。
一个导出文件,是一个oracle二进制格式的文件,会被存储在硬盘或者磁带。这个文件可以被使用FTP传输或者物理传输到不同的站点,可以作为普通备份的补充。
exp文件只能被oracle imp工具读取,imp工具的版本不能早于exp工具的版本。
也可以在不做imp的情况下显示exp文件的内容,要做这个,需要使用imp show parameter。要从ASCII固定格式或者分隔符文件加载数据,要使用SQL*Loader utility。
前置要求
要使用exp,需确保如下三点
- 若是手动创建的数据库,确保已经运行了catexp.sql或者catalog.sql脚本。若是使用dbca创建的,则不必运行。
- 确保有足够多的磁盘空间
- 确保有必要的访问权限。
参数说明
本部分是对于exp命令参数的描述
buffer 默认值取决于操作系统,按照字节指定用于获取rows的缓存大小。
compress 默认值y
file 默认是expdat.dmp,指定导出文件的名称,默认的扩展名是.dmp,也可以指定任何扩展名。exp支持导出多个exp文件,你可以指定多个文件名称使用。
当导出文件达到指定的filesize大小后,exp会停止想当前文件写入,打开另一个file参数中指定名称的exp文件,导出继续直至完成或者再次达到filesize大小。
full 默认值n,full=y是导出整个数据库,此时需要exp_full_database角色。
log 默认值none,指定一个文件名,接收导出时的信息和错误消息。
owner 默认值none,说明导出是按照用户模式导出,把要导出的用户列表放在后面
query 默认值none,表模式导出时,用于筛选表的子集进行导出。
tables 默认值none,表模式导出时,在该参数后罗列需要导出的若干表。
实例演示
完整库模式
EXP 用户名/密码@网络服务名 FULL=Y FILE=路径/文件名.dmp LOG=路径/文件名.log
--如:
exp test2/test2@orcltns file=test240807.dmp log=test240807.log full=y buffer=64000
exp test2/test2@orcltns file=test240808.dmp log=test240808.log
备注:file后的文件忘了加扩展名.dmp,不影响导出导入
要使用@orcltns网络服务名,需要创建tns服务名,并重启监听,详见其后的截图
用户模式
-- 按用户导出,不指定owners参数时,默认是用户名/密码中的那个用户的所有对象
EXP 用户名/密码@网络服务名 OWNERS=user1,user2,… FILE=路径/文件名.dmp LOG=路径/文件名.log
exp test2/test2@orcltns owner=test2,test3 file=test240809.dmp log=test240809.log
exp test2/test2@orcltns file=test240809.dmp log=test240809.log
表模式
--1.指定表导出
EXP 用户名/密码@网络服务名 TABLES=table1,table2,… FILE=路径/文件名.dmp LOG=路径/文件名.log
exp test2/test2@orcltns tables=t_od_bd_material,t_od_bd_stordoc file=test240809.dmp log=test240809.log
--2.导出时不导出表的数据,对比上图,并没有显示导出了多少行数据
EXP 用户名/密码@网络服务名 TABLES=table1,table2,… ROWS=N FILE=路径/文件名.dmp LOG=路径/文件名.log
exp test2/test2@orcltns tables=t_od_bd_material,t_od_bd_stordoc rows=n file=test240809.dmp log=test240809.log
--3.导出表时加入对数据的要求
EXP 用户名/密码@网络服务名 TABLES=tableName FILE=路径/文件名.dmp LOG=路径/文件名.log QUERY = \”WHERE 条件一 OR|AND 条件二\”
exp test2/test2@orcltns tables=t_od_bd_material file=test240809.dmp log=test240809.log query=\" where code like \'02\' \"
exp test2/test2@orcltns tables=t_od_bd_material file=test240809.dmp log=test240809.log query=\" where code like \'02%\' \"
imp
前置要求
要使用exp,需确保如下两点
- 若是手动创建的数据库,确保已经运行了catexp.sql或者catalog.sql脚本。若是使用dbca创建的,则不必运行。
- 确保有必要的访问权限。
参数说明
data_only 默认值n,若要从导出文件中只导入数据而不包含元数据,指定data_only=y。
file 默认值expdat.dmp,指定要用于导入的导出文件名。默认扩展名是.dmp。
fromuser 默认值none,若导出文件中含多个schemas,可以使用该参数指定一个或者多个user,用逗号分割,进行导入。
full 默认值y,指定是否导入完整的导出文件。
log 默认值none,指定文件记录导入信息。
touser 默认值none,指定用户名称列表,这些用户的schema是要导入的目标。这些用户名必须在导入操作前就存在,否则会报错。imp_full_database角色要求要使用这个参数。要将一个schema包含的对象导入到另一个schema,要指定touser。
ignore 默认值n 是否忽略导入过程中创建数据库对象时的错误。
实例演示
--1.全库导入
IMP 用户名/密码@网络服务名 FULL=Y FILE=路径/文件名.dmp LOG=路径/文件名.log
imp test2/test2@orcltns full=y file=test240809.dmp log=test2408092.log
--2.按用户导入(同名用户可以不指定用户)
IMP 用户名/密码@网络服务名 FILE=路径/文件名.dmp FROMUSER=导出的用户名 TOUSER=导入的用户名 LOG=路径/文件名.log
exp test3/test3@orcltns file=test240812.dmp log=test240812.log
imp test4/test4@orcltns file=test240812.dmp fromuser=test3 touser=test4 log=test2408122.log
--3.指定表导入
IMP 用户名/密码@网络服务名 TABLES=table1,table2,… FILE=路径/文件名.dmp FROMUSER=导出的用户名 TOUSER=导入的用户名 LOG=路径/文件名.log ignore=y
exp test3/test3@orcltns file=test240812.dmp log=test240812.log
imp test4/test4@orcltns file=test240812.dmp tables=ttable fromuser=test3 touser=test4 log=test2408122.log