一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

如何用Navicat备份Oracle数据库对象

时间:2026-08-14 20:35:47 编辑:袖梨 来源:一聚教程网

Navicat 本身不生成标准 Oracle .dmp 文件,其“数据泵导出”仅生成 SQL 脚本;真正生成 .dmp 文件必须使用 Oracle 服务端的 expdp 工具,并满足目录、权限和数据库安装三前提。

Navicat 本身不生成标准 Oracle DMP 文件,它做的是对象级导出(SQL 或数据传输),不是 Data Pump 级备份。想得到 .dmp 文件,必须用 expdp 命令,Navicat 只能调用或辅助准备环境。

Navicat 导出 Oracle 表结构和数据为 SQL 文件

这是最常用、最可控的本地备份方式,适合开发/测试环境迁移或结构快照。

  1. 右键目标数据库 → 选择「数据传输」→ 源选远程 Oracle,目标选「文件」→ 类型选「SQL 文件」
  2. 在「选项」画面中:

    – 取消勾选「创建记录」可仅导出 DDL(表、索引、约束等)

    – 勾选「创建记录」则同时导出 INSERT 语句(注意:大数据量时会极慢且文件巨大)

  3. 「数据库对象」画面中可精细筛选:只勾选需要的表、视图、序列,避免导出系统表或日志表
  4. 导出的 SQL 文件默认不含 COMMIT,导入时建议用 Navicat 的「运行 SQL 文件」而非手动执行,它会自动分段提交

用 Navicat 执行「数据同步」或「复制表」快速迁移

适用于把远程 Oracle 表直接复制到本地 Oracle 实例,绕过文件中转,但要求本地已装 Oracle 并建好用户+表空间。

  1. 确保本地 Oracle 用户有配额:否则导入中途报 ORA-01950: 表空间 'USERS' 中无权限
  2. 在「数据传输」中源选远程库,目标选本地连接 → 勾选「仅结构」或「结构和数据」
  3. 高级选项里务必勾选「遇到错误继续」:Oracle 字段含单引号、换行符或特殊字符时易触发 ORA-01740: 标识符中缺失双引号
  4. 不推荐跨版本直接同步(如远程是 19c,本地是 11g),DDL 兼容性可能出问题,优先走 SQL 文件中转

Navicat 调用 expdp 前必须手动准备的三件事

如果你坚持要 .dmp 文件(比如 DBA 要求归档),Navicat 无法替代命令行,但能帮你验证前置条件是否到位。

  1. 确认 DIRECTORY 存在:在远程 Oracle 执行 SELECT * FROM dba_directories;,记下合法的 directory 名(如 DATA_PUMP_DIR
  2. 检查当前用户权限:需被显式授予 READWRITE on that directory,仅 DBA 角色不够 —— 报 ORA-31631 就是这原因
  3. 确认 Oracle 服务端 OS 路径可写:directory 对应的服务器路径(如 /u01/app/oracle/dpdump)必须对 oracle 用户可写,否则 ORA-39070

真正麻烦的不是操作步骤,而是权限链路上任何一环断掉都会卡在报错里——DIRECTORY 名大小写敏感、路径属主不对、甚至 Oracle listener 没监听对应 service_name,都可能导致看似“配置完成”实则导出失败。别依赖 Navicat 界面提示,出错后第一反应是切到服务器查 expdp 日志和 dba_directories 视图。

热门栏目