news 2026/3/6 4:44:05

用docker安装oracle 19c

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
用docker安装oracle 19c

由于docker安装的oracle 12c有很多莫名其妙的bug,很多正常的SQL被它报错,比如:

SYS@lhrcdb1> @/par/day9.sql where case when s.sid>s.cnt-2 then s.sid+2-s.cnt else s.sid+2 end=s1.sid * ERROR at line 24: ORA-00923: FROM keyword not found where expected

基本无法使用。所以又重新拉取了oracle 19c的镜像,在建立容器的时候,遇到一些问题。
记录如下:

  1. 拉取oracle 19c的镜像
docker pull registry.cn-hangzhou.aliyuncs.com/zhuyijun/oracle:19c Trying to pull registry.cn-hangzhou.aliyuncs.com/zhuyijun/oracle:19c... Getting image source signatures Copying blob 67f2dfeb2f1b done Copying blob bce8f778fef0 done Copying blob 3fc3fd32c0bc done Copying blob 02948dd6d654 done Copying blob b94f01bb60c6 done Copying blob 2e42d8039fd9 done Copying config 7b5eb45976 done Writing manifest to image destination Storing signatures 7b5eb4597688552155896cfba326482bb1622a9d1727dbd12232f819a6266ba0 root@DESKTOP-59T6U68:/mnt/c/Users/lt# docker image list -a REPOSITORY TAG IMAGE ID CREATED SIZE registry.cn-hangzhou.aliyuncs.com/lhrbest/oracle_12cr2_ee_lhr_12.2.0.1 2.0 eb1a87913afe 5 years ago 16.2 GB registry.cn-hangzhou.aliyuncs.com/zhuyijun/oracle 19c 7b5eb4597688 5 years ago 6.64 GB

注意两个镜像的大小,19c的反而更小,两者拉取的blob文件分别是5.6GB和2.6GB。

  1. 运行容器

第一次用了上次12c的同样命令行,结果出错了。

docker run -itd --name oracle19c \ --privileged=true \ --restart=always \ -p 1521:1521 \ -p 5500:5500 \ -p 5501:5501 \ -p 5522:22 \ -p 3389:3389 \ -v /mnt/c/d/oracle12g/ora_data:/par \ 7b5eb4597688 init 7c0cc5ea36052fac64413cf177d886792110b34d1d9200b0caf2618dc3b307cd root@DESKTOP-59T6U68:/mnt/c/Users/lt# docker exec -it oracle19c /bin/bash [oracle@7c0cc5ea3605 ~]$ sqlplus / as sysdba SQL*Plus: Release 19.0.0.0.0 - Production on Sun Dec 21 11:13:10 2025 Version 19.3.0.0.0 Copyright (c) 1982, 2019, Oracle. All rights reserved. ERROR: ORA-12162: TNS:net service name is incorrectly specified Enter user-name: ^C[oracle@7c0cc5ea3605 ~]$

查看环境变量没有ORACLE_SID。

[oracle@7c0cc5ea3605 ~]$ env ORACLE_HOME=/opt/oracle/product/19c/dbhome_1 container=podman INSTALL_DB_BINARIES_FILE=installDBBinaries.sh _=/usr/bin/env

人工指定ORACLE_SID,也不行

[oracle@7c0cc5ea3605 ~]$ export ORACLE_SID=ORCLCDB [oracle@7c0cc5ea3605 ~]$ sqlplus / as sysdba SQL*Plus: Release 19.0.0.0.0 - Production on Sun Dec 21 11:15:20 2025 Version 19.3.0.0.0 Copyright (c) 1982, 2019, Oracle. All rights reserved. Connected to an idle instance. SQL> startup ORA-01078: failure in processing system parameters LRM-00109: could not open parameter file '/opt/oracle/product/19c/dbhome_1/dbs/initORCLCDB.ora' SQL> Disconnected

第二次使用了网上给出的命令行, 比第一次强,实例起来了,但是建表出错,然后丢失连接。

docker run -d -p 1521:1521 -p 5502:5500 -e ORACLE_SID=ORCLCDB -e ORACLE_PDB=ORCLPDB -e ORACLE_PWD=oracle -e ORACLE_EDITION=standard -e ORACLE_CHARACTERSET=AL32UTF8 -v /mnt/c/d/oracle12g/ora_data:/par --name oracle19c 7b5eb4597688 318bd09d0a35d914b9a0a32911f776c2d2dc7c78e34a625ee952212d111fe1fc root@DESKTOP-59T6U68:/mnt/c/Users/lt# docker exec -it oracle19c /bin/bash [oracle@318bd09d0a35 ~]$ sqlplus / as sysdba SQL*Plus: Release 19.0.0.0.0 - Production on Sun Dec 21 11:23:15 2025 Version 19.3.0.0.0 Copyright (c) 1982, 2019, Oracle. All rights reserved. Connected to: Oracle Database 19c Standard Edition 2 Release 19.0.0.0.0 - Production Version 19.3.0.0.0 SQL> show sga; Total System Global Area 3137338784 bytes Fixed Size 9141664 bytes Variable Size 654311424 bytes Database Buffers 2466250752 bytes Redo Buffers 7634944 bytes SQL> create table day9 as select 1 id,7 x,1 y from dual union all select 2,11,1 from dual union all select 3,11,7 from dual union all select 4,9,7 from dual union all select 5,9,5 from dual union all select 6,2,5 from dual union all select 7,2,3 from dual union all 2 3 4 5 6 7 8 9 select 8,7,3 from dual ; create table day9 as * ERROR at line 1: ORA-03135: connection lost contact Process ID: 604 Session ID: 733 Serial number: 61391 SQL> show sga; ERROR: ORA-03114: not connected to ORACLE

然后折腾了很久,停止容器,重启都用了,都连不上。
然后看到了这篇文章, 里面提到很重要的一点是,

2.4 查看安装过程 执行运行命令后,可以马上执行日志查看命令。创建实例的过程会比较长,请耐心等待。 docker logs -ft oracle19c

执行docker logs -ft oracle19c在日志中看到一个明显的出错信息

2025-12-21T19:29:57.196716000+08:00 ########### E R R O R ############### 2025-12-21T19:29:57.197027000+08:00 DATABASE SETUP WAS NOT SUCCESSFUL! 2025-12-21T19:29:57.197120000+08:00 Please check output for further info! 2025-12-21T19:29:57.197450000+08:00 ########### E R R O R ###############

联想到刚才的镜像大小,明白了,这两个镜像的内容不同,12c那个是安装完毕的,19c这个是未安装完的,所以刚才示例起来了是假象,实际还没创建完成,我中间的折腾破坏了安装过程,然后任何操作都出错。
再次关闭并删除错误的容器,重新运行刚才的docker run命令,并观察安装进度日志。

docker run -d -p 1521:1521 -p 5502:5500 -e ORACLE_SID=ORCLCDB -e ORACLE_PDB=ORCLPDB -e ORACLE_PWD=oracle -e ORACLE_EDITION=standard -e ORACLE_CHARACTERSET=AL32UTF8 -v /mnt/c/d/oracle12g/ora_data:/par --name oracle19c 7b5eb4597688 113bf6abbd5961b60fcc7cee23eae34e7e29631a0e0dd3b721487b559e3dc423 docker logs -ft oracle19c 2025-12-21T20:26:30.510370000+08:00 ######################### 2025-12-21T20:26:30.511001000+08:00 DATABASE IS READY TO USE! 2025-12-21T20:26:30.511491000+08:00 ######################### ... 2025-12-21T20:26:30.517997000+08:00 ALTER SYSTEM SET local_listener='' SCOPE=BOTH; 2025-12-21T20:26:30.518364000+08:00 ALTER PLUGGABLE DATABASE ORCLPDB SAVE STATE 2025-12-21T20:26:30.518899000+08:00 Completed: ALTER PLUGGABLE DATABASE ORCLPDB SAVE STATE 2025-12-21T20:26:30.519175000+08:00 2025-12-21T20:26:30.519271000+08:00 XDB initialized.

这个时候登录就没问题了。

root@DESKTOP-59T6U68:/mnt/c/Users/lt# docker exec -it oracle19c /bin/bash [oracle@113bf6abbd59 ~]$ sqlplus / as sysdba SQL*Plus: Release 19.0.0.0.0 - Production on Sun Dec 21 12:30:18 2025 Version 19.3.0.0.0 Copyright (c) 1982, 2019, Oracle. All rights reserved. Connected to: Oracle Database 19c Standard Edition 2 Release 19.0.0.0.0 - Production Version 19.3.0.0.0 SQL> create table day9 as select 1 id,7 x,1 y from dual union all select 2,11,1 from dual union all select 3,11,7 from dual union all select 4,9,7 from dual union all select 5,9,5 from dual union all select 6,2,5 from dual union all select 7,2,3 from dual union all select 8,7,3 from dual ; Table created. SQL> @/par/day9.sql X1 Y1 X2 Y2 AREA ---------- ---------- ---------- ---------- ---------- 9 5 2 3 24

创建表成功,12c中报错的SQL也成功返回结果了。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/3 7:42:42

18、非微软系统中的间谍软件应对策略

非微软系统中的间谍软件应对策略 1. 引言 如今,间谍软件、恶意软件、病毒和蠕虫等威胁正逐渐从 Windows 系统蔓延至其他平台。例如,苹果的 OS X 平台就已发现至少两个安全漏洞。尽管目前威胁相对较小,且很多时候需要用户主动操作才会中招,但一旦被攻破,后果可能不堪设想…

作者头像 李华
网站建设 2026/3/1 4:51:34

基于Java+SpringBoot+SSM竞赛团队组建与管理系统(源码+LW+调试文档+讲解等)/竞赛管理系统/团队组建工具/团队管理软件/竞赛组织平台/竞赛团队系统/团队建设与管理/竞赛管理软件

博主介绍 💗博主介绍:✌全栈领域优质创作者,专注于Java、小程序、Python技术领域和计算机毕业项目实战✌💗 👇🏻 精彩专栏 推荐订阅👇🏻 2025-2026年最新1000个热门Java毕业设计选题…

作者头像 李华
网站建设 2026/3/5 16:34:29

基于LangFlow的智能客服工作流设计实践

基于LangFlow的智能客服工作流设计实践 在企业服务数字化转型的浪潮中,客户对响应速度和交互体验的要求越来越高。一个能724小时精准回答产品问题、处理常见咨询的智能客服系统,早已不再是“锦上添花”,而是运营效率的核心支撑。然而&#xf…

作者头像 李华
网站建设 2026/2/28 23:34:28

24、Windows Phone 应用开发:数据存储与位置服务

Windows Phone 应用开发:数据存储与位置服务 1. 独立存储(Isolated Storage) 1.1 独立存储文件与设置对比 独立存储文件和独立存储设置是在 Windows Phone 设备上保存应用数据的两种方式。独立存储文件性能更佳,因为可以使用 StreamWriter 和 StreamReader 以原始数…

作者头像 李华
网站建设 2026/3/5 12:26:40

30、Windows Phone 推送通知开发全解析

Windows Phone 推送通知开发全解析 1. 推送通知的可靠性与电池影响 在使用 MPNS(Microsoft Push Notification Service)时,若因技术原因导致其不可用,推送通知将无法到达目的地,会被直接丢弃。所以,不能将推送通知视为一种可靠的消息传递方式。 同时,Windows Phone 设…

作者头像 李华
网站建设 2026/3/4 18:25:01

LangFlow支持本地模型与云端模型混合调用

LangFlow支持本地模型与云端模型混合调用 在AI应用开发日益普及的今天,一个现实问题摆在开发者面前:如何在保障数据安全的前提下,既控制成本又不牺牲模型能力?纯云端方案虽强大但昂贵且存隐私风险,纯本地部署则受限于算…

作者头像 李华