583 lines
28 KiB
Markdown
583 lines
28 KiB
Markdown
---
|
|||
|
|
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
|