navicat不能新建oracle数据库,只能连接已有实例并创建用户、表空间、表,再基于带外键约束的表通过data modeler逆向生成er图。
navicat 本身不直接“建立 oracle 数据库”,它只是管理工具;真正建库要靠 oracle 实例(如 oracle xe、19c 等)已存在。你用 navicat 能做的是:连接已有 oracle 实例 → 创建用户/表空间 → 建表 → 最后基于这些表生成 er 图。关键不是“建库”,而是“从已有 oracle 对象生成 er 图”。
Navicat Premium / Data Modeler 中没有“新建数据库”按钮对应 Oracle
和 MySQL 不同,Oracle 的“数据库”概念在 Navicat 里不体现为一个可右键新建的顶层对象。你看到的连接名(比如 ORCL 或 XE)实际是连接到一个运行中的 Oracle 实例,而该实例下可包含多个 SCHEMA(即用户),每个用户拥有自己的表、视图等对象。
所以常见错误是:右键连接 → 找不到“新建数据库” → 卡住。这是因为 Oracle 没有这个操作层级。你需要先确保:
- Oracle 实例已在本地或服务器上安装并启动(例如 Oracle Database Express Edition 21c)
- Navicat 已通过
Oracle类型连接成功(注意:需配置 Oracle Instant Client,否则报ORA-12154或cannot load OCI DLL) - 你用的是具有
CREATE SESSION、CREATE TABLE权限的用户(如SYSTEM,或自己新建的TEST用户)
从已有 Oracle 表生成 ER 图的两种可靠路径
ER 图必须基于真实存在的表(含主键、外键约束),Navicat 不会凭空猜测关系。推荐以下任一方式:
-
方式一(推荐):用 Navicat Data Modeler 新建模型 → 逆向导入
打开Navicat Data Modeler(独立程序,或 Premium 里的“模型”模块)→ “模型” → “新建模型” → 选Oracle版本 → “工具” → “从数据库导入” → 填写当前连接参数 → 勾选目标SCHEMA(如TEST)下的表 → 点击“开始”。外键关系会自动识别(前提是建表时用了FOREIGN KEY约束) -
方式二:在 Navicat 主界面右键单张表 → “逆向表到模型”
先在连接中展开你的用户(如TEST)→ 展开“表”节点 → 右键某张带外键的表(如orders)→ “逆向表到模型” → 此时只导入该表及其直接关联表(如customers)。适合小范围验证,但容易漏掉间接关联
⚠️ 注意:如果表之间只有逻辑关联(比如代码里 join user_id,但没建外键约束),Navicat 不会画出连线 —— 它只认 CONSTRAINT 元数据。
导出 ER 图为图片或 PDF 的实操要点
生成图后,别急着截图。Navicat Data Modeler 提供原生导出:
- 菜单栏 → “文件” → “导出为图像” → 可选
PNG、JPEG、SVG;分辨率建议设为300 dpi避免模糊 - “文件” → “打印预览” → 再用系统 PDF 打印机(如 Microsoft Print to PDF)保存为
PDF - 若图太大超出一页:先在画布上拖动调整表位置 → 右键空白处 → “排列” → “自动布局” → 再导出
常见坑:导出为图像 默认裁剪可视区域,不是整张画布。务必先点顶部工具栏的 适合全部(缩放到全部可见),再导出。
真正难的不是点几下菜单,而是 Oracle 环境是否就绪、外键是否真实存在、以及你用的 Navicat 版本是否包含 Data Modeler 模块(免费版无此功能)。别在 Navicat 里折腾“建库”,先确认 Oracle 实例跑起来、用户能连上、表里有 CONSTRAINT —— 这三步缺一不可。











