本文将基于 Oracle Database 23ai Free 镜像部署一个 Oracle 数据库并演示如何使用 JumpServer 进行纳管。
该示例仅作演示使用,生产环境容器化部署请使用其他方式或做数据持久化。
参考 Oracle 官方文档:https://container-registry.oracle.com/ords/f?p=113:4:8232848927451
一、部署 Oracle
docker pull container-registry.oracle.com/database/free:latest-lite #精简镜像 建议使用
docker pull container-registry.oracle.com/database/free:latest #可选 完整镜像 文件较大 10G
#启动容器 BD_PASSWD后输入设置的密码
docker run -d --name oracle -p 1521:1521 -e DB_PASSWD=Your_Password container-registry.oracle.com/database/free:latest-lite:latest
#本地测试连接
docker exec -it oracle sqlplus sys/Your_Password@FREE AS SYSDBA二、纳管至 JumpServer
1.以SYSDBA身份用户进行连接
JumpServer默认创建了一个 Oracle 平台,但该平台的协议设置未开启SYSDBA身份用户登录,若使用SYSDBA身份用户,需要克隆一个 Oracle 平台,协议设置中启用该选项。



创建完成后,前往控制台创建 Oracle 资产,选择为刚才创建的平台,添加使用的特权账户 sys 即完成纳管。
协议使用的端口、默认数据库依据实际部署的环境进行配置。

2.使用普通账号进行连接
使用默认的 Oracle 平台创建资产,即协议设置不勾选使用 SYSDBA,其余设置同上根据实际环境配置即可正常连接。
三、使用 JumpServer 连接 Oracle
JumpServer 提供 Web、客户端(X-PACK)、远程应用三种连接方式。
Web方式即直接网页打开会话窗口,命令行或者图形化连接进行操作。
优点:零客户端依赖、轻量便捷、团队共享友好。 缺点:图形化操作能力有限,大结果集或高并发场景下易卡顿。 适用场景:日常轻量操作、临时 / 应急场景、团队协作。
客户端连接方式基于 Magnus 组件,为企业版功能,可以由 JumpServerClient 拉起本地客户端工具或提供连接向导。
优点:支持 Oracle 高版本(11g+)、OCI 连接方式(Oracle 原生调用接口),兼容性更强。可拉起本地客户端工具(如 PL/SQL Developer),利用本地算力处理大数据(如数据迁移、存储过程调试)。
缺点:需要手动配置本地工具和环境。
适用场景:企业级 Oracle 运维、高版本 Oracle 连接、需本地客户端加速的场景。
远程应用方式即调起远程应用发布机上安装的客户端工具如 DBeavor 在网页打开窗口进行连接。
优点:开箱即用,无需手动配置本地环境、规避本地环境差异(如客户端版本冲突、驱动缺失)。
缺点:需要管理员配置好远程应用功能、需要一台单独的Windows机器提供服务
适用场景:需使用完整图形化工具的场景、本地环境受限(如无法安装客户端的隔离环境)、团队工具版本统一

四、支持矩阵
| 数据库版本 | Navicat | Windows SQL Plus(21.7.0.0.0) | Windows SQL Plus(19.16) | Linux SQL Plus(21.8) | Linux SQL Plus(19.17) |
|---|---|---|---|---|---|
| Oracle 11g Enterprise Edition (11.2.0.1.0) | × | × | × | × | × |
| Oracle 11g Express Edition(11.2.0.2.0) | √ | √ | √ | × | × |
| Oracle 12c(12.1.0.2.0) | √ | √ | √ | × | × |
| Oracle 19c(19.3.0.0.0 ) | √ | √ | √ | × | × |
| Oracle RAC(12.2.0.1.0) | × | × | × | × | × |
五、常见问题及解决
1.如何获取 SID 或 Service Name ?
#使用SYSDBA账户连接
SELECT instance_name FROM v$instance; #查询SID
SELECT name FROM v$database; #查询Service Name2.连接时提示 “ORA-01017: invalid username/password; logon denied
可能原因:JumpServer 配置的 Oracle 账号 / 密码与实际不符(含大小写问题,Oracle 12c+ 密码默认区分大小写);Oracle 账号因多次密码错误被锁定。
3.执行 SQL 时提示 “字符集不匹配” 或中文乱码
可能原因:Oracle 数据库字符集与 JumpServer 客户端字符集不一致(如 Oracle 用 AL32UTF8,JumpServer 用 GBK)。
解决方法:
#连接Oracle执行如下sql
SELECT parameter, value FROM nls_database_parameters WHERE parameter IN ('NLS_CHARACTERSET', 'NLS_NCHAR_CHARACTERSET');
#登录JumpServer服务器,设置环境变量 永久生效需写入/etc/profile
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8 # 替换为 Oracle 的 NLS_CHARACTERSET