菜鸟科技网

Linux Oracle导出命令有哪些?

在Linux环境下使用Oracle数据库进行数据导出时,通常会通过exp(Export)和expdp(Data Pump Export)命令实现,其中expdp是Oracle推荐的高性能工具,支持并行处理和更丰富的功能,以下是详细的使用说明及操作示例。

Linux Oracle导出命令有哪些?-图1
(图片来源网络,侵删)

传统导出命令(exp)

exp命令是Oracle早期提供的导出工具,适用于较小规模的数据导出,语法简单但功能有限,基本语法为:

exp 用户名/密码@数据库连接标识 file=导出文件名.dmp log=日志文件名.log 参数

常用参数包括:

  • full=y:完整导出数据库(需DBA权限)
  • owner=用户名:导出指定用户的所有对象
  • tables=表名1,表名2:导出指定表
  • rows=y/n:是否导出数据(默认为y)
  • indexes=y/n:是否导出索引(默认为y)
  • grants=y/n:是否导出权限(默认为y)

示例1:导出scott用户的所有数据:

exp scott/tiger@orcl file=scott_data.dmp log=scott_exp.log owner=scott

示例2:导出指定表(emp和dept):

Linux Oracle导出命令有哪些?-图2
(图片来源网络,侵删)
exp scott/tiger@orcl file=tables.dmp log=tables_exp.log tables=emp,dept

数据泵导出命令(expdp)

expdp是Oracle 10g后推出的数据泵工具,需通过DBMS_DATAPUMP包实现,性能远高于exp,使用前需确保:

  1. 创建目录对象(需DBA权限):
    CREATE DIRECTORY dump_dir AS '/u01/oracle/dump';
    GRANT READ, WRITE ON DIRECTORY dump_dir TO scott;
  2. 设置环境变量ORACLE_SIDORACLE_HOME

基本语法:

expdp 用户名/密码@数据库连接标识 dumpfile=导出文件名.dmp logfile=日志文件名.log 参数

核心参数说明

参数 说明 示例
full=y 全库导出 expdp system/manager@orcl full=y dumpdb=full.dmp
schemas=用户名 导出指定用户 expdp scott/tiger@orcl schemas=scott dumpfile=scott.dmp
tables=表名 导出指定表 expdp scott/tiger@orcl tables=emp dumpfile=emp.dmp
directory=目录对象 指定导出路径 expdp scott/tiger@orcl directory=dump_dir dumpfile=emp.dmp
parallel=线程数 并行导出线程数 expdp scott/tiger@orcl parallel=4 dumpfile=exp%U.dmp
filesize=大小 单个文件大小(如1G) expdp system/manager@orcl filesize=1G dumpfile=exp%U.dmp
content=data_only 仅导出数据(不含结构) expdp scott/tiger@orcl content=data_only tables=emp
exclude=object_type 排除特定对象类型 expdp scott/tiger@orcl exclude=index dumpfile=exp.dmp

示例1:并行导出scott用户的所有数据,按1GB分割文件:

expdp scott/tiger@orcl schemas=scott directory=dump_dir dumpfile=scott_%U.dmp parallel=4 filesize=1G

示例2:导出表emp并排除索引:

Linux Oracle导出命令有哪些?-图3
(图片来源网络,侵删)
expdp scott/tiger@orcl tables=emp directory=dump_dir dumpfile=emp_no_idx.dmp exclude=index

示例3:按查询条件导出数据(需使用query参数):

expdp scott/tiger@orcl tables=emp directory=dump_dir dumpfile=emp_query.dmp query=\"WHERE deptno=10\"

注意事项

  1. 权限问题expdp需用户有EXP_FULL_DATABASE角色,exp需相应对象的EXP权限。
  2. 路径权限:Linux目录需赋予Oracle用户读写权限(如chmod 777 /u01/oracle/dump)。
  3. 字符集:导出文件字符集需与目标库兼容,可通过expdp ... character-set=AL32UTF8指定。
  4. 网络导出:通过network_link参数可跨库导出,如expdp system/manager@orcl network_link=remote_db ...

FAQs

Q1: 如何处理expdp导出时“ORA-39002: 参数无效”错误?
A: 通常因参数格式错误或目录对象未创建导致,检查步骤:

  1. 确认目录对象存在且授权:SELECT * FROM all_directories WHERE directory_name='DUMP_DIR';
  2. 检查参数拼写(如directory而非dir);
  3. 确保Linux路径路径与目录对象路径一致,且Oracle用户有权限访问。

Q2: expdp导出大表时如何避免因表锁定影响业务?
A: 数据泵默认使用TABLE_EXPORT/TABLE/TABLE_DATA模式,可通过FLASHBACK_SCNFLASHBACK_TIME实现一致性导出:

expdp scott/tiger@orcl tables=large_table directory=dump_dir dumpfile=large.dmp flashback_time="SYSTIMESTAMP-1/24"

该参数会通过SCN快照获取导出时的数据一致性视图,避免锁表,若数据量极大,建议在业务低峰期执行。

分享:
扫描分享到社交APP
上一篇
下一篇