在 Docker 中部署 Oracle 数据库

容器镜像

生成镜像文件

一旦容器被打成镜像文件,就能在其他服务器上导入这个镜像并启动容器和数据库。首先,需要关闭数据库。Oracle 数据库对控制文件和数据文件具有强一致性校验,因此在拷贝这些文件之前必须先停掉数据库。

<code>docker exec -it oracle11g bash su - oracle sqlplus / as sysdba shutdown immediate;</code>

然后,停止容器,并生成镜像。这个过程很简单,只需要两条命令:

<code>docker commit oracle11g oracle11:11.2.0.4.0 docker save -o oracle11-11.2.0.4.0.tgz oracle11:11.2.0.4.0</code>

导出的过程可能会耗费一些时间。docker commit 命令用于将容器打成一个镜像,而 docker save 命令则用于将镜像导出为一个文件,方便在其他服务器上导入并生成一个新的容器。这样,我们就生成了一个名为 oracle11-11.2.0.4.0.tgz 的镜像文件。

导入镜像

将之前导出的镜像文件传输到其他服务器,并通过以下命令导入镜像:

<code>docker load -i /usr/local/src/oracle11-11.2.0.4.0.tgz</code>
图片[1]-在 Docker 中部署 Oracle 数据库-山海云端论坛

然后,查看镜像列表:

<code>docker images</code>
图片[2]-在 Docker 中部署 Oracle 数据库-山海云端论坛

使用

一旦容器启动成功,数据就会存储在容器内部。为了避免数据丢失,我们需要进行一些操作。

数据持久化

  1. 启动容器:
<code>docker run -d --privileged --name oracle11g-mysite -v /etc/localtime:/etc/localtime -p 1521:1521 oracle11:11.2.0.4.0</code>
图片[3]-在 Docker 中部署 Oracle 数据库-山海云端论坛

在上述命令中,oracle11g-mysite 是容器的名称,我们可以起一个符合使用场景的名称。为了使数据库时区与宿主机一致,我们将 localtime 映射到容器中。另外,我们还可以调整映射出来的端口。

可以使用以下命令检查容器是否成功启动,并查看容器的日志:

<code>docker ps docker logs oracle11g-mysite</code>
  1. 停掉数据库:

数据库成功启动后,为了保证数据文件的一致性,我们需要停掉数据库:

<code>docker exec -it oracle11g-mysite bash su - oracle sqlplus / as sysdba shutdown immediate;</code>
图片[4]-在 Docker 中部署 Oracle 数据库-山海云端论坛
图片[5]-在 Docker 中部署 Oracle 数据库-山海云端论坛
  1. 复制文件并重新生成容器:

为了持久化数据,我们需要将数据库的配置文件、控制文件和表空间文件复制出来。以下是示例操作:

<code>mkdir -p /home/oracle docker cp oracle11g-mysite:/opt/oracle/app/oradata /home/oracle/oradata docker cp oracle11g-mysite:/opt/oracle/app/fast_recovery_area /home/oracle/fast_recovery_area docker cp oracle11g-mysite:/opt/oracle/app/product/11.2.0/dbhome_1/dbs /home/oracle/dbs</code>

授权目录权限,以便容器中的 Oracle 用户能够访问目录:

<code>chmod -R 777 /home/oracle/oradata chmod -R 777 /home/oracle/fast_recovery_area chmod -R 777 /home/oracle/dbs</code>

创建预留扩展硬盘的映射:

<code>mkdir /home/oracle/data chmod -R 777 /home/oracle/data</code>

删除之前创建的容器:

<code>docker stop oracle11g-mysite docker rm oracle11g-mysite</code>

重新生成容器:

<code>docker run -d --privileged --name oracle11g-mysite -p 1521:1521 -v /etc/localtime:/etc/localtime -v /home/oracle/oradata:/opt/oracle/app/oradata -v /home/oracle/fast_recovery_area:/opt/oracle/app/fast_recovery_area -v /home/oracle/dbs:/opt/oracle/app/product/11.2.0/dbhome_1/dbs -v /home/oracle/data:/home/oracle/data oracle11:11.2.0.4.0</code>

写在最后

至此,我们完成了在 Docker 环境下部署 Oracle 数据库的介绍。更多数据库配置取决于实际情况,与正常部署方式的配置相同,这里不再进行深入介绍。

© 版权声明
THE END
喜欢就支持一下吧
点赞8 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容