--- page-title: "Docker学习笔记_14 docker应用 - 部署ORACLE 11g单实例数据库.md | 一个DBA的工作学习笔记" url: http://dbase.cc/2018/09/19/docker/14_docker%E5%BA%94%E7%94%A8-%E9%83%A8%E7%BD%B2ORACLE-11g%E5%8D%95%E5%AE%9E%E4%BE%8B%E6%95%B0%E6%8D%AE%E5%BA%93/ date: "2024-11-20 16:16:55" --- > docker pull oraclelinux:6.10 --- ## Docker学习笔记\_14 docker应用 - 部署ORACLE 11g单实例数据库.md ## [](http://dbase.cc/2018/09/19/docker/14_docker%E5%BA%94%E7%94%A8-%E9%83%A8%E7%BD%B2ORACLE-11g%E5%8D%95%E5%AE%9E%E4%BE%8B%E6%95%B0%E6%8D%AE%E5%BA%93/#%E4%B8%8B%E8%BD%BD%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E5%9F%BA%E9%95%9C%E5%83%8F "下载操作系统基镜像")下载操作系统基镜像 docker pull oraclelinux:6.10 docker tag oraclelinux:6.10 10.240.4.159/os/oraclelinux:6.10 docker push 10.240.4.159/os/oraclelinux:6.10 docker pull oraclelinux:7.5 docker tag oraclelinux:7.5 10.240.4.159/os/oraclelinux:7.5 docker push 10.240.4.159/os/oraclelinux:7.5 ## [](http://dbase.cc/2018/09/19/docker/14_docker%E5%BA%94%E7%94%A8-%E9%83%A8%E7%BD%B2ORACLE-11g%E5%8D%95%E5%AE%9E%E4%BE%8B%E6%95%B0%E6%8D%AE%E5%BA%93/#BUILD%E6%95%B0%E6%8D%AE%E5%BA%93%E8%BD%AF%E4%BB%B6%E9%95%9C%E5%83%8F "BUILD数据库软件镜像")BUILD数据库软件镜像 mkdir -p /docker\_build/oracle\_database/oel\-6.10/01\_database cd /docker\_build/oracle\_database/oel\-6.10/01\_database rz rlwrap\-0.42.tar.gz p13390677\_112040\_Linux-x86\-64\_1of7.zip p13390677\_112040\_Linux-x86\-64\_2of7.zip vi db\_install.rsp oracle.install.responseFileVersion=/oracle/install/rspfmt\_dbinstall\_response\_schema\_v11\_2\_0 oracle.install.option=INSTALL\_DB\_SWONLY ORACLE\_HOSTNAME=oradb UNIX\_GROUP\_NAME=oinstall INVENTORY\_LOCATION=/u01/app/oraInventory SELECTED\_LANGUAGES=en,zh\_CN ORACLE\_HOME=/u01/app/oracle/product/11.2.0/db\_1 ORACLE\_BASE=/u01/app/oracle oracle.install.db.InstallEdition=EE oracle.install.db.EEOptionsSelection=false oracle.install.db.optionalComponents=oracle.rdbms.partitioning:11.2.0.4.0,oracle.oraolap:11.2.0.4.0,oracle.rdbms.dm:11.2.0.4.0,oracle.rdbms.dv:11.2.0.4.0,oracle.rdbms.lbac:11.2.0.4.0,oracle.rdbms.rat:11.2.0.4.0 oracle.install.db.DBA\_GROUP=dba oracle.install.db.OPER\_GROUP=dba oracle.install.db.CLUSTER\_NODES= oracle.install.db.isRACOneInstall= oracle.install.db.racOneServiceName= oracle.install.db.config.starterdb.type= oracle.install.db.config.starterdb.globalDBName= oracle.install.db.config.starterdb.SID= oracle.install.db.config.starterdb.characterSet=AL32UTF8 oracle.install.db.config.starterdb.memoryOption=true oracle.install.db.config.starterdb.memoryLimit= oracle.install.db.config.starterdb.installExampleSchemas=false oracle.install.db.config.starterdb.enableSecuritySettings=true oracle.install.db.config.starterdb.password.ALL=oracle oracle.install.db.config.starterdb.password.SYS= oracle.install.db.config.starterdb.password.SYSTEM= oracle.install.db.config.starterdb.password.SYSMAN= oracle.install.db.config.starterdb.password.DBSNMP= oracle.install.db.config.starterdb.control=DB\_CONTROL oracle.install.db.config.starterdb.gridcontrol.gridControlServiceURL= oracle.install.db.config.starterdb.automatedBackup.enable=false oracle.install.db.config.starterdb.automatedBackup.osuid= oracle.install.db.config.starterdb.automatedBackup.ospwd= oracle.install.db.config.starterdb.storageType= oracle.install.db.config.starterdb.fileSystemStorage.dataLocation= oracle.install.db.config.starterdb.fileSystemStorage.recoveryLocation= oracle.install.db.config.asm.diskGroup= oracle.install.db.config.asm.ASMSNMPPassword= MYORACLESUPPORT\_USERNAME= MYORACLESUPPORT\_PASSWORD= SECURITY\_UPDATES\_VIA\_MYORACLESUPPORT= DECLINE\_SECURITY\_UPDATES=true PROXY\_HOST= PROXY\_PORT= PROXY\_USER= PROXY\_PWD= PROXY\_REALM= COLLECTOR\_SUPPORTHUB\_URL= oracle.installer.autoupdates.option= oracle.installer.autoupdates.downloadUpdatesLoc= AUTOUPDATES\_MYORACLESUPPORT\_USERNAME= AUTOUPDATES\_MYORACLESUPPORT\_PASSWORD= vi Dockerfile FROM 10.240.4.159/os/oralcelinux:6.10 ADD rlwrap\-0.42.tar.gz /tmp/ ADD p13390677\_112040\_Linux-x86\-64\_1of7.zip /tmp/ ADD p13390677\_112040\_Linux-x86\-64\_2of7.zip /tmp/ ADD db\_install.rsp /tmp/ RUN rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-oracle && \\ yum -y install oracle-rdbms-server\-11gR2-preinstall unzip readline-devel.x86\_64 lrzsz && \\ cd /tmp/rlwrap\-0.42 && ./configure && make && make install && \\ echo "Create /u01/app dir..." && \\ mkdir -p -m 755 /u01/app/dumpdir && \\ mkdir -p -m 755 /u01/app/oradata && \\ mkdir -p -m 755 /u01/app/oraInventory && \\ mkdir -p -m 755 /u01/app/oracle && \\ mkdir -p -m 755 /u01/app/oracle/product/11.2.0/db\_1 && \\ chown -R oracle:oinstall /u01 && \\ unzip -oq /tmp/p13390677\_112040\_Linux-x86\-64\_1of7.zip -d /tmp/ && \\ unzip -oq /tmp/p13390677\_112040\_Linux-x86\-64\_2of7.zip -d /tmp/ && \\ chown -R oracle:oinstall /tmp/database && \\ printf "%s\\n" 'export ORACLE\_SID=orcl' \\ 'export ORACLE\_BASE=/u01/app/oracle' \\ 'export ORACLE\_HOME=$ORACLE\_BASE/product/11.2.0/db\_1' \\ 'export LD\_LIBRARY\_PATH=$ORACLE\_HOME/lib:$ORACLE\_HOME/lib32' \\ 'export PATH=$PATH:$ORACLE\_HOME/bin:$ORACLE\_HOME/OPatch' \\ 'export NLS\_LANG=AMERICAN\_AMERICA.ZHS16GBK' \\ 'export NLS\_DATE\_FORMAT="yyyy-mm-dd hh24:mi:ss"' \\ 'alias sqlplus="rlwrap sqlplus"' \\ 'alias rman="rlwrap rman"' \\ >>/home/oracle/.bash\_profile && \\ cat /etc/security/limits.conf | grep -v oracle | tee /etc/security/limits.conf && \\ su oracle -c "/tmp/database/runInstaller -ignorePrereq -ignoreSysPrereqs -waitforcompletion -silent -responseFile /tmp/db\_install.rsp 2>&1" && \\ /u01/app/oraInventory/orainstRoot.sh && \\ /u01/app/oracle/product/11.2.0/db\_1/root.sh && \\ yum clean all && \\ rm -rf /tmp/\* && rm -rf /var/log/\* && rm -rf /var/cache/\* vi build.sh imagetag="10.240.4.159/app/oracledatabase:11.2.0.4-software" dockerfile="Dockerfile" docker build --rm \\ --force-rm \\ --no-cache \\ --memory=4g \\ --shm-size=4g \\ -t ${imagetag} \\ -f ${dockerfile} . chmod +x build.sh ./build.sh ## [](http://dbase.cc/2018/09/19/docker/14_docker%E5%BA%94%E7%94%A8-%E9%83%A8%E7%BD%B2ORACLE-11g%E5%8D%95%E5%AE%9E%E4%BE%8B%E6%95%B0%E6%8D%AE%E5%BA%93/#PSU "PSU")PSU mkdir -p /docker\_build/oracle\_database/oel\-6.10/02\_psu cd /docker\_build/oracle\_database/oel\-6.10/02\_psu rz ocm.rsp p6880880\_112000\_Linux-x86\-64.zip p27967757\_112040\_Linux-x86\-64\_2of7.zip p27923163\_112040\_Linux-x86\-64\_2of7.zip vi Dockerfile FROM 10.240.4.159/app/oracledatabase:11.2.0.4\-software ADD ocm.rsp /tmp/ocm.rsp ADD p6880880\_112000\_Linux-x86\-64.zip /tmp/ ADD p27967757\_112040\_Linux-x86\-64.zip /tmp/ ADD p27923163\_112040\_Linux-x86\-64.zip /tmp/ RUN printf "%s\\n" '\[GENERAL\]' \\ 'RESPONSEFILE\_VERSION="11.2"' \\ 'CREATE\_TYPE="CUSTOM"' \\ '\[oracle.net.ca\]' \\ 'INSTALLED\_COMPONENTS={"server","net8","javavm"}' \\ 'INSTALL\_TYPE=""typical""' \\ 'LISTENER\_NUMBER=1' \\ 'LISTENER\_NAMES={"LISTENER"}' \\ 'LISTENER\_PROTOCOLS={"TCP;1521"}' \\ 'LISTENER\_START=""LISTENER""' \\ 'NAMING\_METHODS={"TNSNAMES","ONAMES","HOSTNAME"}' \\ 'NSN\_NUMBER=1' \\ 'NSN\_NAMES={"EXTPROC\_CONNECTION\_DATA"}' \\ 'NSN\_SERVICE={"PLSExtProc"}' \\ 'NSN\_PROTOCOLS={"TCP;HOSTNAME;1521"}' \\ >>/tmp/netca.rsp && \\ unzip -oq /tmp/p6880880\_112000\_Linux-x86\-64.zip -d /tmp/ && \\ rm -rf /u01/app/oracle/product/11.2.0/db\_1/OPatch && \\ chown -R oracle:oinstall /tmp/OPatch && \\ mv /tmp/OPatch /u01/app/oracle/product/11.2.0/db\_1/ && \\ unzip -qo /tmp/p27967757\_112040\_Linux-x86\-64.zip -d /tmp && \\ unzip -qo /tmp/p27923163\_112040\_Linux-x86\-64.zip -d /tmp && \\ su - oracle -c "opatch apply -silent -ocmrf /tmp/ocm.rsp -local /tmp/27967757/27734982" && \\ su - oracle -c "opatch apply -silent -ocmrf /tmp/ocm.rsp -local /tmp/27923163" && \\ su oracle -c "/u01/app/oracle/product/11.2.0/db\_1/bin/netca -silent -responseFile /tmp/netca.rsp" && \\ yum clean all && \\ rm -rf /tmp/\* && rm -rf /var/log/\* && rm -rf /var/cache/\* vi build.sh imagetag="10.240.4.159/app/oracledatabase:11.2.0.4-psu" dockerfile="Dockerfile" docker build --rm \\ --force-rm \\ --no-cache \\ --memory=4g \\ --shm-size=4g \\ -t ${imagetag} \\ -f ${dockerfile} . chmod +x build.sh ./build.sh ## [](http://dbase.cc/2018/09/19/docker/14_docker%E5%BA%94%E7%94%A8-%E9%83%A8%E7%BD%B2ORACLE-11g%E5%8D%95%E5%AE%9E%E4%BE%8B%E6%95%B0%E6%8D%AE%E5%BA%93/#%E5%AE%89%E8%A3%85%E6%95%B0%E6%8D%AE%E5%BA%93 "安装数据库")安装数据库 mkdir -p /docker\_build/oracle\_database/oel\-6.10/03\_db cd /docker\_build/oracle\_database/oel\-6.10/03\_db vi Dockerfile FROM 10.240.4.159/app/oracledatabase:11.2.0.4\-psu RUN printf "%s\\n" '\[GENERAL\]' \\ 'RESPONSEFILE\_VERSION = "11.2.0"' \\ 'OPERATION\_TYPE = "createDatabase"' \\ '\[CREATEDATABASE\]' \\ 'GDBNAME = "orcl"' \\ 'DATABASECONFTYPE = "SI"' \\ 'SID = "orcl"' \\ 'TEMPLATENAME = "General\_Purpose.dbc"' \\ 'SYSPASSWORD = "Center08"' \\ 'SYSTEMPASSWORD = "Center08"' \\ 'DATAFILEDESTINATION=/u01/app/oradata' \\ 'RECOVERYAREADESTINATION=/u01/app/oradata' \\ 'STORAGETYPE=FS' \\ 'CHARACTERSET="ZHS16GBK"' \\ 'INITPARAMS="java\_jit\_enabled=false,memory\_target=0,sga\_target=2048,pga\_aggregate\_target=300,processes=300,open\_cursors=300"' \\ 'AUTOMATICMEMORYMANAGEMENT="False"' \\ > /tmp/dbca.rsp && chown oracle:oinstall /tmp/dbca.rsp && chmod +x /tmp/dbca.rsp && \\ su oracle -c "/u01/app/oracle/product/11.2.0/db\_1/bin/dbca -silent -responseFile /tmp/dbca.rsp" && \\ yum clean all && \\ rm -rf /tmp/\* && rm -rf /var/log/\* && rm -rf /var/cache/\* vi build.sh imagetag="10.240.4.159/app/oracledatabase:11.2.0.4-db" dockerfile="Dockerfile" docker build --rm \\ --force-rm \\ --no-cache \\ --memory=4g \\ --shm-size=4g \\ -t ${imagetag} \\ -f ${dockerfile} . chmod +x build.sh ./build.sh docker push 10.240.4.159/app/oracledatabase:11.2.0.4 ## [](http://dbase.cc/2018/09/19/docker/14_docker%E5%BA%94%E7%94%A8-%E9%83%A8%E7%BD%B2ORACLE-11g%E5%8D%95%E5%AE%9E%E4%BE%8B%E6%95%B0%E6%8D%AE%E5%BA%93/#%E5%90%AF%E6%9C%BA%E5%90%8E%E6%95%B0%E6%8D%AE%E5%BA%93%E8%87%AA%E8%A1%8C%E5%90%AF%E5%8A%A8 "启机后数据库自行启动")启机后数据库自行启动 mkdir -p /docker\_build/oracle\_database/oel\-6.10/04\_run cd /docker\_build/oracle\_database/oel\-6.10/04\_run cp /usr/share/zoneinfo/Asia/Shanghai . vi entrypoint.sh set -e /etc/init.d/sshd start chown -R oracle:oinstall /u01 su - oracle -c "/usr/sbin/entrypoint\_oracle.sh" chmod +x entrypoint.sh vi entrypoint\_oracle.sh set -e source ~/.bashrc alert\_log="$ORACLE\_BASE/diag/rdbms/orcl/$ORACLE\_SID/trace/alert\_$ORACLE\_SID.log" listener\_log="$ORACLE\_BASE/diag/tnslsnr/$HOSTNAME/listener/trace/listener.log" pfile=$ORACLE\_HOME/dbs/init$ORACLE\_SID.ora monitor() { tail -F -n 0 $1 | while read line; do echo -e "$2: $line"; done } trap\_db() { trap "echo 'Caught SIGTERM signal, shutting down...'; stop\_db" SIGTERM; trap "echo 'Caught SIGINT signal, shutting down...'; stop\_db" SIGINT; } check\_shm() { echo "" echo "Checking shared memory..." df -h | grep "Mounted on" && df -h | egrep --color "^.\*/dev/shm" || echo "Shared memory is not mounted." } reconfig\_lsnr() { echo "" echo "Reconfig listener for hostname : \[$HOSTNAME\]..." sed -i "s/(HOST.\*)(/(HOST = $HOSTNAME)(/g" /u01/app/oracle/product/11.2.0/db\_1/network/admin/tnsnames.ora sed -i "s/(HOST.\*)(/(HOST = $HOSTNAME)(/g" /u01/app/oracle/product/11.2.0/db\_1/network/admin/listener.ora echo "Show tnsnames.ora..." cat /u01/app/oracle/product/11.2.0/db\_1/network/admin/tnsnames.ora echo "Show listener.ora..." cat /u01/app/oracle/product/11.2.0/db\_1/network/admin/listener.ora } start\_lsnr() { echo "" echo "Starting listener..." monitor $listener\_log listener & lsnrctl start | while read line; do echo -e "lsnrctl: $line"; done MON\_LSNR\_PID=$! } start\_db() { echo "" echo "Starting database..." trap\_db monitor $alert\_log alertlog & MON\_ALERT\_PID=$! sqlplus / as sysdba <<-EOF | pro Starting with pfile='$pfile' ... startup; alter system register; exit 0 EOF while read line; do echo -e "sqlplus: $line"; done change\_dpdump\_dir change\_profile\_default\_limit wait $MON\_ALERT\_PID } stop\_db() { trap '' SIGINT SIGTERM shut\_immediate echo "Shutting down listener..." lsnrctl stop | while read line; do echo -e "lsnrctl: $line"; done kill $MON\_ALERT\_PID $MON\_LSNR\_PID exit 0 } shut\_immediate() { ps -ef | grep ora\_pmon | grep -v grep > /dev/null && \\ echo "Shutting down the database..." && \\ sqlplus / as sysdba <<-EOF | set echo on shutdown immediate; exit 0 EOF while read line; do echo -e "sqlplus: $line"; done } change\_dpdump\_dir () { echo "" echo "Changing dpdump dir to /u01/app/dumpdir" sqlplus / as sysdba <<-EOF | create or replace directory data\_pump\_dir as '/u01/app/dumpdir'; commit; exit 0 EOF while read line; do echo -e "sqlplus: $line"; done } change\_profile\_default\_limit() { echo "" echo "Changing profile default limit : password\_life\_time/failed\_login\_attempts" sqlplus / as sysdba <<-EOF | alter profile default limit password\_life\_time unlimited; alter profile default limit failed\_login\_attempts unlimited; commit; exit 0 EOF while read line; do echo -e "sqlplus: $line"; done } check\_shm reconfig\_lsnr start\_lsnr start\_db chmod +x entrypoint\_oracle.sh vi Dockerfile FROM 10.240.4.159/app/oracledatabase:11.2.0.4\-db ADD Shanghai /etc/localtime ADD entrypoint.sh /usr/sbin/entrypoint.sh ADD entrypoint\_oracle.sh /usr/sbin/entrypoint\_oracle.sh RUN sed -i "s/#PermitRootLogin.\*/PermitRootLogin yes/g" /etc/ssh/sshd\_config && \\ echo "export LANG=en\_US.utf8" >> /etc/profile && \\ echo 'root:ydgw.cn' | chpasswd ENTRYPOINT \["/usr/sbin/entrypoint.sh"\] CMD \[""\] vi build.sh imagetag="10.240.4.159/app/oracledatabase:11.2.0.4-rundb" dockerfile="Dockerfile" docker build --rm \\ --force-rm \\ --no-cache \\ --memory=4g \\ --shm-size=4g \\ -t ${imagetag} \\ -f ${dockerfile} . chmod +x build.sh ./build.sh ## [](http://dbase.cc/2018/09/19/docker/14_docker%E5%BA%94%E7%94%A8-%E9%83%A8%E7%BD%B2ORACLE-11g%E5%8D%95%E5%AE%9E%E4%BE%8B%E6%95%B0%E6%8D%AE%E5%BA%93/#%E9%83%A8%E7%BD%B2ORACLE%E6%9C%8D%E5%8A%A1 "部署ORACLE服务")部署ORACLE服务 1. 登陆Rancher(1.6.21),编排工具用的是默认的Cattle 2. 应用 - 用户 - 添加应用 - 名称:\[ORACLE\] - 创建(已有服务此步忽略) 3. 添加服务 - 在添加服务页面添写配置如下信息 - 创建 名称: erptest2\-11g 描述: 日结后 选择镜像: 10.240.4.159/app/oracledatabase:11.2.0.4\-database 端口映射: 1521:1522/tcp 15620:22/tcp 网络 - 主机名: erptest2 安全/主机: 主机完全访问权限 内存限制 4096 调度 - 在指定主机上运行全部容器: docker156 4.启动应用(容器) - 检查检查并登录erptest2-11g服务,无问题后`shutdown immediate`数据库 5.登陆宿主机,执行以下命令 docker ps -a | grep oracle ab409de14588 10.240.4.159/app/oracledatabase:11.2.0.4\-database "/.r/r /entrypoint.s…" 7 minutes ago Up 7 minutes r-Oracle-erptest1\-11g\-1\-c16a25ba 295f99a4f7d4 10.240.4.159/app/oracledatabase:11.2.0.4\-database "/.r/r /entrypoint.s…" 3 hours ago Up 3 hours r-Oracle-erptest2\-1\-efd39217 cd /docker\_mnt/oracledb/erptest2\-20180817 docker cp 295f99a4f7d4:/u01/app/oradata . docker cp 295f99a4f7d4:/u01/app/dumpdir . docker cp 295f99a4f7d4:/u01/app/oracle/fast\_recovery\_area . docker cp 295f99a4f7d4:/u01/app/oracle/diag . docker cp 295f99a4f7d4:/u01/app/oracle/product/11.2.0/db\_1/dbs . 6.升级erptest2-11g 卷 - 添加卷: /etc/localtime:/etc/localtime:ro /docker\_mnt/oracledb/erptest2\-20180817/oradata:/u01/app/oradata /docker\_mnt/oracledb/erptest2\-20180817/dpdump:/u01/app/dumpdir /docker\_mnt/oracledb/erptest2\-20180817/fast\_recovery\_area:/u01/app/oracle/fast\_recovery\_area /docker\_mnt/oracledb/erptest2\-20180817/diag:/u01/app/oracle/diag /docker\_mnt/oracledb/erptest2\-20180817/dbs:/u01/app/oracle/product/11.2.0/db\_1/dbs docker 限制内存, 报 not support swap limit capabilities 参考:[https://segmentfault.com/q/1010000002888521](https://segmentfault.com/q/1010000002888521) Adjust memory and swap accounting When users run Docker, they may see these messages when working with an image: WARNING: Your kernel does not support cgroup swap limit. WARNING: Your kernel does not support swap limit capabilities. Limitation discarded. To prevent these messages, enable memory and swap accounting on your system. To enable these on system using GNU GRUB (GNU GRand Unified Bootloader), do the following. Log into Ubuntu as a user with sudo privileges. Edit the /etc/default/grub file. Set the GRUB\_CMDLINE\_LINUX value as follows: GRUB\_CMDLINE\_LINUX="cgroup\_enable=memory swapaccount=1" Save and close the file. Update GRUB. $ sudo update-grub Reboot your system. ## [](http://dbase.cc/2018/09/19/docker/14_docker%E5%BA%94%E7%94%A8-%E9%83%A8%E7%BD%B2ORACLE-11g%E5%8D%95%E5%AE%9E%E4%BE%8B%E6%95%B0%E6%8D%AE%E5%BA%93/#%E5%8F%82%E8%80%83 "参考")参考 - [基于Oracle Linux 7.5实现了Oracle Database 11gR2 企业版容器化运行](https://gitee.com/rancococ-code/docker-oracle11g) - [利用Docker建立Oracle 11g实验环境](https://zhangjoto.github.io/li-yong-dockerjian-li-oracle-11gshi-yan-huan-jing.html) - docker 限制内存, 报`not support swap limit capabilities`,解决方法: Edit the /etc/default/grub file. Set the GRUB\_CMDLINE\_LINUX value as follows: GRUB\_CMDLINE\_LINUX="cgroup\_enable=memory swapaccount=1" Save and close the file. Update GRUB. $ sudo update-grub Reboot your system. ## [](http://dbase.cc/2018/09/19/docker/14_docker%E5%BA%94%E7%94%A8-%E9%83%A8%E7%BD%B2ORACLE-11g%E5%8D%95%E5%AE%9E%E4%BE%8B%E6%95%B0%E6%8D%AE%E5%BA%93/#expect%E7%9A%84%E7%94%A8%E6%B3%95%E7%A4%BA%E4%BE%8B "expect的用法示例")expect的用法示例 RUN yum -y install expect && \\ unzip -qo /tmp/p6880880\_112000\_Linux-x86\-64.zip -d /tmp && \\ unzip -qo /tmp/p27967757\_112040\_Linux-x86\-64.zip -d /tmp && \\ unzip -qo /tmp/p27923163\_112040\_Linux-x86\-64.zip -d /tmp && \\ rm -rf /u01/app/oracle/product/11.2.0/db\_1/OPatch && \\ chown -R oracle:oinstall /tmp/OPatch && \\ mv /tmp/OPatch /u01/app/oracle/product/11.2.0/db\_1/ && \\ printf "%s\\n" '#!/usr/bin/expect' \\ 'spawn opatch apply -local /tmp/27967757/27734982/' \\ 'expect "\*proceed\*" {send "y\\r"}' \\ 'expect "\*Email\*" {send "\\r"}' \\ 'expect "\*security\*" {send "y\\r"}' \\ 'expect "\*patching" {send "y\\r"}' \\ 'interact' \\ >> /tmp/27967757/27734982/psu\_apply.sh && \\ printf "%s\\n" '#!/usr/bin/expect' \\ 'spawn opatch apply -local /tmp/27923163/' \\ 'expect "\*proceed\*" {send "y\\r"}' \\ 'expect "\*Email\*" {send "\\r"}' \\ 'expect "\*security\*" {send "y\\r"}' \\ 'expect "\*patching" {send "y\\r"}' \\ 'interact' \\ >> /tmp/27923163/jvm\_apply.sh && \\ chmod +x /tmp/27967757/27734982/psu\_apply.sh && \\ chmod +x /tmp/27923163/jvm\_apply.sh && \\ su - oracle -c "/tmp/27967757/27734982/psu\_apply.sh" && \\ su - oracle -c "/tmp/27923163/jvm\_apply.sh" ## [](http://dbase.cc/2018/09/19/docker/14_docker%E5%BA%94%E7%94%A8-%E9%83%A8%E7%BD%B2ORACLE-11g%E5%8D%95%E5%AE%9E%E4%BE%8B%E6%95%B0%E6%8D%AE%E5%BA%93/#%E6%95%B4%E5%90%88%E6%88%90%E4%B8%80%E4%B8%AAdockerfile "整合成一个dockerfile")整合成一个dockerfile ### [](http://dbase.cc/2018/09/19/docker/14_docker%E5%BA%94%E7%94%A8-%E9%83%A8%E7%BD%B2ORACLE-11g%E5%8D%95%E5%AE%9E%E4%BE%8B%E6%95%B0%E6%8D%AE%E5%BA%93/#%E5%88%B6%E4%BD%9C%E9%95%9C%E5%83%8F "制作镜像")制作镜像 FROM 10.240.4.159/os/oraclelinux:6.10 ADD Shanghai /etc/localtime ADD rlwrap\-0.42.tar.gz /tmp/ ADD p13390677\_112040\_Linux-x86\-64\_1of7.zip /tmp/ ADD p13390677\_112040\_Linux-x86\-64\_2of7.zip /tmp/ ADD p6880880\_112000\_Linux-x86\-64.zip /tmp/ ADD p27967757\_112040\_Linux-x86\-64.zip /tmp/ ADD p27923163\_112040\_Linux-x86\-64.zip /tmp/ ADD db\_install.rsp /tmp/ ADD ocm.rsp /tmp/ocm.rsp ADD p6880880\_112000\_Linux-x86\-64.zip /tmp/ ADD p27967757\_112040\_Linux-x86\-64.zip /tmp/ ADD p27923163\_112040\_Linux-x86\-64.zip /tmp/ RUN rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-oracle && \\ yum -y install oracle-rdbms-server\-11gR2-preinstall unzip readline-devel.x86\_64 lrzsz && \\ cd /tmp/rlwrap\-0.42 && ./configure && make && make install && \\ echo "Create /u01/app dir..." && \\ mkdir -p -m 755 /u01/app/dumpdir && \\ mkdir -p -m 755 /u01/app/oradata && \\ mkdir -p -m 755 /u01/app/oraInventory && \\ mkdir -p -m 755 /u01/app/oracle && \\ mkdir -p -m 755 /u01/app/oracle/product/11.2.0/db\_1 && \\ chown -R oracle:oinstall /u01 && \\ unzip -oq /tmp/p13390677\_112040\_Linux-x86\-64\_1of7.zip -d /tmp/ && \\ unzip -oq /tmp/p13390677\_112040\_Linux-x86\-64\_2of7.zip -d /tmp/ && \\ chown -R oracle:oinstall /tmp/database && \\ printf "%s\\n" 'export ORACLE\_SID=orcl' \\ 'export ORACLE\_BASE=/u01/app/oracle' \\ 'export ORACLE\_HOME=$ORACLE\_BASE/product/11.2.0/db\_1' \\ 'export LD\_LIBRARY\_PATH=$ORACLE\_HOME/lib:$ORACLE\_HOME/lib32' \\ 'export PATH=$PATH:$ORACLE\_HOME/bin:$ORACLE\_HOME/OPatch' \\ 'export NLS\_LANG=AMERICAN\_AMERICA.ZHS16GBK' \\ 'export NLS\_DATE\_FORMAT="yyyy-mm-dd hh24:mi:ss"' \\ 'alias sqlplus="rlwrap sqlplus"' \\ 'alias rman="rlwrap rman"' \\ >>/home/oracle/.bash\_profile && \\ cat /etc/security/limits.conf | grep -v oracle | tee /etc/security/limits.conf && \\ su oracle -c "/tmp/database/runInstaller -ignorePrereq -ignoreSysPrereqs -waitforcompletion -silent -responseFile /tmp/db\_install.rsp 2>&1" && \\ /u01/app/oraInventory/orainstRoot.sh && \\ /u01/app/oracle/product/11.2.0/db\_1/root.sh && \\ unzip -oq /tmp/p6880880\_112000\_Linux-x86\-64.zip -d /tmp/ && \\ rm -rf /u01/app/oracle/product/11.2.0/db\_1/OPatch && \\ chown -R oracle:oinstall /tmp/OPatch && \\ mv /tmp/OPatch /u01/app/oracle/product/11.2.0/db\_1/ && \\ unzip -qo /tmp/p27967757\_112040\_Linux-x86\-64.zip -d /tmp && \\ unzip -qo /tmp/p27923163\_112040\_Linux-x86\-64.zip -d /tmp && \\ su - oracle -c "opatch apply -silent -ocmrf /tmp/ocm.rsp -local /tmp/27967757/27734982" && \\ su - oracle -c "opatch apply -silent -ocmrf /tmp/ocm.rsp -local /tmp/27923163" && \\ printf "%s\\n" '\[GENERAL\]' \\ 'RESPONSEFILE\_VERSION="11.2"' \\ 'CREATE\_TYPE="CUSTOM"' \\ '\[oracle.net.ca\]' \\ 'INSTALLED\_COMPONENTS={"server","net8","javavm"}' \\ 'INSTALL\_TYPE=""typical""' \\ 'LISTENER\_NUMBER=1' \\ 'LISTENER\_NAMES={"LISTENER"}' \\ 'LISTENER\_PROTOCOLS={"TCP;1521"}' \\ 'LISTENER\_START=""LISTENER""' \\ 'NAMING\_METHODS={"TNSNAMES","ONAMES","HOSTNAME"}' \\ 'NSN\_NUMBER=1' \\ 'NSN\_NAMES={"EXTPROC\_CONNECTION\_DATA"}' \\ 'NSN\_SERVICE={"PLSExtProc"}' \\ 'NSN\_PROTOCOLS={"TCP;HOSTNAME;1521"}' \\ >>/tmp/netca.rsp && \\ su oracle -c "/u01/app/oracle/product/11.2.0/db\_1/bin/netca -silent -responseFile /tmp/netca.rsp" && \\ printf "%s\\n" '\[GENERAL\]' \\ 'RESPONSEFILE\_VERSION = "11.2.0"' \\ 'OPERATION\_TYPE = "createDatabase"' \\ '\[CREATEDATABASE\]' \\ 'GDBNAME = "orcl"' \\ 'DATABASECONFTYPE = "SI"' \\ 'SID = "orcl"' \\ 'TEMPLATENAME = "General\_Purpose.dbc"' \\ 'SYSPASSWORD = "Center08"' \\ 'SYSTEMPASSWORD = "Center08"' \\ 'DATAFILEDESTINATION=/u01/app/oradata' \\ 'RECOVERYAREADESTINATION=/u01/app/oradata' \\ 'STORAGETYPE=FS' \\ 'CHARACTERSET="ZHS16GBK"' \\ 'INITPARAMS="java\_jit\_enabled=false,memory\_target=0,sga\_target=2048,pga\_aggregate\_target=300,processes=300,open\_cursors=300"' \\ 'AUTOMATICMEMORYMANAGEMENT="False"' \\ > /tmp/dbca.rsp && chown oracle:oinstall /tmp/dbca.rsp && chmod +x /tmp/dbca.rsp && \\ su oracle -c "/u01/app/oracle/product/11.2.0/db\_1/bin/dbca -silent -responseFile /tmp/dbca.rsp" && \\ sed -i "s/#PermitRootLogin.\*/PermitRootLogin yes/g" /etc/ssh/sshd\_config && \\ echo "export LANG=en\_US.utf8" >> /etc/profile && \\ yum clean all && \\ rm -rf /tmp/\* && rm -rf /var/log/\* && rm -rf /var/cache/\* ### [](http://dbase.cc/2018/09/19/docker/14_docker%E5%BA%94%E7%94%A8-%E9%83%A8%E7%BD%B2ORACLE-11g%E5%8D%95%E5%AE%9E%E4%BE%8B%E6%95%B0%E6%8D%AE%E5%BA%93/#%E6%B7%BB%E5%8A%A0%E5%88%B0rancher%E4%B8%AD "添加到rancher中")添加到rancher中 1. 登陆Rancher(1.6.21),编排工具用的是默认的Cattle 2. 应用 - 用户 - 添加应用 - 名称:\[ORACLE\] - 创建(已有服务此步忽略) 3. 添加服务 - 在添加服务页面添写配置如下信息 - 创建 名称: dev-erp 选择镜像: 10.240.4.159/app/oracledatabase:11.2.0.4\-run 端口映射: 1521:1521/tcp 16221:22/tcp 网络 - 主机名: dev-erp 安全/主机: 主机完全访问权限 内存限制 4096 调度 - 在指定主机上运行全部容器: docker162 4.启动应用(容器) - 检查检查并登录dev-erp服务,无问题后`shutdown immediate`数据库 5.登陆宿主机,执行以下命令 docker ps -a | grep erp cdf49b075fb6 10.240.4.159/app/oracledatabase:11.2.0.4\-run "/.r/r /usr/sbin/ent…" 38 minutes ago Up 38 minutes r-Oracle-erp-dev\-1\-77fbbce2 mkdir -p /docker\_mnt/oracledb/dev-erp\-20180925 cd /docker\_mnt/oracledb/dev-erp\-20180925 docker cp cdf49b075fb6:/u01/app/oradata . docker cp cdf49b075fb6:/u01/app/dumpdir . docker cp cdf49b075fb6:/u01/app/oracle/fast\_recovery\_area . docker cp cdf49b075fb6:/u01/app/oracle/diag . docker cp cdf49b075fb6:/u01/app/oracle/product/11.2.0/db\_1/dbs . 6.升级 卷 - 添加卷: /docker\_mnt/oracledb/dev-pos\-20180925/oradata:/u01/app/oradata /docker\_mnt/oracledb/dev-pos\-20180925/dpdump:/u01/app/dumpdir /docker\_mnt/oracledb/dev-pos\-20180925/fast\_recovery\_area:/u01/app/oracle/fast\_recovery\_area /docker\_mnt/oracledb/dev-pos\-20180925/diag:/u01/app/oracle/diag /docker\_mnt/oracledb/dev-pos\-20180925/dbs:/u01/app/oracle/product/11.2.0/db\_1/dbs