Docker中安裝Oracle 19c
參考:
https://blog.csdn.net/qianglei6077/article/details/103886056
https://github.com/oracle/docker-images
https://github.com/oracle/docker-images/tree/master/OracleDatabase/SingleInstance
https://github.com/oracle/docker-images/tree/master/OracleDatabase/RAC
------------------ Docker 安裝19.3企業版 cd / git clone https://github.com/oracle/docker-images.git cd /docker-images/OracleDatabase/SingleInstance/dockerfiles/19.3.0/ wget wget 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> 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
Docker製作Oracle19c映象
1. 介質準備
1.1. 下載Oracle docker build file
近期Oracle 官方釋出了19.3 版本的docke-images 構建程式,可在這裡下載:可到github下載docker-images-master.zip
將下好的docker-images-master.zip 解壓放在 /Users/myz/Docker/ 目錄下:
cd /Users/myz/Docker/docker-images-master/OracleDatabase/SingleInstance/dockerfiles/19.3.0/
1.2. 下載Oracle19c 預安裝程式
手動下載oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm ,同樣放在19.3.0/ 目錄下
下載地址:
1.3. 準備Oracle19c的安裝程式
下載19C安裝介質(可從官網) LINUX.X64_193000_db_home.zip同樣放在19.3.0/ 目錄下
其他可根據需要 把常用的安裝包也放到這個位置 下, 如我常用 rlwrap-0.42-1.el6.x86_64.rpm
2. 配置 Oracle image
2.1. 修改Dockerfile
使用自帶的oraclelinux:7-slim 及用官網介紹的方法遇到一些問題不好解決. 後來換成我常用的基礎映象centos:7.6.1810 加Oracle預安裝檔案oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm最後成功構建 .
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/ ....
2.2. 修改setupLinuxEnv.sh
使用本地安裝preinstall 包, 及增加些其他常用工具包;
vi setupLinuxEnv.sh … mkdir -p $ORACLE_BASE/scripts/setup && \ mkdir $ORACLE_BASE/scripts/startup && \ ln -s $ORACLE_BASE/scripts /docker-entrypoint-initdb.d && \ mkdir $ORACLE_BASE/oradata && \ mkdir -p $ORACLE_HOME && \ 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 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 \ && yum -y localinstall /opt/install/rlwrap-0.42-1.el6.x86_64.rpm && \ rm -rf /var/cache/yum && \ ln -s $ORACLE_BASE/$PWD_FILE /home/oracle/ && \ echo oracle:welcome1 | chpasswd && \ echo root:welcome1 | chpasswd && \ chown -R oracle:dba $ORACLE_BASE
2.3. 修改installDBBinaries.sh 檔案
vi installDBBinaries.sh
…
# Temp location
#rm -rf /tmp/* && \
…
這裡需要註釋掉 rm /tmp/* 動作, 不然會報如下錯誤:
rm: cannot remove '/tmp/ks-script-6pKh_p': Operation not permitted
rm: cannot remove '/tmp/oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm': Operation not permitted
rm: cannot remove '/tmp/yum.log': Operation not permitted
Removing intermediate container 508f7c0f5041
The command '/bin/sh -c chmod ug+x $INSTALL_DIR/*.sh && sync && $INSTALL_DIR/$INSTALL_DB_BINARIES_FILE $DB_EDITION' returned a non-zero code: 1ERROR: Oracle Database Docker Image was NOT successfully created.ERROR: Check the output and correct any reported problems with the docker build operation.
2.4 .其它視需要
預設資料庫 CDB模式, 資料庫名 ORCLCDB, PDB name 為 ORCLDPB1 (可在run時指定)
其他可視需要修改 createDB.sh 及runOracle.sh
3. 構建 Oracle映象
Dockfile所在上一級目錄下下執行build
./buildDockerImage.sh -v 19.3.0 -e
大概10分鐘左右成功完成映象製作
如果過程中報錯,需要仔細檢視報錯檔案及內容進行排錯;
接下來就可以透過該映象來安裝部署Oracle19c例項....
Docker安裝Oracle19c
2. 透過映象建立例項
2.1. 建立例項
把資料檔案 ,引數配置檔案 ,tns ,監聽掛載出來
分配2G記憶體,設定時區, 容器中的主機名, 容器名, 埠映身等
mkdir -p /Users/myz/Docker/Oracle/19.3/ --執行建立 docker run -e TZ="Asia/Shanghai" -itd -h ora193 -m 2048m --name ora193 \ -p 1521:1521 -p 5500:5500 \ -e ORACLE_SID=mycdb \ -e ORACLE_PDB=pdb1 \ -v /Users/myz/Docker/Oracle/19.3/:/opt/oracle/oradata oracle/database:19.3.0-ee
透過命令:docker logs -f ora193 觀察部署進度,預估15-25分鐘完成
myzmac:Oracle myz$ docker logs -f ora193ORACLE PASSWORD FOR SYS, SYSTEM AND PDBADMIN: C1eNxx1/a+k=1LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 21-FEB-2020 00:03:01Copyright (c) 1991, 2019, Oracle. All rights reserved.Starting /opt/oracle/product/19c/dbhome_1/bin/tnslsnr: please wait...TNSLSNR for Linux: Version 19.0.0.0.0 - ProductionSystem parameter file is /opt/oracle/product/19c/dbhome_1/network/admin/listener.oraLog messages written to /opt/oracle/diag/tnslsnr/ora193a/listener/alert/log.xmlListening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1)))Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=0.0.0.0)(PORT=1521)))Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))STATUS of the LISTENER------------------------Alias LISTENERVersion TNSLSNR for Linux: Version 19.0.0.0.0 - ProductionStart Date 21-FEB-2020 00:03:01Uptime 0 days 0 hr. 0 min. 0 secTrace Level offSecurity ON: Local OS AuthenticationSNMP OFFListener Parameter File /opt/oracle/product/19c/dbhome_1/network/admin/listener.oraListener Log File /opt/oracle/diag/tnslsnr/ora193/listener/alert/log.xmlListening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=0.0.0.0)(PORT=1521)))The listener supports no servicesThe command completed successfullyPrepare for db operation8% completeCopying database files31% completeCreating and starting Oracle instance32% complete36% complete<---這裡時間比較久40% complete43% complete46% completeCompleting Database Creation51% complete54% completeCreating Pluggable Databases58% complete77% completeExecuting Post Configuration Actions100% completeDatabase creation complete. For details check the logfiles at: /opt/oracle/cfgtoollogs/dbca/MYCDB.Database Information:Global Database Name: MYCDBSystem Identifier(SID): MYCDBLook at the log file "/opt/oracle/cfgtoollogs/dbca/MYCDB/MYCDB.log" for further details.SQL*Plus: Release 19.0.0.0.0 - Production on Fri Feb 21 00:25:35 2020Version 19.3.0.0.0Copyright (c) 1982, 2019, Oracle. All rights reserved.Connected to:Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - ProductionVersion 19.3.0.0.0SQL>System altered.SQL>System altered.SQL>Pluggable database altered.SQL>PL/SQL procedure successfully completed.SQL> Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - ProductionVersion 19.3.0.0.0The Oracle base remains unchanged with value /opt/oracle#########################DATABASE IS READY TO USE!#########################The following output is now a tail of the alert.log:ORCLPDB1(3):ALTER DATABASE DEFAULT TABLESPACE "USERS"ORCLPDB1(3):Completed: ALTER DATABASE DEFAULT TABLESPACE "USERS"2020-02-21T00:25:35.547850+08:00ALTER SYSTEM SET control_files='/opt/oracle/oradata/MYCDB/control01.ctl' SCOPE=SPFILE;2020-02-21T00:25:35.568154+08:00ALTER SYSTEM SET local_listener='' SCOPE=BOTH; ALTER PLUGGABLE DATABASE PDB1 SAVE STATECompleted: ALTER PLUGGABLE DATABASE PDB1 SAVE STATEXDB initialized.^Cmyzmac:Oracle myz$
當看到顯示 DATABASE IS READY TO USE!
表示部署完成, 可以ctrl+c退出Log, 檢視例項:
myzmac:Oracle myz$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 02c23cc4cda5 oracle/database:19.3.0-ee "/bin/sh -c 'exec $O…" 27 minutes ago Up 27 minutes (healthy) 0.0.0.0:1521->1521/tcp, 0.0.0.0:5500->5500/tcp ora193
3. 使用
設定sys,system等使用者密碼
docker exec ora193 ./setPassword.sh welcome1
3.1. 客戶端連線
sqlplus sys/oracle@//127.0.0.1:1521/mycdb as sysdbaSQL> sho pdbs CON_ID CON_NAME OPEN MODE RESTRICTED---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 PDB1 READ WRITE NO SQL> sqlplus sys/oracle@//127.0.0.1:1521/pdb1 as sysdbaSQL> sho con_name CON_NAME------------------------------PDB1 SQL>
3.2. 容器本地連線
需要配置環境變數,不然報如下錯
myzmac:Oracle myz$ docker exec -it ora193a bash[oracle@ora193a ~]$ sqlplus / as sysdba SQL*Plus: Release 19.0.0.0.0 - Production on Fri Feb 21 00:33:03 2020Version 19.3.0.0.0Copyright (c) 1982, 2019, Oracle. All rights reserved.ERROR:ORA-12162: TNS:net service name is incorrectly specifiedEnter user-name: ^C[oracle@ora193a ~]$ --這裡報錯是因為沒有配環境變數
配置bash_profile
vi ~/.bash_profile --增加如下內容 export ORACLE_BASE=/opt/oracle export ORACLE_HOME=/opt/oracle/product/19c/dbhome_1 export EDITOR=vi stty erase ^H vi ~/.bashrc --增加如下內容 alias sqlplus='rlwrap sqlplus' alias rman='rlwrap rman' export ORACLE_SID=MYCDB PS1='\[\e[37;40m\][\[\e[32;40m\]\u\[\e[37;40m\]@\h \[\e[35;40m\]\W\[\e[0m\]]\$' alias tf='tail -100f /opt/oracle/diag/rdbms/mycdb/MYCDB/trace/al*.log' alias tf100='tail -100 /opt/oracle/diag/rdbms/mycdb/MYCDB/trace/al*.log|more' alias tf1000='tail -1000 /opt/oracle/diag/rdbms/mycdb/MYCDB/trace/al*.log|more'
不知道為什麼ORACLEA_SID寫到.bash_profile中並不生效.. 改到bashrc中了
重新登入
[oracle@ora193~]$ sqlplus / as sysdba SQL*Plus: Release 19.0.0.0.0 - Production on Tue Dec 31 20:57:15 2019Version 19.3.0.0.0Copyright (c) 1982, 2019, Oracle. All rights reserved.Connected to:Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - ProductionVersion 19.3.0.0.0SQL>
4. 其他操作, 如遷移容器:
匯出該容器,做為新的映象 , 過程為 容器-> 匯出為映象-> scp-> 匯入映象->建立例項
--匯出 docker export 02c23cc4cda5 > 19c.tar --複製新映象到其他環境後然後匯入tar包(匯入後是映象)docker import 19c.tar oracle19c:19.3 --就可以建立個新的容器出來, 如果是本機注意外掛目錄, 及映身埠的不同
Docker安裝Oracle 19c
安裝Oracle 19c
有時候為了試驗,需要安裝Oracle新版本資料庫,由於安裝比較繁瑣耗時,所以可透過docker快速安裝部署。
說明
有兩種方式安裝:
1.透過官方dockerfile自己編譯映象安裝
2.透過已編譯好的映象安裝(已上傳到hub.docker.com倉庫中)
下載官方oracle的docker映象
目前支援以上幾個版本的docker安裝。
開始安裝
1. 下載官方的dockerfile:
我們看到是存在19.3.0的dockerfile的,同時檢查其安裝的安裝包檔名:
2. 將安裝包複製到該目錄下,執行開始安裝:
需要提前下載Oracle安裝介質,檔名預設是不需要更改的,應該是
LINUX.X64_193000_db_home.zip
,然後將其複製到對應版本的目錄下即可。
-e表示企業版
當出現上面的提示,就表示映象製作完成了,剩下就是利用該映象啟動容器即可。
3. 啟動容器:安裝資料庫
注意:oracle 企業版的docker run的命令格式如下(XE版的都有所區別):
注意:
/oracle/oradata
目錄許可權一定要正確,在容器中oracle使用者的uid是54321,所以要保證容器內的oracle使用者有許可權讀寫該目錄。
如建立oracle使用者且uid是54321:
注:如果"DATABASE IS READY TO USE!"提示資訊,表示資料庫已成功安裝了。
登陸主機或資料庫進行操作:
至此就完成了docker安裝Oracle 19c!對於測試、試驗非常方便~
Oracle Database on Docker
https://github.com/oracle/docker-images
Sample Docker build files to facilitate installation, configuration, and environment setup for DevOps users. For more information about Oracle Database please see the Oracle Database Onlin e Documentation.
How to build and run
This project offers sample Dockerfiles for:
- Oracle Database 19c (19.3.0) Enterprise Edition and Standard Edition 2
- Oracle Database 18c (18.4.0) Express Edition (XE)
- Oracle Database 18c (18.3.0) Enterprise Edition and Standard Edition 2
- Oracle Database 12c Release 2 (12.2.0.2) Enterprise Edition and Standard Edition 2
- Oracle Database 12c Release 1 (12.1.0.2) Enterprise Edition and Standard Edition 2
- Oracle Database 11g Release 2 (11.2.0.2) Express Edition (XE)
To assist in building the images, you can use the script. See below for instructions and usage.
The
buildDockerImage.sh
script is just a utility shell script that performs MD5 checks and is an easy way for beginners to get started. Expert users are welcome to directly call
docker b
uild
with their prefered set of parameters.
Building Oracle Database Docker Install Images
IMPORTANT: You will have to provide the installation binaries of Oracle Database (except for Oracle Database 18c XE) and put them into the
dockerfiles/<version>
folder. You only need
to provide the binaries for the edition you are going to install. The binaries can be downloaded from the [Oracle Technology Network](
dition/downloads/index.html), make sure you use the linux link:
Linux x86-64. The needed file is named
linuxx64__database.zip. You also have to make sure to have internet conne
ctivity for yum. Note that you must not uncompress the binaries. The script will handle that for you and fail if you uncompress them manually!
Before you build the image make sure that you have provided the installation binaries and put them into the right folder. Once you have chosen which edition and version you want to build an
image of, go into the
dockerfiles folder and run the
buildDockerImage.sh script:
[oracle@localhost dockerfiles]$ ./buildDockerImage.sh -h
Usage: buildDockerImage.sh -v [version] [-e
| -s | -x] [-i] [-o] [Docker build option]
Builds a Docker Image
for Oracle Database.
Parameters:
-
v: version to build
…back 1 page
Oracle Database on Docker
Sample Docker build files to facilitate installation, configuration, and environment setup for DevOps users. For more information about Oracle Database please see the Oracle Database Onlin e Documentation.
How to build and run
This project offers sample Dockerfiles for:
- Oracle Database 19c (19.3.0) Enterprise Edition and Standard Edition 2
- Oracle Database 18c (18.4.0) Express Edition (XE)
- Oracle Database 18c (18.3.0) Enterprise Edition and Standard Edition 2
- Oracle Database 12c Release 2 (12.2.0.2) Enterprise Edition and Standard Edition 2
- Oracle Database 12c Release 1 (12.1.0.2) Enterprise Edition and Standard Edition 2
- Oracle Database 11g Release 2 (11.2.0.2) Express Edition (XE)
To assist in building the images, you can use the script. See below for instructions and usage.
The
buildDockerImage.sh
script is just a utility shell script that performs MD5 checks and is an easy way for beginners to get started. Expert users are welcome to directly call
docker b
uild
with their prefered set of parameters.
Building Oracle Database Docker Install Images
IMPORTANT: You will have to provide the installation binaries of Oracle Database (except for Oracle Database 18c XE) and put them into the
dockerfiles/<version>
folder. You only need
to provide the binaries for the edition you are going to install. The binaries can be downloaded from the [Oracle Technology Network](
dition/downloads/index.html), make sure you use the linux link:
Linux x86-64. The needed file is named
linuxx64__database.zip. You also have to make sure to have internet conne
ctivity for yum. Note that you must not uncompress the binaries. The script will handle that for you and fail if you uncompress them manually!
Before you build the image make sure that you have provided the installation binaries and put them into the right folder. Once you have chosen which edition and version you want to build an
image of, go into the
dockerfiles folder and run the
buildDockerImage.sh script:
[oracle@localhost dockerfiles]$ ./buildDockerImage.sh -h
Usage: buildDockerImage.sh -v [version] [-e | -s | -x] [-i] [-o] [Docker build
option]
Builds a Docker Image
for Oracle Database.
Parameters:
-v: version
to build
Choose one
of:
11.2
.0
.2
12.1
.0
.2
12.2
.0
.1
18.3
.0
18.4
.0
19.3
.0
-e: creates image based
on
'Enterprise Edition'
-s: creates image based
on
'Standard Edition 2'
-x: creates image based
on
'Express Edition'
-i: ignores the MD5 checksums
-o: passes
on Docker build
option
*
select one edition only: -e, -s,
or -x
LICENSE UPL
1.0
Copyright (c)
2014
-2019 Oracle
and/
or its affiliates. All rights reserved.
IMPORTANT: The resulting images will be an image with the Oracle binaries installed. On first startup of the container a new database will be created, the following lines highlight when
the database is ready to be used:
######
######
######
######
#
DATABASE IS READY TO USE!
######
######
######
######
#
You may extend the image with your own Dockerfile and create the users and tablespaces that you may need.
The character set for the database is set during creating of the database. 11g Express Edition supports only UTF-8. You can set the character set for the Standard Edition 2 and Enterprise E
dition during the first run of your container and may keep separate folders containing different tablespaces with different character sets.
Running Oracle Database in a Docker container
Running Oracle Database Enterprise and Standard Edition 2 in a Docker container
To run your Oracle Database Docker image use the docker run command as follows:
docker run --name <container name> \
-p <host port>:
1521 -p <host port>:
5500 \
-e ORACLE_SID=<your SID> \
-e ORACLE_PDB=<your PDB name> \
-e ORACLE_PWD=<your database passwords> \
-e ORACLE_CHARACTERSET=<your character
set> \
-v [<host mount point>:]/opt/oracle/oradata \
oracle/database:
19.3
.0-ee
Parameters:
--name: The name
of the container (
default:
auto generated)
-p: The port mapping
of the host port
to the container port.
Two ports are exposed:
1521 (Oracle Listener),
5500 (OEM Express)
-e ORACLE_SID: The Oracle Database SID that should be used (
default: ORCLCDB)
-e ORACLE_PDB: The Oracle Database PDB name that should be used (
default: ORCLPDB1)
-e ORACLE_PWD: The Oracle Database SYS, SYSTEM
and PDB_ADMIN password (
default:
auto generated)
-e ORACLE_CHARACTERSET:
The character
set
to use
when creating the database (
default: AL32UTF8)
-v /opt/oracle/oradata
The data volume
to use
for the database.
Has
to be writable
by the Unix
"oracle" (uid:
54321) user inside the container!
If omitted the database will
not be persisted over container recreation.
-v /opt/oracle/scripts/startup | /docker-entrypoint-initdb.d/startup
Optional: A volume
with
custom scripts
to be run after database startup.
For further details see the
"Running scripts after setup and on startup" section below.
-v /opt/oracle/scripts/setup | /docker-entrypoint-initdb.d/setup
Optional: A volume
with
custom scripts
to be run after database setup.
For further details see the
"Running scripts after setup and on startup" section below.
Once the container has been started and the database created you can connect to it just like to any other database:
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>
The Oracle Database inside the container also has Oracle Enterprise Manager Express configured. To access OEM Express, start your browser and follow the URL:
https:
//localhost:5500/em/
NOTE: Oracle Database bypasses file system level caching for some of the files by using the
O_DIRECT
flag. It is not advised to run the container on a file system that does not suppor
t the
O_DIRECT
flag.
Changing the admin accounts passwords
On the first startup of the container a random password will be generated for the database if not provided. You can find this password in the output line:
ORACLE PASSWORD
FOR SYS, SYSTEM
AND PDBADMIN:
The password for those accounts can be changed via the docker exec command. Note, the container has to be running:
docker exec
<
container
name> ./setPassword.sh
<
your
password>
Running Oracle Database 18c Express Edition in a Docker container
To run your Oracle Database 18c Express Edition Docker image use the docker run command as follows:
docker run --name <container name> \
-p <host port>:
1521 -p <host port>:
5500 \
-e ORACLE_PWD=<your database passwords> \
-e ORACLE_CHARACTERSET=<your character
set> \
-v [<host mount point>:]/opt/oracle/oradata \
oracle/database:
18.4
.0-xe
Parameters:
--name: The name
of the container (
default:
auto generated)
-p: The port mapping
of the host port
to the container port.
Two ports are exposed:
1521 (Oracle Listener),
8080 (APEX)
-e ORACLE_PWD: The Oracle Database SYS, SYSTEM
and PDB_ADMIN password (
default:
auto generated)
-e ORACLE_CHARACTERSET:
The character
set
to use
when creating the database (
default: AL32UTF8)
-v /opt/oracle/oradata
The data volume
to use
for the database.
Has
to be writable
by the Unix
"oracle" (uid:
54321) user inside the container!
If omitted the database will
not be persisted over container recreation.
-v /opt/oracle/scripts/startup | /docker-entrypoint-initdb.d/startup
Optional: A volume
with
custom scripts
to be run after database startup.
For further details see the
"Running scripts after setup and on startup" section below.
-v /opt/oracle/scripts/setup | /docker-entrypoint-initdb.d/setup
Optional: A volume
with
custom scripts
to be run after database setup.
For further details see the
"Running scripts after setup and on startup" section below.
Once the container has been started and the database created you can connect to it just like to any other database:
sqlplus sys
/<your password>@//localhost:
1521/XE
as sysdba
sqlplus system
/<your password>@//localhost:
1521/XE
sqlplus pdbadmin
/<your password>@//localhost:
1521/XEPDB1
The Oracle Database inside the container also has Oracle Enterprise Manager Express configured. To access OEM Express, start your browser and follow the URL:
https:
//localhost:5500/em/
On the first startup of the container a random password will be generated for the database if not provided. You can find this password in the output line:
ORACLE PASSWORD
FOR SYS
AND SYSTEM:
Note: The ORACLE_SID for Express Edition is always
XE
and cannot be changed, hence there is no ORACLE_SID parameter provided for the XE build.
The password for those accounts can be changed via the
docker exec command.
Note, the container has to be running:
docker exec/opt/oracle/setPassword.sh
Running Oracle Database 11gR2 Express Edition in a Docker container
To run your Oracle Database Express Edition Docker image use the docker run command as follows:
docker run --name <container name> \
--shm-size=
1g \
-p
1521:
1521 -p
8080:
8080 \
-e ORACLE_PWD=<your database passwords> \
-v [<host mount point>:]/u01/app/oracle/oradata \
oracle/database:
11.2
.0
.2-xe
Parameters:
--name: The name
of the container (
default:
auto generated)
--shm-size: Amount
of Linux
shared memory
-p: The port mapping
of the host port
to the container port.
Two ports are exposed:
1521 (Oracle Listener),
8080 (APEX)
-e ORACLE_PWD: The Oracle Database SYS, SYSTEM
and PDB_ADMIN password (
default:
auto generated)
-v /u01/app/oracle/oradata
The data volume
to use
for the database.
Has
to be writable
by the Unix
"oracle" (uid:
1000) user inside the container!
If omitted the database will
not be persisted over container recreation.
-v /u01/app/oracle/scripts/startup | /docker-entrypoint-initdb.d/startup
Optional: A volume
with
custom scripts
to be run after database startup.
For further details see the
"Running scripts after setup and on startup" section below.
-v /u01/app/oracle/scripts/setup | /docker-entrypoint-initdb.d/setup
Optional: A volume
with
custom scripts
to be run after database setup.
For further details see the
"Running scripts after setup and on startup" section below.
There are two ports that are exposed in this image:
- 1521 which is the port to connect to the Oracle Database.
- 8080 which is the port of Oracle Application Express (APEX).
On the first startup of the container a random password will be generated for the database if not provided. You can find this password in the output line:
ORACLE PASSWORD
FOR SYS
AND SYSTEM:
Note: The ORACLE_SID for Express Edition is always
XE
and cannot be changed, hence there is no ORACLE_SID parameter provided for the XE build.
The password for those accounts can be changed via the
docker exec command.
Note, the container has to be running:
docker exec/u01/app/oracle/setPassword.sh
Once the container has been started you can connect to it just like to any other database:
sqlplus sys
/<your password>@//localhost:
1521/XE
as sysdba
sqlplus system
/<your password>@//localhost:
1521/XE
Running SQL*Plus in a Docker container
You may use the same Docker image you used to start the database, to run
sqlplus
to connect to it, for example:
docker run --rm -ti oracle/database:19.3.0-ee sqlplus pdbadmin/
<
yourpassword>@//
<
db-container-ip>:1521/ORCLPDB1
Another option is to use
docker exec
and run
sqlplus
from within the same container already running the database:
docker exec -ti <container name> sqlplus pdbadmin
@ORCLPDB1
Running scripts after setup and on startup
The docker images can be configured to run scripts after setup and on startup. Currently
sh
and
sql
extensions are supported.
For post-setup scripts just mount the volume
/opt/oracle/scripts/setup
or extend the image to include scripts in this directory.
For post-startup scripts just mount the volume
/opt/oracle/scripts/startup
or extend the image to include scripts in this directory.
Both of those locations are also represented under the symbolic link
/docker-entrypoint-initdb.d
. This is done to provide
synergy with other database Docker images. The user is free to decide whether to put the setup and startup scripts
under
/opt/oracle/scripts
or
/docker-entrypoint-initdb.d
.
After the database is setup and/or started the scripts in those folders will be executed against the database in the container.
SQL scripts will be executed as sysdba, shell scripts will be executed as the current user. To ensure proper order it is
recommended to prefix your scripts with a number. For example
01_users.sql
,
02_permissions.sql
, etc.
Note: The startup scripts will also be executed after the first time database setup is complete.
Note: Use
/u01/app/oracle/scripts/
instead of
/opt/oracle/scripts/
for Express Edition.
The example below mounts the local directory myScripts to
/opt/oracle/myScripts
which is then searched for custom startup scripts:
docker run --name oracle-ee -p
1521:
1521 -v /home/oracle/myScripts:/opt/oracle/scripts/startup -v /home/oracle/oradata:/opt/oracle/oradata oracle/database:
19.
3.
0-ee
Known issues
- The
on CentOS has proven to run into Docker bug #25409. We recommend using
btrfs
orov<br />erlay2
instead. For more details see issue #317.
Frequently asked questions
Please see for frequently asked questions.
Support
Oracle Database in single instance configuration is supported for Oracle Linux 7 and Red Hat Enterprise Linux (RHEL) 7.
For more details please see My Oracle Support note:
Oracle Support for Database Running on Docker (Doc ID 2216342.1)
License
To download and run Oracle Database, regardless whether inside or outside a Docker container, you must download the binaries from the Oracle website and accept the license indicated at that
page.
All scripts and files hosted in this project and GitHub docker-images/OracleDatabase repository required to build the Docker images are, unless otherwise noted, released under license.
Copyright
Copyright (c) 2014-2019 Oracle and/or its affiliates. All rights reserved.
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寶典今日頭條號地址: ........................................................................................................................ ● QQ群號: 230161599 、618766405 ● 微 信群:可加我微 信,我拉大家進群,非誠勿擾 ● 聯絡我請加QQ好友 ( 646634621 ),註明新增緣由 ● 於 2020-03-01 06:00 ~ 2020-03-31 24:00 在西安完成 ● 最新修改時間:2020-03-01 06:00 ~ 2020-03-31 24:00 ● 文章內容來源於小麥苗的學習筆記,部分整理自網路,若有侵權或不當之處還請諒解 ● 版權所有,歡迎分享本文,轉載請保留出處 ........................................................................................................................ ● 小麥苗的微店: ● 小麥苗出版的資料庫類叢書: 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-2683609/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Docker安裝Oracle 19c 詳細教程DockerOracle
- Docker中安裝OracleDockerOracle
- oracle 19c 安裝、解除安裝Oracle
- Oracle 19c的安裝Oracle
- Oracle 19c RPM安裝Oracle
- oracle 19C 靜默安裝Oracle
- Oracle 19c 安裝嚐鮮Oracle
- oracle 19c dataguard silent install (oracle 19c dataguard 靜默安裝)Oracle
- Oracle Database 19c安裝Sample SchemasOracleDatabase
- Oracle 19C 下載和安裝Oracle
- 【DB寶3】在Docker中使用rpm包的方式安裝Oracle 19cDockerOracle
- Docker-ORACLE11安裝DockerOracle
- ogg for oracle 19c 非cdb安裝配置Oracle
- Oracle 19c TFA的安裝與使用Oracle
- Oracle 19C下載和安裝(二)Oracle
- openPower伺服器安裝Oracle 19c伺服器Oracle
- Oracle 19c RAC on Linux 7.6安裝手冊OracleLinux
- Docker安裝Oracle11gDockerOracle
- 使用docker安裝設定oracleDockerOracle
- Oracle 19C的下載和安裝部署(圖形安裝和靜默安裝)Oracle
- 【BUILD_ORACLE】Oracle 19c RAC搭建(五)DB軟體安裝UIOracle
- 【BUILD_ORACLE】Oracle 19c RAC搭建(四)Grid軟體安裝UIOracle
- 在Oracle Linux 7.1上安裝DockerOracleLinuxDocker
- 【BUILD_ORACLE】Oracle 19c RAC搭建(一)安裝資源規劃UIOracle
- docker中安裝mycatDocker
- Docker 中安裝RocketMQDockerMQ
- Ubuntu中安裝DockerUbuntuDocker
- Mac基於docker-compose 安裝 oracleMacDockerOracle
- 在linux中安裝DockerLinuxDocker
- 19c安裝配置
- 安裝RAC 19C
- 【docker巢狀】在docker中的linux中再安裝dockerDocker巢狀Linux
- Oracle 19C Data Guard基礎運維-01安裝物理standbyOracle運維
- Oracle 19c中的TomcatOracleTomcat
- 【ASK_ORACLE】Oracle 19c RAC使用opatchauto安裝補丁報錯OPATCHAUTO-72083Oracle
- 在elementary os中安裝dockerDocker
- Linux 中 Docker 的部署安裝LinuxDocker
- CentOS中利用Docker安裝RedisCentOSDockerRedis