Oracle 定时任务(dbms_jobs),exp imp、expdp impdp 数据导入导出

📅 2026/7/23 17:47:01
Oracle 定时任务(dbms_jobs),exp  imp、expdp  impdp 数据导入导出
目录Oracle 定时任务(dbms_jobs)数据备份 与 导入导出exp 与 imp 导入导出数据常见问题oracle 11g exp 空表导出处理expdp 与 impdp 数据泵导入导出高版本导出到低版本存在的问题exclude 与 include 参数详解expdp、impdp 与 exp、imp 的区别不安装Oracle数据库使用sqlplus以及exp(imp)数据库工具Oracle 定时任务(dbms_jobs)1、可以直接在 Oracle 数据库中创建定时任务用于执行存储函数或者存储过程类似 windows 系统的定时任务。2、建好后的定时任务可以在 pl/sql 工具中的左侧 DBMS_Jobs 菜单下看到就如同查看表、视图、存储过程、序列等一样方便显示的是任务ID(jobId)。3、定时任务的查询、创建、禁用、停用、修改、删除 操作演示如下select t.*,ROWID from EMP t; -- 1、创建存储过程用于被定时任务调用(往 emp 插入数据) create or replace procedure auto_insert_emp_job as Begin INSERT INTO C##SCOTT.EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO) VALUES ((select max(EMPNO)1 from EMP), 李四, SALESMAN, 7698, TO_DATE(1983-04-20 00:00:00, YYYY-MM-DD HH24:MI:SS), 1650.00, 350.00, 30); commit; End; -- 2、创建定时器任务调用存储函数或者存储过程 -- 建好后可以在 pl/sql 工具中的左侧 DBMS_Jobs 菜单下看到定时任务(job)显示的是任务ID(jobId) -- 因为任务ID(唯一标识符)是自动生成的所以重复创建会产生重复的任务) declare job_id number; -- job 主键id不用设置值让其自动生成 begin sys.dbms_job.submit(job_id, -- job 主键id不用传会自动生成 auto_insert_emp_job;, -- 需要执行的存储函数或者存储过程名称(结尾的分号不能少) sysdate, -- 任务启动后第一次执行的时间 trunc(sysdate,mi) 1/ (24*60)); --执行间隔时间每1分钟执行一次 commit ; end; -- 3、查询数据库中的所有定时任务根据定时任务执行的存储过程/函数进行查询 -- JOB每个任务的唯一标识符 -- LOG_USER提交作业时登录的用户 -- LAST_DATE、LAST_SEC上次成功执行此作业的日期 -- THIS_DATE、THIS_SEC当前正在运行的作业的开始时间不在运行时为 null. -- NEXT_DATE、NEXT_SEC下一次执行此作业的日期 -- TOTAL_TIME系统在此作业上花费的总挂钟时间以秒为单位 -- BROKEN如果为Y表示作业被标记为 “中断”已停止Oracle 不会再按计划执行该作业 -- failures执行失败的次数 select a.* from dba_jobs a where what in (auto_insert_emp_job;); -- 没有 dba 权限时只能查询当前用户自己的任务 select a.* from USER_JOBS a where WHAT in (auto_insert_emp_job;); -- 4、停止任务1 是任务的唯一标识符true 表示停止, sysdate 表示立即停止 begin dbms_job.broken(1, true, sysdate); commit ; end; -- 5、重新开始被停止了的任务1 是任务的唯一标识符。任务会立刻执行。 begin dbms_job.run(1); commit ; end; -- 6、修改任务下次执行的时间如果任务之前被禁用执行之后会被重新启用. begin dbms_job.next_date(1,to_date(2021-09-04 16:00:00,yyyy-mm-dd hh24:mi:ss)); commit ; end; -- 7、修改任务执行的间隔时间会当任务执行完下一次之后才会生效1 是任务的唯一标识符 begin dbms_job.interval(1,trunc(sysdate,mi) 1/ (24*60)); commit ; end; -- 8、删除定时任务, 1 是任务的唯一标识符 begin dbms_job.remove(1); commit ; end;每分钟执行 trunc(sysdate,mi) 1/(24*60)每天的凌晨1点执行 trunc(sysdate) 1 1/(24)每周一凌晨1点执行 trunc(next_day(sysdate,星期一))1/24每月1日凌晨1点执行 trunc(last_day(sysdate))11/24每季度的第一天凌晨1点执行 trunc(add_months(sysdate,3),Q) 1/24每年7月1日和1月1日凌晨1点 add_months(trunc(sysdate,yyyy),6)1/24每年1月1日凌晨1点执行 add_months(trunc(sysdate,yyyy), 12)1/24-- 系统参数job_queue_process(作业队列进程) 表示 oracle 并发的 job 数量当值为0时表示停止全部job. -- 需要管理员权限的账号才能修改 select * from v$parameter where name job_queue_processes ; -- 修改 job_queue_processes 参数 alter system set job_queue_processes 1000;trunc 函数不熟悉的可以参考trunc 截断数字和日期数据备份 与 导入导出1、Oracle 的备份是 Oracle 操作中常见的工作常见的备份方案有: 逻辑备份IMPEXP命令进行备份)、物理文件备份(脱机及联机备份)、利用 RMAN(Recovery Manager)的增量物理文件系统备份。2、ORACLE 数据库的逻辑备份分为四种模式: 表空间备份tablespace)、表备份(table)、用户备份(user)和完全备份(full)。3、Oracle 的逻辑备份是使用 IMPEXP 命令进行数据导入导出的操作。使用 EXP 命令导出或者使用IMP 命令导入时需要 Create Session 系统权限但是如果要导出其他的表必须拥有权限: EXP_FULL_DATABASE。4、EXP 命令导出的文件是二进制文件*.dmp)只能由对应的 IMP 命令进行读取恢复。exp 与 imp 导入导出数据1、在安装了 Oracle 后在 bin 目录下提供了很多工具其中就有 exp 与 imp. 可以在任意目录下的 cmd 中执行这些命令。exp、imp 命令的完整参数可以通过 -help 进行查看命令描述exp 用户名/密码数据库地址 参数默认表中数据都会一并导出。BUFFER 数据缓冲区大小。以字节为单位一般在64000 以上。COMPRESS是否压缩导出(默认Y) 。rowsn|y如果只想导出表结构不需要导出数据则命令结尾加上 rowsn 参数默认为 yfile指定输出文件的路径和文件名称(以 .dmp 为后缀名)路径必须完整且存在文件会自动生成。log指定日志文件不需要记录日志时可以省略不写。GRANTS是否导出权限 (默认Y)INDEXES是否导出索引 (默认Y)CONSTRAINTS是否导出的约束条件 (Y)TRIGGERS是否导出触发器 (Y)PARFILE可以把各种参数配置为一个文本键值形式的文件该参数可以指定参数文件的位置。TABLES导出指定的表名列表导出多个表可以使用逗号隔开。TABLESPACES 导出指定表空间的数据OWNER导出指定用户的数据FULL导出数据库的所有数据(默认N)statisticsnone 导出时不生成表的统计信息如表行数、数据分布等buffer设置导出时“数组提取”的缓冲区大小单位字节比如 1048576010MBrecordlength设置写入导出文件.dmp时的I/O缓冲块大小比如 6553564kbimp 用户名/密码数据库地址 参数默认会导入 .dmp 文件中的表结构和数据。其他大部分参数与上面 exp 命名一致。file指定需要导入的 .dmp 文件路径。log记录导入的日志文件不指定时不会记录只会输出到屏幕上。data_onlyy|n如果只想导入数据而不导入表结构则加上 参数默认为 n;FROMUSER: 指定导出时 .dmp 文件中记载的用户信息。TOUSER指定 .dmp 文件要导入到什么目标用户中。IGNORE在恢复数据的过程中当恢复的某个表已经存在就要根据 ignore 参数的设置来决定如何操作。若 ignorey 则不执行 CREATE TABLE 语句直接将数据插入到表中如果插入的记录违背了约束条件比如主键约束则出错的记录不会插入但合法的记录会添加到表中。若 ignoren 则不执行 CREATE TABLE语句同时也不会将数据插入到表中而是忽略该表的错误继续恢复下一个表。COMMIT默认N, 在缓冲区满时是否需要 commit, 如果设为 N, 需要较大的回滚段 。--导出数据库 -- cmd 中执行如下命令hnbs 为目标 Oracle 数据库中的账号1 是密码...240/1521 是目标数据库 ip 与端口file 后面跟保存的 .dmp 文件路径 -- log 用于指定日志文件不需要记录日志时可以省略不写 exp hnbs/1192.168.2.240:1521/orcl filed:/hnbs.dmp logd:/hnbs.log --在新数据库中创建同名的用户。在 plsql 等工具中执行命令。如果导出的数据库有表空间则新数据库中的用户也建议设置同名的表空间表空间需要提前创建。 --如果导出的数据库没有设置表空间则这里也可以省略 select * from dba_tablespaces; -- 查询数据库所有表空间 create user hnbs identified by 1 default tablespace grp --为用户授予权限 grant dba to hnbs; --在 cmd 中执行命令将导出的数据库文件导入到新数据库中,不需要记录日志时可以省略 log 不写 imp hnbs/1192.168.2.240:1521/orcl filed:/hnbs.dmp logd:/hnbs.log --拓展如果不想和导出的数据库使用一样的用户名称则也可以创建不同的用户名使用 fromuser 指定导出的数据库用户名称touser 指定导入数据库用户名称 imp hnbs_3/1192.168.2.240:1521/orcl fileC:\Users\Lenovo\Desktop\20190909yselement.dmp fromuserhnbs touserhnbs_32、除了导出、导入整个数据库也可以单独导出、导入某张表-- 只导出表结构不要数据 exp kf_bmys/a172.16.21.171:1521/orcl filed:/kf_bmys.dmp logd:/kf_bmys.log rowsn BUFFER10485760 STATISTICSNONE RECORDLENGTH65535 -- statisticsnone [推荐关闭]导出时不生成表的统计信息如表行数、数据分布等 ---- 源库和目标库的数据量、硬件配置几乎完全不同如果带着源库的统计信息导入目标库Oracle优化器会基于错误的数据量去生成执行计划极大概率导致导入后SQL跑得比原来慢很多 ---- 在未收集统计信息的这段时间里数据库的性能处于“高风险期”意味着目标库的表中 NUM_ROWS行数等关键信息是空值。Oracle 优化器CBO在遇到统计信息缺失时会采用动态采样或硬编码的默认值比如默认认为一个表只有 8KB 大小约 100 行数据。 ---- 正确的做法是导出时屏蔽统计信息导入完成后在目标库重新手动收集统计信息(比如使用命令窗口exec dbms_stats.gather_schema_stats(KF_BMYS);) ---- Oracle也会自动任务定期(比如凌晨)自动运行并收集统计信息但是会有一定的延迟。 -- buffer10485760 [推荐设置]设置导出时“数组提取”的缓冲区大小单位字节这里设为10MB ---- exp默认的BUFFER非常小通常只有几百KB。如果不加导出大表时Oracle需要频繁地在客户端和服务器之间进行“小包”交互IO开销极大导出速度可能慢上好几倍。 ---- 10MB是一个经过验证的黄金数值够大且不会导致客户端内存溢出能显著减少网络往返次数大幅提速。 ---- 注意事项该值越大越好但受限于客户端机器的可用内存。如果导出报错ORA-01026内存不足请将该值减半如5242880 -- recordlength65535 [推荐设置]设置写入导出文件.dmp时的I/O缓冲块大小这里设为64KB --- 默认值1024字节太小导致写磁盘操作过于频繁。将它调大至64KB能有效减少磁盘写入次数充分利用磁盘带宽。--导出数据库下的指定表 --导出本机127.0.0.1用户 ptframe_1 下的 gap_sys_uidetail 表到 c:/wmx/gap_sys_uidetail.dmp exp ptframe_1/1127.0.0.1:1521/orcl filec:/wmx/gap_sys_uidetail.dmp tables(gap_sys_uidetail,bas_agency_info) --导入数据下的指定表 --导入 c:/wmx/gap_sys_uidetail.dmp 表脚本到 192.168.2.240 机器用户 ptframe_1 下。 --注意默认情况下 240 上 ptframe_1 用户事先不能有表名 gap_sys_uidetail 等存在否则导入失败 --可以指定data_onlyy只导入数据而不进行建表. --tables 指定的表名必须和.dmp文件中的一致不能随便写逗号分割,Linux 中括号需要转义如 tables\(gap_sys_uidetail,bas_agency_info\) imp ptframe_1/1192.168.2.240:1521/orcl filec:/wmx/gap_sys_uidetail.dmp tables(gap_sys_uidetail,bas_agency_info)3、对于 Linux 系统必须先使用 su - oracle 切换到 oralce 用户然后再使用 exp 、imp 命令。[rootlocalhost ~]# su - oracle 上一次登录四 10月 21 17:07:26 CST 2021pts/1 上 [oraclelocalhost ~]$ exp hn_yszx0312/110.104.65.180:1521/orcl file/home/oracle/hn_yszx0312.dmp log/home/oracle/hn_yszx0312.log ....... . exporting dimensions . exporting post-schema procedural objects and actions . exporting statistics Export terminated successfully without warnings. [oraclelocalhost ~]$ ll -rw-r--r--. 1 oracle oinstall 2935046144 10月 21 17:13 hn_yszx0312.dmp -rw-r--r--. 1 oracle oinstall 59088 10月 21 17:13 hn_yszx0312.log [oraclelocalhost ~]$IMP-00010: 不是有效的导出文件, 标头验证失败解决办法常见问题问题描述数据库对象已经 存在一般情况, 导入数据前应该彻底删除目标数据下的表、序列、函数、过程、触发器等。数据库对象已经存在, 按缺省的 imp 参数 则会导入失败。如果用了参数 ignorey 会把 exp 文件内的数据内容导入。如果表有唯一关键字的约束条件不合条件将不被导入。如果表没有唯一关键字的约束条件将引起记录重复。数据库对象有主外键约束不符合主外键约束时数据会导入失败 。解决办法: 先导入主表 再导入依存表 。disable 目标导入对象的主外键约束导入数据后 再 enable 它们。权限不够如果要把 A 用 户的数据导入 B 用户下 A 用户需要有 imp_full_database 权限 。导入大表 ( 大于 80M ) 时 存储分配失败默认的 EXP 时 compress Y 也就是把所有的数据压缩在一个数据块上。导入时如果不存在连续一个大数据块 则会导入失败。导出80M 以上的大表时 记得 compress N 则不会引起这种错误 。Imp 和 Exp 使用的字符集不同如果字符集不同导入会失败可以改变 unix 环境变量或者 NT 注册表里 NLS_LANG 相关信息。Imp 和 Exp 版本不能往上兼容Imp 可以成功 导入低版本 E xp 生成的文件 , 不能导入高版本 E xp 生成的文件根据情况我oracle 11g exp 空表导出处理1、oralce 11g 中增加了一个新特性 deferred_segment_creation-段延迟创建分片默认是 true 延迟分片。2、deferred_segment_creationtrue 时如果 create 了一个 table并且没有 insert 数据那么这个表不会立即分配 extend也就不占数据空间即表不分配 segment 以节省空间所以这些表不能 exp 导出来。3、系统表 user_tables 中的 segment_treated 字段如果为NO表示此表未分配 segmentexp 无法导出否则为 true 表示此表已经分配了 segment exp 可以导出.select * from user_tables where segment_createdNO ;-- 查询当前登陆用户下所有未分片、exp 无法导出的空表4、解决办法一对空表主动分片segmentselect alter table ||table_name || allocate extent; from user_tables where segment_createdNO;运行后生成每张空表的分片 SQL 语句将其生成的所有 sql 代码复制出来然后全部执行就可以给每一张已经存在的表来分配 segment然后就可以利用 exp 导出了。5、解决办法二设置系统参数让后续 create 的新表自动分配 segment--查询系统参数 deferred_segment_creationTRUE 表示延迟分片FALSE 表示 create 时都分配 segment. show parameter deferred_segment_creation; alter system set deferred_segment_creationfalse; --修改参数值为 FALSE默认自动分片 show parameter deferred_segment_creation; -- 再次查询确认参数是否修改成功expdp 与 impdp 数据泵导入导出创建数据泵目录1、数据泵目录用于存放 *.dmp 文件expdp 导出成功之后*.dmp 文件默认就会放到它下面同理导入的时候也需要先将 *.dmp 文件放入到它下面。2、数据泵目录不需要重复创建存在之后直接将 *.dmp 文件放到对应的目录下然后操作即可。3、以下命令在 sqlplus 或者 PL/SQL Developer 等客户端工具执行即可。其中 directory 是关键字与表空间有点类似都有名称和路径。-- 查询 expdp/impdp 数据泵目录信息(含名称、路径) select * from dba_directories; -- 创建数据泵目录(DATA_PUMP_DIR_ME 表示定义的目录名称后面的表示目录路径必须事先创建好全部自定义即可如/u01/app/oracle) -- DATA_PUMP_DIR_ME表示自定义的目录名称 create or replace directory DATA_PUMP_DIR_ME as E:\wmx\dpdump; -- 将数据泵目录的读写权限授权给指定的用户(cs_element)可以是多个用户用逗号隔开,如 a,b,c grant read,write on directory DATA_PUMP_DIR_ME to cs_element;4、目录路径必须是已经存在的目录如果不存在虽然显示创建成功但是导入导出时会报错。expdp 导出库1、如果是 linux 系统则必须先切换到 oracle 用户后再执行命令如下所示是 CentOS 7.2 上的 Oracle 19c 导出。[rootlocalhost ~]# su - oracle 上一次登录四 10月 21 17:07:26 CST 2021pts/1 上 [oraclelocalhost ~]$ expdp cs_element/110.104.65.181:1521/orcl directoryDATA_PUMP_DIR dumpfilecs_element.dmp logfilecs_element.log schemascs_element EXCLUDETABLE:\ in \(\BAS_CALC_INFO_INSERT_SP\,\BAS_CALC_COLS\\)\ version11.2.0.1.0cs_element/1导出的用户名和密码directory指定的数据泵名称dumpfile指定导出的数据库文件名称(文件会放到数据泵名称对应的路径下)logfile日志文件名称(文件会放到数据泵名称对应的路径下)schemas指定导入导出的用户名称可以是多个用逗号隔开exclude排除某些表不导出(需要进行转义不需要排除时可以省略)version指定导出文件的版本(比如导出库是19c导入库是11g不需要指定时可以省略)compressionall表示对数据进行压缩select * from product_component_version ; -- 查看数据库版本impdp 导入库1、如下所示是本机 win10 系统 Oracle 11g 导入语法与 expdp 是对应的。-- 新建表空间存在时忽略datafile 路径自定义即可 create tablespace grp datafile E:\wmx\oracle_tablesapce\grp.dbf size 500M autoextend on next 50M; -- 创建用户并授权 create user cs_element identified by 1 default tablespace grp; grant dba to cs_element; -- 导入数据库 -- 先将准备好的 *.dmp 文件放到数据泵目录下比如上面的 E:\wmx\dpdump -- 然后 cmd 命令行中执行如下命令 -- 如果提示 ORA-28040: 没有匹配的验证协议 则不用理会继续输入 用户名和口令 回车即可正常导入 -- schemas导出时使用的用户名称用于导出用户与导入用户名称一致的情况;否则使用REMAP_SCHEMA; -- table_exists_actionreplace 表示表存在时则替换否则默认插不进去;skip表示跳过; E:\wmx\dpdump impdp cs_element/1localhost:1521/orcl directoryDATA_PUMP_DIR_ME dumpfilecs_element.dmp logfilecs_element.log schemascs_element table_exists_actionreplace2、如下所示是本地开发环境局域网内的 win10 系统 Oracle 19C 导入数据因为别人导出库时使用filesize限制了单个文件的大小所以一个库通常会导出多个文件此时导入时也需要一起导入不能分开否则失败impdp GSU_ELEMENT_1112/1localhost:1521/orcl directoryORACLE_BASE dumpfileGSU_ELEMENT_01_20241111.dmp,GSU_ELEMENT_02_20241111.dmp,GSU_ELEMENT_03_20241111.dmp,GSU_ELEMENT_04_20241111.dmp logfileGSU_ELEMENT.log REMAP_SCHEMAGSU_ELEMENT:GSU_ELEMENT_1112 table_exists_actionreplace parallel4impdp - 安装Oracle后内置的命令(在bin目录下,可以查看环境变量)可以直接在cmd命令行中执行后面紧跟着的是待导入数据库的用户名/密码IP:端口/实例名directory - 数据泵目录名称dumpfile - 数据泵目录下的数据文件,当导出时使用了filesize限制单个文件大小而将数据导出到多个文件时导入时则需要按顺序同时指定全部文件逗号隔开;logfile - 记录日志信息remap_schemafrom_user_name:to_user_name - 当导入时数据的用户与导出时数据库的用户不一致时需要进行指定否则导入失败;table_exists_actionreplace|skip - replace表示表存在时则替换;skip表示存在时跳过;否则默认插不进去;parallel4 表示4个进程并行执行提升导出/导入速度建议和文件个数一致也可以省略;高版本导出到低版本存在的问题1、高版本导出时虽然可以通过 version 指定低版本的版本号导出时会自动转换但是 Oracle 12c 以前的表名、列名是不允许超过 30 个字符的所以如果高版本上面的某个表名、列名视图名以及对应的列或者索引名称等等只要超过 30 个字符串则导出会失败。2、如下所示为从 19C 导出时指定 11g 版本号的失败情况。ORA-39373: cannot export TABLE:CS_ELEMENT.GFM_TB_CHANGE_ELEMENT_DATA_CACHE to version 11.2.0.1.0 due to long identifiers ORA-39373: cannot export VIEW:CS_ELEMENT.REPORT_V_BUDGET_MESSAGE_431081000 to version 11.2.0.1.0 due to long identifiers ORA-39373: cannot export INDEX:CS_ELEMENT.IDX_BAS_CALC_INFO_INSERT_SP_MULTI_1 to version 11.2.0.1.0 due to long identifiers ORA-39373: cannot export CONSTRAINT:CS_ELEMENT.UK_AGENCY_CODE_MOF_DIV_CODE_IS_DELETED to version 11.2.0.1.0 due to long identifiersexclude 与 include 参数详解1、exclude(排除)、include(包含) 参数能够对特定的对象或对象类型进行过滤比如导出/不导出特定的表、视图以及存储过程、索引、约束、授权统计信息等等。EXCLUDE[object_type]:[name_clause],[object_type]:[name_clause]排出特定对象INCLUDE[object_type]:[name_clause],[object_type]:[name_clause]包含特定对象1、object_type用于指定对象的类型如 table,sequence,view,procedure,function,package 等等。2、name_clause过滤子句由SQL操作符以及对象名(可使用通配符)来过滤指定对象类型中的特定对象。3、当未指定 name_clause 时则对该object_type类型的对象全部进行过滤。4、多个 [object_type]:[name_clause] 中间以逗号分割。2、 常用的过滤 SQL 表达式演示注意Oracle的对象名称都是大写的。-- 所有序列不导出emp、dept 表不导出其它全部导出 expdp ...... SCHEMASscott EXCLUDESEQUENCE,TABLE:IN (EMP,DEPT) -- 导出所有函数、存储过程以及 emp 表其它全部不导出 impdp ...... SCHEMASscott INCLUDEFUNCTION,PROCEDURE,TABLE:EMPEXCLUDESEQUENCE,VIEW过滤所有的 序列视图EXCLUDETABLE:IN(EMP,DEPT)过滤 EMP,DEPT 表EXCLUDESEQUENCE,VIEW,TABLE:IN(EMP,DEPT)过滤所有序列、视图、以及 EMP,DEPT 表EXCLUDEINDEX:INDEX_NAME过滤索引对象 INDEX_NAMEINCLUDEPROCEDURE:LIKEPROC_B%包含以 PROC_B 开头的所有存储过程INCLUDETABLE:!EMP 包含不等于 emp 表的其它全部内容其它常用操作符 NOT IN, NOT LIKE, , ! 等等都可以使用3、命令行下如果执行报错则需要对 单引号、双引号、括号进行转义如Windows 下INCLUDETABLE:\IN (EMP, DEPT)\ Linux 下EXCLUDETABLE:\ in \(\BAS_CALC_INFO_INSERT_SP\,\BAS_CALC_COLS\\)\expdp、impdp 与 exp、imp 的区别exp、impexpdp、impdpOracle 10g 之前和之后都有Oracle 10g 及以后版本才有属于客户端工具程序既可以在可以客户端使用也可以在服务端使用属于服务端工具程序只能在 Oracle 服务端使用客户端只是用来连接服务器启动导入导出操作导出文件只存储在服务端。IMP 只适用于 EXP 导出的文件IMPDP 只适用于 EXPDP 导出的文件EXPDP、IMPDP 在备份和恢复时间上要比 EXP、IMP 有优势而且文件也要小的多使用 EXPDP、IMPDP 管理更加灵活支持并行、可中断、可修改元数据文件名字与表空间名、支持元数据导入导出、估算导出数据所需空间、指定导入数据库版本等。更多细节与注意事项可以参考Oracle 数据库 expdp 用法及注意事项 .pdf不安装Oracle数据库使用sqlplus以及exp(imp)数据库工具1、有时候本地可能并没有直接安装Oracle数据库但是也想要使用它的sqlplus以及exp、imp、expdp、impdp 数据库工具。这个时候只需要单独下载它的客户端工具即可。2、比如 PL/SQL Developer使用instantclient连接Oracle数据库https://blog.csdn.net/wangmx1993328/article/details/90575700SELECT * FROM V$VERSION;--检查当前oracle数据库版本比如 Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production3、下载对应的基础包和工具比如上面的19c的来到官网下载对应版本的工具直接下载下面的四个文件。官网下载地址https://www.oracle.com/cn/database/technologies/instant-client/winx64-64-downloads.htmlinstantclient-basic-windows.x64-19.28.0.0.0dbru.zip 基础包运行 OCI、OCCI 和 JDBC:OCI 应用程序所需的所有文件 instantclient-sqlplus-windows.x64-19.28.0.0.0dbru.zip 用于 SQL 和 PL/SQL 查询的 SQL*Plus 命令行工具 instantclient-tools-windows.x64-19.28.0.0.0dbru.zip 包括数据泵(expdp、impdp)、imp、exp、SQL*加载器等工具。 instantclient-sdk-windows.x64-19.28.0.0.0dbru.zip 使用Instant Client开发Oracle应用程序的附加头文件和示例文件。详细文档doc/csdn/md/不安装Oracle数据库使用sqlplus以及exp(imp)数据库工具.md · 汪少棠/material - Gitee.com