Oracle Docker 镜像(制作)

网友投稿 323 2022-10-22

Oracle Docker 镜像(制作)

前言

在一个裸机 Linux 上安装 Oracle 步骤很多,且对安装环境有不少要求,一不小心就容易出错。安装过 Oracle 的想必都有一定感触。

在有些场合中我们对 Oralce 没有那么高的要求,比如临时测试、临时运行个项目等单数据库实例场景。这种情况使用 docker 一键启动运行 docker 会特别方便,运行时将数据挂载出来也能在很大程度上保证数据安全问题。

Oracle 官方已经正式发布了应该构建 Oracle 镜像的 dockerfile,目前支持列表如下(​​引用自官方​​):

Oracle Database 21c (21.3.0) Enterprise Edition, Standard Edition 2 and Express Edition (XE)Oracle Database 19c (19.3.0) Enterprise Edition and Standard Edition 2Oracle Database 18c (18.4.0) Express Edition (XE)Oracle Database 18c (18.3.0) Enterprise Edition and Standard Edition 2Oracle Database 12c Release 2 (12.2.0.2) Enterprise Edition and Standard Edition 2Oracle Database 12c Release 1 (12.1.0.2) Enterprise Edition and Standard Edition 2Oracle Database 11g Release 2 (11.2.0.2) Express Edition (XE)

Oracle on docker 是非常优秀的体验和测试 Oracle 数据库的方法。

教程

本文以构建 19.3.0 版本的镜像为例,做一下步骤教程:

1、下载官方的 Oracle 构建包

dockerfile 构建包

docker 镜像

1、下面是我下载好的两个压缩包

2、解压缩 ​​docker-images-main.zip​​

3、进入 ​​./docker-images-main/OracleDatabase/SingleInstance/dockerfiles​​

4、根据需要进入对应的版本目录(本例 ​​19.3.0​​)

5、将下载的 Oracle zip 附件拷贝到该目录中

6、构建DOCKER镜像

$ cd ~/docker-images/OracleDatabase/SingleInstance/dockerfiles $ ./buildContainerImage.sh -v 19.3.0 -e

慢慢等待执行……

完成以后使用 ​​docker images​​​ 可以看到已经有成功构建的 ​​Oracle 19c​​​ 镜像了,同时构建了 ​​Oracle Linux 7​​ 的基础镜像,如下:

[root@localhost dockerfiles]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEoracle/database 19.3.0-ee b4d8488865d1 About a minute ago 6.54GBoraclelinux 7-slim 4133e87bc7fa 5 weeks ago 132MB

4、运行 Oracle 容器

​1、新创建一个 oracle 用户,这初始属于 oinstall 组,且同时让他也属于 dba 组​

[root@harbor ~]# groupadd oinstall[root@harbor ~]# groupadd dba[root@harbor ~]# useradd oracle -g oinstall -G dba

​2、切换到 oracle 用户,然后创建数据目录​

su - oraclemkdir -p ~/oradata/oracle19c

​3、启动 oracle 容器​

docker run -itd --name oracle19c \-p 1521:1521 \-p 5500:5500 \-v /home/oracle/oradata/oracle19c:/opt/oracle/oradata \oracle/database:19.3.0-ee

在第一次运行容器的时候,会自动创建新的数据库,其中使用 ​​-v​​​ 参数,是将上面新创建数据目录映射到容器内的 ​​/opt/oracle/oradata​​ 目录中,这样就完成了将数据文件存储在本机文件系统中而非docker容器内,避免删除容器导致数据丢失的问题。

docker run 的更多参数,可以详见官方文档 docker-images/OracleDatabase/SingleInstance/README.md

​4、密码​

容器启动后,通过 ​​docker logs -f oracle19c​​,查看日志,能看到自动生成的SYS等用户的密码,如下示例:

ORACLE PASSWORD FOR SYS, SYSTEM AND PDBADMIN: aGHc3GKeSBj=1

如果需要修改数据库用户密码,可以在容器运行之后,通过以下命令修改。

docker exec ./setPassword.sh

比如下面的例子,将数据库sys用户密码设置为简单的 oracle123456888

$ docker exec oracle19c ./setPassword.sh oracle123456888The Oracle base remains unchanged with value /opt/oracle SQL*Plus: Release 19.0.0.0.0 - Production on Tue May 21 15:30:50 2019Version 19.3.0.0.0 Copyright (c) 1982, 2019, Oracle. All rights reserved. Connected to:Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - ProductionVersion 19.3.0.0.0 SQL>User altered. SQL>User altered. SQL>Session altered. SQL>User altered. SQL> Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - ProductionVersion 19.3.0.0.0

一直到出现以下字样,表示数据库已经正常创建并且可以使用了。

######################### DATABASE IS READY TO USE! #########################

​5、关于 SID​

默认创建的数据库SID是ORCLCDB,创建的PDB是ORCLPDB1,也可以在第一次docker run的时候,用 -e 参数来指定SID和PDB的名字。比如:

docker run -itd --name new-oracle19c \ -p 1521:1521 -p 5500:5500 \ -e ORACLE_SID=ORCL \ -e ORACLE_PDB=MYPDB1 \ -v /home/oracle/oradata/oracle19c:/opt/oracle/oradata \oracle/database:19.3.0-ee

​6、登录验证​

直接登录容器使用sqlplus做简单的验证。注意使用之前docker run时候回显的用户密码。

[root@docker dockerfiles]# docker exec -it oracle-19c /bin/bash

[oracle@6a5cd3f9fb6c dbs]$ export ORACLE_SID=ORCLCDB

[oracle@6a5cd3f9fb6c dbs]$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Wed Jan 8 02:00:16 2020

Version 19.3.0.0.0

Copyright © 1982, 2019, Oracle. All rights reserved.

Connected to:

Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production

Version 19.3.0.0.0

SQL> show pdbs;

CON_ID CON_NAME OPEN MODE RESTRICTED

2 PDB$SEED READ ONLY NO 3 LEIPDB READ WRITE NO

SQL>

也可以在浏览器中登录Oracle 19c内置的EM Express来通过图形界面 访问和监控。

注意是 Name:不用填

最后你可以选择将这个镜像 push 到你的私服中给其他地方使用。

(END)

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Springboot中实现策略模式+工厂模式的方法
下一篇:电视节目预告(中央电视台体育赛事频道电视节目预告)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~