Docker 安装 Oracle11g 数据库并进行持久化
记录使用 docker 安装 Oracle11g,持久化需要使用 Unraid docker 的发布参数功能。
先决条件
本次实验环境如下:
Unraid 版本:6.12.6
Docker 版本:20.10.24
安装并配置 Oracle11g 数据库容器
这部分不细写,网上教程很多,也很详细。(可以参考此教程:docker 部署 oracle11g 并进行持久化)
解决持久化问题
上述博文中给出的持久化步骤并不完全正确,如果只是停止、重启容器是持久化成功的。如果每次修改容器参数后重建,都需要对容器重新操作。最佳方案是使用 docker 启动前/启动后脚本,但我试过并不生效(不知是 Unraid 的问题还是 docker 问题?)。
经查询 Unraid 论坛相关帖子,发现使用 Unraid docker 可视化编辑器的发布参数(Post Arguments)功能可以解决问题。发布参数的作用就是在容器创建后执行某命令,尝试过调用 shell 脚本不生效,所以就把命令用&&连起来写在一起。
在发布参数添加以下命令,即可不受容器重建的影响。
1
| && docker exec -d DB-Oracle11g bash -c "/bin/cp -rf /home/oracle/app/oracle/oradata/helowin/control01.ctl /home/oracle/app/oracle/flash_recovery_area/helowin/control02.ctl && /home/oracle/app/oracle/product/11.2.0/dbhome_2/bin/dbstart "
|
同时贴出 Unraid 的 docker 模板供参考
文件:/boot/config/plugins/dockerMan/templates-user/my-DB-Oracle11g.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| <?xml version="1.0"?> <Container version="2"> <Name>DB-Oracle11g</Name> <Repository>registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g</Repository> <Registry/> <Network>bridge</Network> <MyIP/> <Shell>bash</Shell> <Privileged>false</Privileged> <Support/> <Project/> <Overview/> <Category/> <WebUI>http://[IP]:[PORT:21580]/</WebUI> <TemplateURL/> <Icon>https://gcore.jsdelivr.net/gh/dsf1995cn/PicHub/icons/oracledb.png</Icon> <ExtraParams>--restart=unless-stopped --memory=4G</ExtraParams> <PostArgs>&& docker exec -d DB-Oracle11g bash -c "/bin/cp -rf /home/oracle/app/oracle/oradata/helowin/control01.ctl /home/oracle/app/oracle/flash_recovery_area/helowin/control02.ctl && /home/oracle/app/oracle/product/11.2.0/dbhome_2/bin/dbstart "</PostArgs> <CPUset/> <DateInstalled>1710235946</DateInstalled> <DonateText/> <DonateLink/> <Requires/> <Config Name="port" Target="1521" Default="" Mode="tcp" Description="" Type="Port" Display="always" Required="false" Mask="false">1521</Config> <Config Name="Host Key 1" Target="ORACLE_HOME" Default="" Mode="" Description="" Type="Variable" Display="always" Required="false" Mask="false">/home/oracle/app/oracle/product/11.2.0/dbhome_2</Config> <Config Name="ORACLE_SID" Target="ORACLE_SID" Default="" Mode="" Description="" Type="Variable" Display="always" Required="false" Mask="false">helowin</Config> <Config Name="ocadata" Target="/home/oracle/app/oracle/oradata" Default="" Mode="rw" Description="" Type="Path" Display="always" Required="false" Mask="false">/mnt/disk1/appdata/oracle11g/oradata</Config> <Config Name="ORACLE_HOME" Target="ORACLE_HOME" Default="" Mode="" Description="" Type="Variable" Display="always" Required="false" Mask="false">/home/oracle/app/oracle/product/11.2.0/dbhome_2</Config> </Container>
|
参考
-EOF
查看最新版,请访问本文链接:https://blog.onehat.cn/p/e850.html
原创作品,转载请保留出处。