ITPub博客

首页 > 数据库 > Oracle > 基于Docker部署Oracle、MySQL等数据库的数据文件持久化

基于Docker部署Oracle、MySQL等数据库的数据文件持久化

原创 Oracle 作者:lhrbest 时间:2020-04-02 13:03:46 0 删除 编辑
-- docker:如何查看容器的挂载目录
docker inspect container_name | grep Mounts -A 8
docker inspect container_id | grep Mounts -A 8
--查看环境设置
docker inspect -f "{{.Config.Env}}" oracle19clhr
The commit operation will not include any data contained in volumes mounted inside the container.
commit操作并不会包含容器内挂载数据卷中的数据变化。


总结:通过命令“docker inspect oracle19clhr | grep Destination”查出来的路径里边的文件不会被commit到新的镜像里边,所以必须将该路径下的内容拷贝到其它地方才行。


参考:  https://www.jianshu.com/p/530d00f97cbf


------------------ Docker 安装19.3企业版
cd /
git clone https://github.com/oracle/docker-images.git
cd /docker-images/OracleDatabase/SingleInstance/dockerfiles/19.3.0/
wget https://download.oracle.com/otn/linux/oracle19c/190000/LINUX.X64_193000_db_home.zip?AuthParam=1585643275_8ef5dad33171ee0e1708ea00f4b54328
wget http://rpmfind.net/linux/epel/6/x86_64/Packages/r/rlwrap-0.42-1.el6.x86_64.rpm
cd docker-images/OracleDatabase/SingleInstance/dockerfiles/19.3.0/
vi Dockerfile
#FROM oraclelinux:7-slim as base
FROM centos:7.6.1810 as base
....
# Copy files needed during both installation and runtime
# -------------
COPY $SETUP_LINUX_FILE $CHECK_SPACE_FILE $INSTALL_DIR/
COPY oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm $INSTALL_DIR/
COPY rlwrap-0.42-1.el6.x86_64.rpm $INSTALL_DIR/
COPY $RUN_FILE $START_FILE $CREATE_DB_FILE $CONFIG_RSP $PWD_FILE $CHECK_DB_FILE $USER_SCRIPTS_FILE $ORACLE_BASE/ 
....
## 修改文件
vi setupLinuxEnv.sh
mkdir -p $ORACLE_BASE/scripts/setup && \
mkdir -p $ORACLE_BASE/scripts/startup && \
mkdir -p $ORACLE_BASE/oradata && \
mkdir -p $ORACLE_HOME && \
ln -s $ORACLE_BASE/scripts /docker-entrypoint-initdb.d && \
chmod ug+x $ORACLE_BASE/*.sh && \
yum -y install oracle-database-preinstall-19c openssl && \
yum -y localinstall /opt/install/oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm  &&  \
yum -y localinstall /opt/install/rlwrap-0.42-1.el6.x86_64.rpm && \
yum -y install openssl  && \
yum -y install openssl-devel && \
yum -y install lsof && \
yum -y install iproute && \
yum -y install net-tools && \
yum -y install rsyslog && \
yum -y install bash-completion && \
yum -y install tmux && \
yum -y install lrzsz && \
yum -y install telnet && \
rm -rf /var/cache/yum && \
ln -s $ORACLE_BASE/$PWD_FILE /home/oracle/ && \
echo oracle:lhr | chpasswd && \
echo root:lhr | chpasswd && \
chown -R oracle:dba $ORACLE_BASE
vi installDBBinaries.sh
…
# Temp location
#rm -rf /tmp/* && \
…
./buildDockerImage.sh -v 19.3.0 -e
groupadd -g 1300 dba
groupadd -g 1301 oper
groupadd -g 1302 oinstall
useradd -u 54321 -g oinstall -G dba,oper -d /home/oracle -s /bin/bash -c "Oracle Software Owner" oracle
echo "lhr" | passwd --stdin oracle
mkdir -p /oracle/oradata
chown oracle:oinstall /oracle/oradata
docker run -e TZ="Asia/Shanghai" -itd -h oracle19clhr  --name oracle19clhr \
-p 1521:1521 -p 5500:5500 \
-e ORACLE_SID=DCLHR \
-e ORACLE_PDB=LHRPDB1 \
-e ORACLE_PWD=lhr \
-e ORACLE_CHARACTERSET=AL32UTF8 \
-v /oracle/oradata:/opt/oracle/oradata \
oracle/database:19.3.0-ee
docker logs -f oracle19clhr
--修改密码
docker exec <container name> ./setPassword.sh <your password>
docker exec -it oracle19clhr /bin/bash
export ORACLE_SID=DCLHR
sqlplus / as sysdba
sqlplus sys/lhr@121.36.78.6/DCLHR AS sysdba
sqlplus sys/<your password>@//localhost:1521/<your SID> as sysdba
sqlplus system/<your password>@//localhost:1521/<your SID>
sqlplus pdbadmin/<your password>@//localhost:1521/<Your PDB name>
https://121.36.78.6:5500/em/
vi ~/.bash_profile
export ORACLE_SID=DCLHR
export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=/opt/oracle/product/19c/dbhome_1
export PATH=$PATH:$ORACLE_HOME/bin
export EDITOR=vi
stty erase ^H
alias sqlplus='rlwrap sqlplus'
alias rman='rlwrap rman'
alias sas='sqlplus / as sysdba'
source ~/.bash_profile
vi /etc/pam.d/su
注释:#session                include         system-auth
vi $ORACLE_HOME/sqlplus/admin/glogin.sql
set linesize 1000 pagesize 1000
set sqlprompt "_USER'@'_CONNECT_IDENTIFIER> "
vi $ORACLE_HOME/network/admin/listener.ora
SID_LIST_LISTENER =
  (SID_LIST =
   (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = /opt/oracle/product/19c/dbhome_1)
      (PROGRAM = extproc)
    )
   (SID_DESC =
     (GLOBAL_DBNAME = DCLHR)
     (SID_NAME = DCLHR)
     (ORACLE_HOME = /opt/oracle/product/19c/dbhome_1)
   )
  )
lsnrctl reload
---------- 修改数据库数据文件路径,便于打包传播
# docker inspect oracle19clhr | grep Destination
[root@ecs-rac1 ~]# docker inspect oracle19clhr | grep Mounts -A 8
        "Mounts": [
            {
                "Type": "bind",
                "Source": "/oracle/oradata",
                "Destination": "/opt/oracle/oradata",
                "Mode": "",
                "RW": true,
                "Propagation": "rprivate"
            }
所有在目录“/opt/oracle/oradata”下的文件都需要移动到容器内的其他地方,否则导出导入容器这些文件不会移动。
关闭数据库后进行操作
mkdir -p /oracle/oradata19c
chown oracle.oinstall /oracle/oradata19c
chown -R oracle.oinstall /oracle/oradata19c
cp -R * /oracle/oradata19c/
拷贝listener.ora、sqlnet.ora、tnsnames.ora、orapwDCLHR、spfileDCLHR.ora至相应位置,取消原有的硬连接。
startup nomount
alter system set control_files='/oracle/oradata19c/DCLHR/control01.ctl' scope=spfile;
startup force mount
select 'alter database rename file '''||name||''' to ''' || name || ''';' from v$datafile;
alter database rename file '/opt/oracle/oradata/DCLHR/redo01.log' to '/oracle/oradata19c/DCLHR/redo01.log';
alter database rename file '/opt/oracle/oradata/DCLHR/redo02.log' to '/oracle/oradata19c/DCLHR/redo02.log';
alter database rename file '/opt/oracle/oradata/DCLHR/redo03.log' to '/oracle/oradata19c/DCLHR/redo03.log';
alter database rename file '/opt/oracle/oradata/DCLHR/system01.dbf' to '/oracle/oradata19c/DCLHR/system01.dbf';
alter database rename file '/opt/oracle/oradata/DCLHR/sysaux01.dbf' to '/oracle/oradata19c/DCLHR/sysaux01.dbf';
alter database rename file '/opt/oracle/oradata/DCLHR/undotbs01.dbf' to '/oracle/oradata19c/DCLHR/undotbs01.dbf';
alter database rename file '/opt/oracle/oradata/DCLHR/pdbseed/system01.dbf' to '/oracle/oradata19c/DCLHR/pdbseed/system01.dbf';
alter database rename file '/opt/oracle/oradata/DCLHR/pdbseed/sysaux01.dbf' to '/oracle/oradata19c/DCLHR/pdbseed/sysaux01.dbf';
alter database rename file '/opt/oracle/oradata/DCLHR/users01.dbf' to '/oracle/oradata19c/DCLHR/users01.dbf';
alter database rename file '/opt/oracle/oradata/DCLHR/pdbseed/undotbs01.dbf' to '/oracle/oradata19c/DCLHR/pdbseed/undotbs01.dbf';
alter database rename file '/opt/oracle/oradata/DCLHR/LHRPDB1/system01.dbf' to '/oracle/oradata19c/DCLHR/LHRPDB1/system01.dbf';
alter database rename file '/opt/oracle/oradata/DCLHR/LHRPDB1/sysaux01.dbf' to '/oracle/oradata19c/DCLHR/LHRPDB1/sysaux01.dbf';
alter database rename file '/opt/oracle/oradata/DCLHR/LHRPDB1/undotbs01.dbf' to '/oracle/oradata19c/DCLHR/LHRPDB1/undotbs01.dbf';
alter database rename file '/opt/oracle/oradata/DCLHR/LHRPDB1/users01.dbf' to '/oracle/oradata19c/DCLHR/LHRPDB1/users01.dbf';
ALTER datatabase open;
---保证数据库正常
-- 还可以自己在容器内新建数据库
su - root
mkdir -p /u01/app/oracle/oradata
mkdir -p /u01/app/oracle/flash_recovery_area
chown oracle.dba /u01/app/oracle/oradata
chown oracle.dba /u01/app/oracle/flash_recovery_area
su - oracle
dbca -silent -createDatabase -templateName General_Purpose.dbc -responseFile NO_VALUE \
-gdbname lhrdb  -sid lhrdb \
-createAsContainerDatabase false \
-sysPassword lhr -systemPassword lhr \
-datafileDestination '/u01/app/oracle/oradata' -recoveryAreaDestination '/u01/app/oracle/flash_recovery_area' \
-storageType FS \
-redoLogFileSize 50 \
-characterset AL32UTF8 -nationalCharacterSet AL16UTF16 \
-sampleSchema true \
-memoryPercentage 30 \
-databaseType OLTP  \
-emConfiguration NONE
-- 将容器打包成镜像,执行docker commit
docker container stop oracle19clhr
docker commit oracle19clhr oracle19clhr_db
docker save oracle19clhr_db > oracle19clhr_db.tar
docker load < oracle19clhr_db.tar
--导出容器
docker export oracle19clhr > oracle19clhr_db.tar
--复制新镜像到其他环境后
scp oracle19clhr_db.tar root@192.168.6.161:/root/
-- 然后导入tar包(导入后是镜像)
docker import oracle19clhr_db.tar oracle19clhr_db:19.3.0-ee
-- 创建新的容器
docker run -itd -h oracle19c --name oracle19c  -p 1521:1521 -p 5500:5500  oracle19clhr_db:19.3.0-ee  /bin/bash
docker logs -f oracle19c
docker exec -it oracle19c /bin/bash
su - oracle
lsnrctl start
sqlplus / as sysdba
startup 
docker volume create ora19clhr
docker inspect ora19clhr
docker volume ls
docker volume rm ora19clhr
-- 上传到docker hub
docker commit 6c1870bee3a5 lhrbest/oracle19c-ee
docker login
docker push lhrbest/oracle19c-ee:latest





About Me

........................................................................................................................

● 本文作者:小麦苗,部分内容整理自网络,若有侵权请联系小麦苗删除

● 本文在itpub、博客园、CSDN和个人微 信公众号( DB宝)上有同步更新

● 本文itpub地址: http://blog.itpub.net/26736162

● 本文博客园地址: http://www.cnblogs.com/lhrbest

● 本文CSDN地址: https://blog.csdn.net/lihuarongaini

● 本文pdf版、个人简介及小麦苗云盘地址: http://blog.itpub.net/26736162/viewspace-1624453/

● 数据库笔试面试题库及解答: http://blog.itpub.net/26736162/viewspace-2134706/

● DBA宝典今日头条号地址: http://www.toutiao.com/c/user/6401772890/#mid=1564638659405826

........................................................................................................................

● QQ群号: 230161599 、618766405

● 微 信群:可加我微 信,我拉大家进群,非诚勿扰

● 联系我请加QQ好友 646634621 ,注明添加缘由

● 于 2020-04-01 06:00 ~ 2020-04-30 24:00 在西安完成

● 最新修改时间:2020-04-01 06:00 ~ 2020-04-30 24:00

● 文章内容来源于小麦苗的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解

● 版权所有,欢迎分享本文,转载请保留出处

........................................................................................................................

小麦苗的微店https://weidian.com/s/793741433?wfr=c&ifr=shopdetail

小麦苗出版的数据库类丛书http://blog.itpub.net/26736162/viewspace-2142121/

小麦苗OCP、OCM、高可用网络班http://blog.itpub.net/26736162/viewspace-2148098/

小麦苗腾讯课堂主页https://lhr.ke.qq.com/

........................................................................................................................

使用 微 信客户端扫描下面的二维码来关注小麦苗的微 信公众号( DB宝)及QQ群(DBA宝典)、添加小麦苗微 信, 学习最实用的数据库技术。

........................................................................................................................

欢迎与我联系

 

 



来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26736162/viewspace-2684114/,如需转载,请注明出处,否则将追究法律责任。

全部评论
【QQ:646634621】【微信:lhrbestxh】【微信公众号:DB宝】【11g、12c OCM】【QQ群:230161599、618766405】【《数据库笔试面试宝典》作者】【OCP、OCM、高可用(RAC+DG+OGG)、MySQL培训班已开讲,只讲实用内容】

注册时间:2012-09-23

  • 博文量
    1498
  • 访问量
    8685269