抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

使用docker安装Oracle11g,持久化需要使用Unraid docker的发布参数功能。

先决条件

本次实验环境如下:

Unraid版本:6.12.6

Docker版本:20.10.24

安装并配置Oracle11g数据库容器

这部分不细写,网上教程很多,也很详细。(可以参考此教程:docker部署oracle11g并进行持久化

解决持久化问题

上述博文中给出的持久化步骤并不完全正确,如果只是停止、重启容器是持久化成功的。如果每次修改容器参数后重建,都需要对容器重新操作。最佳方案是使用docker启动前/启动后脚本,但我试过并不生效(不知是Unraid的问题还是docker问题?)。

Snipaste_2023-12-31_02-28-17

经查询Unraid论坛相关帖子,发现使用Unraid docker可视化编辑器的发布参数(Post Arguments)功能可以解决问题。发布参数的作用就是在容器创建后执行某命令,尝试过调用shell脚本不生效,所以就把命令用&&连起来写在一起。

c0f22196-1fe6-45db-952e-b0345a8094c5

在发布参数添加以下命令,即可不受容器重建的影响。

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 "

Snipaste_2023-12-31_02-17-27

同时贴出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>&amp;amp;&amp;amp; 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 &amp;amp;&amp;amp; /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>

参考

评论