Docker环境下如何持久化保存Oracle数据

本文介绍了如何在删除Docker容器时,将Oracle数据库的数据文件从容器内的/u01/app/oracle/oradata/目录复制到宿主机/data/oracle/oradata/,并确保控制文件的安全,以便容器重启时数据恢复。
摘要由CSDN通过智能技术生成

背景:Oralce运行在Docker中,当删除容器后,数据库的数据将会丢失,本篇将介绍如何将oracle的数据文件持久化保存在宿主机的文件目录下

宿主机创建目录

mkdir -p /data/oracle/oradata/

运行docker(此docker并没有持久化)

docker run -d -p 1521:1521 --name oracle11g harbor.supcon.com/database/oracle11204:oracle11g

获取该docker数据文件路径

select name from v$datafile;

SYS@LHR11G> select name from v$datafile;

NAME
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
/u01/app/oracle/oradata/LHR11G/system01.dbf
/u01/app/oracle/oradata/LHR11G/sysaux01.dbf
/u01/app/oracle/oradata/LHR11G/undotbs01.dbf
/u01/app/oracle/oradata/LHR11G/users01.dbf
/u01/app/oracle/oradata/LHR11G/example01.dbf


在宿主机下执行以下命令,将数据文件拷贝到宿主机的目录下

docker cp oracle11g:/u01/app/oracle/oradata/LHR11G/ /data/oracle/oradata/

删除容器

(由于如果控制文件与数据文件在同一个目录中,则需要将控制文件提前备份到宿主机中)

docker stop oracle11g

docker rm oracle11g

重新建立容器,并制定文件目录映射

docker run -d -p 1522:1521 --name oracle11g -v /data/oracle/oradata/LHR11G:/u01/app/oracle/oradata  harbor.supcon.com/database/oracle_11g:oracle11g

进入容器,赋权

chown -R oracle:oinstall /data/oracle/oradata/LHR11G

制定一个控制文件

alter system set control_files='/u01/app/oracle/oradata/LHR11G/control01.ctl' scope=spfile;

启动

SYS@LHR11G> startup
ORACLE instance started.

Total System Global Area  325685248 bytes
Fixed Size                  2252944 bytes
Variable Size             184553328 bytes
Database Buffers          134217728 bytes
Redo Buffers                4661248 bytes
Database mounted.
Database opened.

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值