Docker部署oracle-xe-11g数据持久化的问题解决

本文详细介绍了如何在Kubernetes环境下使用Docker部署Oracle-XE-11g数据库,并实现数据持久化。首先,通过启动容器生成数据文件,然后将其复制到宿主机。接着,清除容器并创建新的部署配置,将宿主机上的数据文件挂载回容器。最后,配置Service以通过NodePort访问Oracle数据库,确保了数据库在重启或更新后仍能保留数据。

环境说明


kubernets集群部署 oracle
镜像所采用的是:wnameless/oracle-xe-11g
镜像地址是:https://hub.docker.com/r/oracleinanutshell/oracle-xe-11g
我是先下载到本地了

# 查看本地镜像
[root@k8s-master01 oracle11g]# docker images|grep oracleinanutshell
oracleinanutshell/oracle-xe-11g                                               latest        ad13c30ec346   2 years ago     2.13GB
[root@k8s-master01 oracle11g]# 

数据持久化

现在想要实现数据持久化
这个镜像的oradata目录在这里/u01/app/oracle/oradata/XE
我是这样操作的:
先把容器中的这个路径下的所有文件都拷贝到宿主机
然后再把拷贝出的文件挂载到原先的目录下
操作如下:

先启动服务,生成数据文件

[root@k8s-master01 oracle11g]# docker run -d --name oracle11g -p 1521:1521 -e ORACLE_ALLOW_REMOTE=true oracleinanutshell/oracle-xe-11g
bb62b7f9eb09b976557afed98c7915b53f09d0161d4a9b38337262d9fb036767
[root@k8s-master01 oracle11g]# docker logs -f oracle11g
Starting Oracle Net Listener.
Starting Oracle Database 11g Express Edition instance.


System altered.

^C
[root@k8s-master01 oracle11g]# 

看到 System altered 代表服务启动成功

把数据文件copy到宿主机

[root@k8s-master01 oracle11g]# docker cp oracle11g:/u01/app/oracle/ /data/oracle11g-data/
[root@k8s-master01 oracle11g]# 
[root@k8s-master01 oracle11g]# ls /data/oracle11g-data/oracle/
admin  diag  fast_recovery_area  oradata  oradiag_oracle  product
[root@k8s-master01 oracle11g]# 

那么,oracle的数据文件已经copy到宿主机

清除刚启动的容器 oracle11g

[root@k8s-master01 oracle11g]# docker stop oracle11g
oracle11g
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

leenhem

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值