navicat 逆向生成 oracle er 图需满足三前提:连接权限(授予 select_catalog_role 或系统视图 select 权限)、匹配版本与 oci 驱动(推荐 navicat ≥16.0.18)、正确配置(easy connect 连接、关闭“忽略大小写”、勾选“加载字段注释”);否则菜单灰色或生成空图。
navicat 可以逆向生成 oracle 的 er 图,但必须满足连接权限、驱动版本和元数据可读性三重前提;不满足任意一条,逆向数据库到模型 菜单项就会灰色不可用或生成空图。
Oracle 连接必须启用 SELECT_CATALOG_ROLE 或显式授权
Navicat 逆向依赖 Oracle 系统视图(如 ALL_TABLES、ALL_CONSTRAINTS、ALL_CONS_COLUMNS),普通用户默认无权访问。常见失败现象是右键菜单灰色、弹出“ORA-00942: table or view does not exist”错误。
- DBA 需执行:
GRANT SELECT_CATALOG_ROLE TO your_user;(推荐) - 或最小化授权:
GRANT SELECT ON SYS.ALL_TABLES TO your_user;、GRANT SELECT ON SYS.ALL_CONSTRAINTS TO your_user;、GRANT SELECT ON SYS.ALL_CONS_COLUMNS TO your_user; - 确认连接测试通过后,在 Navicat 中右键的是「数据库名」(即连接节点下的 SID 或服务名),不是模式名(如
SCOTT)——Oracle 没有“数据库”概念,这里指连接实例
Navicat for Oracle 版本与 OCI 驱动必须匹配
旧版 Navicat(≤15.x)对 Oracle 19c/21c 支持不稳定,尤其在解析 JSON 类型字段、分区表约束、物化视图依赖时会跳过或报错。OCI 驱动未正确加载会导致逆向中途卡死或只显示部分表。
- 确认 Navicat 版本 ≥ 16.0.18(2025 年起强制要求)
- macOS 上需手动配置 OCI:Preferences → Oracle → OCI library → 指向
libclntsh.dylib(Oracle Instant Client 21.x 路径) - Windows 上若提示“无法加载 OCI DLL”,检查是否混用 32/64 位:Navicat 是 64 位,则
oci.dll必须来自 64 位 Instant Client - 连接字符串建议用 Easy Connect 格式:
host:port/service_name,避免tnsnames.ora解析失败导致元数据读取中断
逆向设置里必须关闭“忽略大小写”且勾选“加载字段注释”
Oracle 默认大小写敏感(双引号包裹的标识符),若勾选 忽略大小写,Navicat 会把 "USER_ID" 和 user_id 当作同一字段,导致外键关系错乱或主键丢失。字段注释(COMMENT ON COLUMN)在 Oracle 中常含业务含义,不加载则 ER 图失去关键语义。
- 逆向对话框中,取消勾选
忽略大小写(这是 Oracle 场景下的硬性要求) - 务必勾选
加载字段注释;若注释中文乱码,检查连接字符集是否设为AL32UTF8(不是 ZHS16GBK) - Oracle 无“视图依赖自动识别”,如需体现视图与基表关系,必须手动勾选
包含视图,否则视图不会出现在模型中 - 外键缺失常见于 DISABLED 约束或引用了其他 Schema 的表——Navicat 默认只读当前用户 Schema,跨 Schema 需提前授权
SELECT ANY TABLE并在逆向设置中切换 Schema 范围
导出 SVG/PDF 前必须手动调用“自动布局”并切换到 ER 视图
刚逆向完成的模型默认是“逻辑视图”,表堆叠紧凑、连线重叠、外键箭头被遮挡;直接导出会丢失关系细节。SVG 是唯一能无损缩放的格式,PDF 在打印时仍可能因 DPI 错配截断右侧内容。
- 点击顶部菜单
图表→自动布局,再手动拖拽调整表间距(尤其横向展开,避免超出 A4 宽度) - 右下角切换到
ER 视图(不是“列表”或“详细信息”),确保连线显示为标准 ER 箭头而非普通连线 - 右键每张表 →
样式→ 勾选显示字段注释,否则STATUS NUMBER(1) -- '0=待审,1=已批'这类说明不会出现 - 导出优先选
SVG:File → Export → Export ER Diagram as SVG;如必须 PDF,导出后用 Adobe Acrobat 打开,打印时选“实际大小”+“横向”,禁用“适应页面”
Oracle 的 OBJECT_TYPE(如 TYPE、SYNONYM)、嵌套表、REF 字段不会被逆向进 ER 图——Navicat 的模型层不支持这些对象类型,别指望它生成完整物理模型。真正要交付架构文档,得靠 Export ER Diagram as SQL 导出 DDL,再用其他工具补全。











