├── config ├── login.sql.tmpl ├── sqlnet.ora.tmpl ├── manifest.11.2.0.2 ├── init.ora.tmpl ├── rlwrap.tmpl ├── manifest.12.2 ├── netrc.example ├── tnsnames.ora.tmpl ├── manifest.18.3 ├── manifest.11.2.0.4 ├── listener.ora.tmpl ├── manifest.12.1 ├── inst.12.2.rsp ├── inst.18.3.rsp ├── inst.12.1.rsp ├── inst.18.4.rsp ├── dbca.12.2.rsp ├── dbca.18.3.rsp ├── dbca.21.rsp ├── inst.19.rsp ├── inst.21.rsp ├── dbca.19.rsp ├── dbca.11.2.0.4.rsp ├── dbca.12.1.rsp ├── env.tmpl ├── manifest.21 ├── dbca.18.4.rsp ├── inst.11.2.0.4.rsp ├── manifest.19 └── manifest ├── upgrade └── readme.txt ├── database ├── README.md └── patches │ └── README.md ├── labs ├── upgrade │ ├── autoupgrade_beta.jar │ └── unplug-plug-relocate │ │ └── docker-compose.yml └── farsync │ ├── config-dataguard.lst │ ├── README.md │ ├── docker-compose.yml │ └── create_compose.sh ├── templates ├── oraclelinux.dockerignore ├── db.dockerignore ├── oraclelinux.dockerfile └── db.dockerfile ├── Dockerfile.11-19.dockerignore ├── Dockerfile.12-19.dockerignore ├── Dockerfile.19-21.dockerignore ├── .gitattributes ├── Dockerfiles ├── Dockerfile.18.4.dockerignore ├── Dockerfile.11.2.0.2.dockerignore ├── Dockerfile.12.2.dockerignore ├── Dockerfile.18.3.dockerignore ├── Dockerfile.19.3.dockerignore ├── Dockerfile.19.9.dockerignore ├── Dockerfile.19.11.dockerignore ├── Dockerfile.19.12.dockerignore ├── Dockerfile.19.14.dockerignore ├── Dockerfile.19.13.dockerignore ├── Dockerfile.21.3.dockerignore ├── Dockerfile.11.2.0.4.dockerignore ├── Dockerfile.12.1.dockerignore ├── Dockerfile.19.6.dockerignore ├── Dockerfile.19.7.dockerignore ├── Dockerfile.19.8.dockerignore ├── Dockerfile.21.5.dockerignore ├── Dockerfile.ahf ├── Dockerfile.11.2.0.4 ├── Dockerfile.11.2.0.2 ├── Dockerfile.12.1 ├── Dockerfile.12.2 ├── Dockerfile.18.4 ├── Dockerfile.18.3 ├── Dockerfile.19.11 ├── Dockerfile.19.12 ├── Dockerfile.19.13 ├── Dockerfile.19.3 ├── Dockerfile.19.6 ├── Dockerfile.19.7 ├── Dockerfile.19.8 ├── Dockerfile.19.9 ├── Dockerfile.21.3 └── Dockerfile.21.5 ├── .gitignore ├── bashrc19 ├── bashrc21 ├── Dockerfile.12-19 ├── Dockerfile.11-19 ├── Dockerfile.19-21 ├── functions.sh └── README.md /config/login.sql.tmpl: -------------------------------------------------------------------------------- 1 | set pages 9999 lines 200 2 | -------------------------------------------------------------------------------- /config/sqlnet.ora.tmpl: -------------------------------------------------------------------------------- 1 | NAME.DIRECTORY_PATH=(TNSNAMES, EZCONNECT, HOSTNAME) 2 | -------------------------------------------------------------------------------- /upgrade/readme.txt: -------------------------------------------------------------------------------- 1 | Place preupgrade.jar and/or autoupgrade.jar files in this directory. 2 | -------------------------------------------------------------------------------- /database/README.md: -------------------------------------------------------------------------------- 1 | # Database Software Directory 2 | Place database software in this directory. 3 | -------------------------------------------------------------------------------- /config/manifest.11.2.0.2: -------------------------------------------------------------------------------- 1 | dd7881a55569d890241f11cd0eeb7d48 oracle-xe-11.2.0-1.0.x86_64.rpm.zip database 11.2.0.2 XE 2 | -------------------------------------------------------------------------------- /labs/upgrade/autoupgrade_beta.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oraclesean/docker-oracle/HEAD/labs/upgrade/autoupgrade_beta.jar -------------------------------------------------------------------------------- /config/init.ora.tmpl: -------------------------------------------------------------------------------- 1 | *.db_name=${ORACLE_SID} 2 | *.db_unique_name=${DB_UNQNAME} 3 | *.pga_aggregate_target=10M 4 | *.sga_target=600M 5 | -------------------------------------------------------------------------------- /config/rlwrap.tmpl: -------------------------------------------------------------------------------- 1 | alias sqlplus="rlwrap \$ORACLE_HOME/bin/sqlplus" 2 | alias rman="rlwrap \$ORACLE_HOME/bin/rman" 3 | alias dgmgrl="rlwrap \$ORACLE_HOME/bin/dgmgrl" 4 | -------------------------------------------------------------------------------- /config/manifest.12.2: -------------------------------------------------------------------------------- 1 | 1841f2ce7709cf909db4c064d80aae79 linuxx64_12201_database.zip database 12.2 SE,EE 2 | 9a66f9ff5ccedf1a253820d2984a540b p6880880_122010_Linux-x86-64.zip opatch 12.2 6880880 3 | -------------------------------------------------------------------------------- /templates/oraclelinux.dockerignore: -------------------------------------------------------------------------------- 1 | # Ignore files 2 | Dockerfile* 3 | .docker* 4 | .git* 5 | README.md 6 | # Ignore all directories 7 | ** 8 | # Include management file 9 | !manageOracle.sh 10 | -------------------------------------------------------------------------------- /Dockerfile.11-19.dockerignore: -------------------------------------------------------------------------------- 1 | # Ignore files 2 | Dockerfile* 3 | .docker* 4 | .git* 5 | README.md 6 | # Ignore all directories 7 | ** 8 | !manageOracle.sh 9 | !bashrc19 10 | !config/login.sql.tmpl 11 | -------------------------------------------------------------------------------- /Dockerfile.12-19.dockerignore: -------------------------------------------------------------------------------- 1 | # Ignore files 2 | Dockerfile* 3 | .docker* 4 | .git* 5 | README.md 6 | # Ignore all directories 7 | ** 8 | !manageOracle.sh 9 | !bashrc19 10 | !config/login.sql.tmpl 11 | -------------------------------------------------------------------------------- /Dockerfile.19-21.dockerignore: -------------------------------------------------------------------------------- 1 | # Ignore files 2 | Dockerfile* 3 | .docker* 4 | .git* 5 | README.md 6 | # Ignore all directories 7 | ** 8 | !manageOracle.sh 9 | !bashrc21 10 | !config/login.sql.tmpl 11 | -------------------------------------------------------------------------------- /config/netrc.example: -------------------------------------------------------------------------------- 1 | # Create a MOS credential file, ./config/.netrc 2 | # Update the login and password fields only 3 | machine login.oracle.com 4 | login mos_user@email.com 5 | password your_mos_password 6 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | *.sh eol=lf 2 | *.conf eol=lf 3 | *.rsp eol=lf 4 | manifest.* eol=lf linguist-language=text 5 | Dockerfile.* eol=lf 6 | Dockerfile.* linguist-detectable=true 7 | Dockerfile.* linguist-language=Dockerfile 8 | -------------------------------------------------------------------------------- /config/tnsnames.ora.tmpl: -------------------------------------------------------------------------------- 1 | ${ALIAS} = 2 | (DESCRIPTION = 3 | (ADDRESS = (PROTOCOL = TCP)(HOST = ${CONTAINER_NAME=0.0.0.0})(PORT = 1521)) 4 | (CONNECT_DATA = 5 | (SERVER = DEDICATED) 6 | (SERVICE_NAME = ${ALIAS}) 7 | ) 8 | ) 9 | -------------------------------------------------------------------------------- /Dockerfiles/Dockerfile.18.4.dockerignore: -------------------------------------------------------------------------------- 1 | # Ignore all directories 2 | ** 3 | # Include version directory 4 | !18.4 5 | # Include database and patch files 6 | # NA 7 | # Ignore files 8 | Dockerfile* 9 | .docker* 10 | .git* 11 | README.md 12 | !manageOracle.sh 13 | -------------------------------------------------------------------------------- /templates/db.dockerignore: -------------------------------------------------------------------------------- 1 | # Ignore files 2 | Dockerfile* 3 | .docker* 4 | .git* 5 | README.md 6 | # Ignore all directories 7 | ** 8 | # Include management file 9 | !manageOracle.sh 10 | # Include template files 11 | !/config/*.tmpl 12 | # Include software installation and patch files 13 | -------------------------------------------------------------------------------- /config/manifest.18.3: -------------------------------------------------------------------------------- 1 | 99a7c4a088a8a502c261e741a8339ae8 LINUX.X64_180000_db_home.zip database 18.3 SE,EE 2 | #2ef79c73660191b1b6d68a5380892b60 oracle-database-ee-18c-1.0-1.x86_64.rpm database 18.3 SE,EE 3 | 9a66f9ff5ccedf1a253820d2984a540b p6880880_180000_Linux-x86-64.zip opatch 18.3 6880880 4 | -------------------------------------------------------------------------------- /Dockerfiles/Dockerfile.11.2.0.2.dockerignore: -------------------------------------------------------------------------------- 1 | # Ignore all directories 2 | ** 3 | # Include version directory 4 | !11.2.0.2 5 | # Include database and patch files 6 | !/database/oracle-xe-11.2.0-1.0.x86_64.rpm.zip 7 | # Ignore files 8 | Dockerfile* 9 | .docker* 10 | .git* 11 | README.md 12 | !manageOracle.sh 13 | -------------------------------------------------------------------------------- /Dockerfiles/Dockerfile.12.2.dockerignore: -------------------------------------------------------------------------------- 1 | # Ignore all directories 2 | ** 3 | # Include version directory 4 | !12.2 5 | # Include database and patch files 6 | !/database/linuxx64_12201_database.zip 7 | !/database/patches/p6880880_190000_Linux-x86-64.zip 8 | # Ignore files 9 | Dockerfile* 10 | .docker* 11 | .git* 12 | README.md 13 | !manageOracle.sh 14 | -------------------------------------------------------------------------------- /Dockerfiles/Dockerfile.18.3.dockerignore: -------------------------------------------------------------------------------- 1 | # Ignore all directories 2 | ** 3 | # Include version directory 4 | !18.3 5 | # Include database and patch files 6 | !/database/LINUX.X64_180000_db_home.zip 7 | !/database/oracle-database-ee-18c-1.0-1.x86_64.rpm 8 | !/database/patches/p6880880_190000_Linux-x86-64.zip 9 | # Ignore files 10 | Dockerfile* 11 | .docker* 12 | .git* 13 | README.md 14 | !manageOracle.sh 15 | -------------------------------------------------------------------------------- /Dockerfiles/Dockerfile.19.3.dockerignore: -------------------------------------------------------------------------------- 1 | # Ignore all directories 2 | ** 3 | # Include version directory 4 | !19.3 5 | # Include database and patch files 6 | !/database/LINUX.X64_193000_db_home.zip 7 | !/database/oracle-database-ee-19c-1.0-1.x86_64.rpm 8 | !/database/patches/p6880880_190000_Linux-x86-64.zip 9 | # Ignore files 10 | Dockerfile* 11 | .docker* 12 | .git* 13 | README.md 14 | !manageOracle.sh 15 | -------------------------------------------------------------------------------- /config/manifest.11.2.0.4: -------------------------------------------------------------------------------- 1 | 1616f61789891a56eafd40de79f58f28 p13390677_112040_Linux-x86-64_1of7.zip database 11.2.0.4 SE,EE 2 | 67ba1e68a4f581b305885114768443d3 p13390677_112040_Linux-x86-64_2of7.zip database 11.2.0.4 SE,EE 3 | 171045894bf20a80ed45fea27207b839 p6880880_112000_Linux-x86-64.zip opatch 11.2.0.4 6880880 4 | eb970c5843f3a69ad6476f7fba1f9a7f p31537677_112040_Linux-x86-64.zip patch 11.2.0.4 31537677 5 | -------------------------------------------------------------------------------- /database/patches/README.md: -------------------------------------------------------------------------------- 1 | # Database Patch Directory 2 | Place database patches in this directory and add a corresponding file, `../../version/install/manifest` that includes the patch ID and full patch name: 3 | ``` 4 | 33457235 p33457235_1913000DBRU_Linux-x86-64.zip 5 | ``` 6 | When applying multiple patches, add the entries in order of application. 7 | 8 | There is no need to add OPatch to this list; it is checked automatically. 9 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.bak 2 | *.swp 3 | */**/*.zip 4 | */**/*.rpm 5 | .dockerignore 6 | .gitignore 7 | #*/install/patches/0* 8 | /config/.mos 9 | /config/.netrc 10 | /demos 11 | /docker-images 12 | /docker-oracle 13 | /upgrade/*.jar 14 | /labs/farsync/srdc* 15 | /labs/farsync/tnsnames.ora 16 | /labs/farsync/listener.ora 17 | /labs/farsync/*.sql 18 | /labs/farsync/*.dgs 19 | /labs/farsync/*.rman 20 | Dockerfile.Upgrade 21 | Dockerfile.db.* 22 | Dockerfile.oraclelinux.* 23 | -------------------------------------------------------------------------------- /Dockerfiles/Dockerfile.19.9.dockerignore: -------------------------------------------------------------------------------- 1 | # Ignore all directories 2 | ** 3 | # Include version directory 4 | !19.9 5 | # Include database and patch files 6 | !/database/LINUX.X64_193000_db_home.zip 7 | !/database/oracle-database-ee-19c-1.0-1.x86_64.rpm 8 | !/database/patches/p6880880_190000_Linux-x86-64.zip 9 | !/database/patches/p31771877_190000_Linux-x86-64.zip 10 | # Ignore files 11 | Dockerfile* 12 | .docker* 13 | .git* 14 | README.md 15 | !manageOracle.sh 16 | -------------------------------------------------------------------------------- /Dockerfiles/Dockerfile.19.11.dockerignore: -------------------------------------------------------------------------------- 1 | # Ignore all directories 2 | ** 3 | # Include version directory 4 | !19.11 5 | # Include database and patch files 6 | !/database/LINUX.X64_193000_db_home.zip 7 | !/database/oracle-database-ee-19c-1.0-1.x86_64.rpm 8 | !/database/patches/p6880880_190000_Linux-x86-64.zip 9 | !/database/patches/p32545013_190000_Linux-x86-64.zip 10 | # Ignore files 11 | Dockerfile* 12 | .docker* 13 | .git* 14 | README.md 15 | !manageOracle.sh 16 | -------------------------------------------------------------------------------- /Dockerfiles/Dockerfile.19.12.dockerignore: -------------------------------------------------------------------------------- 1 | # Ignore all directories 2 | ** 3 | # Include version directory 4 | !19.12 5 | # Include database and patch files 6 | !/database/LINUX.X64_193000_db_home.zip 7 | !/database/oracle-database-ee-19c-1.0-1.x86_64.rpm 8 | !/database/patches/p6880880_190000_Linux-x86-64.zip 9 | !/database/patches/p32904851_190000_Linux-x86-64.zip 10 | # Ignore files 11 | Dockerfile* 12 | .docker* 13 | .git* 14 | README.md 15 | !manageOracle.sh 16 | -------------------------------------------------------------------------------- /Dockerfiles/Dockerfile.19.14.dockerignore: -------------------------------------------------------------------------------- 1 | # Ignore all directories 2 | ** 3 | # Include version directory 4 | !19.14 5 | # Include database and patch files 6 | !/database/LINUX.X64_193000_db_home.zip 7 | !/database/oracle-database-ee-19c-1.0-1.x86_64.rpm 8 | !/database/patches/p6880880_190000_Linux-x86-64.zip 9 | !/database/patches/p33515361_190000_Linux-x86-64.zip 10 | # Ignore files 11 | Dockerfile* 12 | .docker* 13 | .git* 14 | README.md 15 | !manageOracle.sh 16 | -------------------------------------------------------------------------------- /Dockerfiles/Dockerfile.19.13.dockerignore: -------------------------------------------------------------------------------- 1 | # Ignore all directories 2 | ** 3 | # Include version directory 4 | !19.13 5 | # Include database and patch files 6 | !/database/LINUX.X64_193000_db_home.zip 7 | !/database/oracle-database-ee-19c-1.0-1.x86_64.rpm 8 | !/database/patches/p6880880_190000_Linux-x86-64.zip 9 | !/database/patches/p33457235_1913000DBRU_Linux-x86-64.zip 10 | # Ignore files 11 | Dockerfile* 12 | .docker* 13 | .git* 14 | README.md 15 | !manageOracle.sh 16 | -------------------------------------------------------------------------------- /Dockerfiles/Dockerfile.21.3.dockerignore: -------------------------------------------------------------------------------- 1 | # Ignore all directories 2 | ** 3 | # Include version directory 4 | !21.3 5 | # Include database and patch files 6 | !/database/LINUX.X64_213000_db_home.zip 7 | !/database/oracle-database-ee-21c-1.0-1.ol7.x86_64.rpm 8 | !/database/oracle-database-ee-21c-1.0-1.ol8.x86_64.rpm 9 | !/database/patches/p6880880_210000_Linux-x86-64.zip 10 | # Ignore files 11 | Dockerfile* 12 | .docker* 13 | .git* 14 | README.md 15 | !manageOracle.sh 16 | -------------------------------------------------------------------------------- /Dockerfiles/Dockerfile.11.2.0.4.dockerignore: -------------------------------------------------------------------------------- 1 | # Ignore all directories 2 | ** 3 | # Include version directory 4 | !11.2.0.4 5 | # Include database and patch files 6 | !/database/p13390677_112040_Linux-x86-64_1of7.zip 7 | !/database/p13390677_112040_Linux-x86-64_2of7.zip 8 | !/database/patches/p6880880_112000_Linux-x86-64.zip 9 | !/database/patches/p28364007_112040_Linux-x86-64.zip 10 | # Ignore files 11 | Dockerfile* 12 | .docker* 13 | .git* 14 | README.md 15 | !manageOracle.sh 16 | -------------------------------------------------------------------------------- /Dockerfiles/Dockerfile.12.1.dockerignore: -------------------------------------------------------------------------------- 1 | # Ignore all directories 2 | ** 3 | # Include version directory 4 | !12.1 5 | # Include database and patch files 6 | !/database/linuxamd64_12102_database_1of2.zip 7 | !/database/linuxamd64_12102_database_2of2.zip 8 | !/database/linuxamd64_12102_database_se2_1of2.zip 9 | !/database/linuxamd64_12102_database_se2_2of2.zip 10 | !/database/patches/p6880880_190000_Linux-x86-64.zip 11 | # Ignore files 12 | Dockerfile* 13 | .docker* 14 | .git* 15 | README.md 16 | !manageOracle.sh 17 | -------------------------------------------------------------------------------- /Dockerfiles/Dockerfile.19.6.dockerignore: -------------------------------------------------------------------------------- 1 | # Ignore all directories 2 | ** 3 | # Include version directory 4 | !19.6 5 | # Include database and patch files 6 | !/database/LINUX.X64_193000_db_home.zip 7 | !/database/oracle-database-ee-19c-1.0-1.x86_64.rpm 8 | !/database/patches/p6880880_190000_Linux-x86-64.zip 9 | !/database/patches/p30557433_190000_Linux-x86-64.zip 10 | !/database/patches/p30565805_196000DBRU_Linux-x86-64.zip 11 | # Ignore files 12 | Dockerfile* 13 | .docker* 14 | .git* 15 | README.md 16 | !manageOracle.sh 17 | -------------------------------------------------------------------------------- /Dockerfiles/Dockerfile.19.7.dockerignore: -------------------------------------------------------------------------------- 1 | # Ignore all directories 2 | ** 3 | # Include version directory 4 | !19.7 5 | # Include database and patch files 6 | !/database/LINUX.X64_193000_db_home.zip 7 | !/database/oracle-database-ee-19c-1.0-1.x86_64.rpm 8 | !/database/patches/p6880880_190000_Linux-x86-64.zip 9 | !/database/patches/p30869156_190000_Linux-x86-64.zip 10 | !/database/patches/p30565805_197000DBRU_Linux-x86-64.zip 11 | # Ignore files 12 | Dockerfile* 13 | .docker* 14 | .git* 15 | README.md 16 | !manageOracle.sh 17 | -------------------------------------------------------------------------------- /Dockerfiles/Dockerfile.19.8.dockerignore: -------------------------------------------------------------------------------- 1 | # Ignore all directories 2 | ** 3 | # Include version directory 4 | !19.8 5 | # Include database and patch files 6 | !/database/LINUX.X64_193000_db_home.zip 7 | !/database/oracle-database-ee-19c-1.0-1.x86_64.rpm 8 | !/database/patches/p6880880_190000_Linux-x86-64.zip 9 | !/database/patches/p31281355_190000_Linux-x86-64.zip 10 | !/database/patches/p30565805_198000DBRU_Linux-x86-64.zip 11 | # Ignore files 12 | Dockerfile* 13 | .docker* 14 | .git* 15 | README.md 16 | !manageOracle.sh 17 | -------------------------------------------------------------------------------- /Dockerfiles/Dockerfile.21.5.dockerignore: -------------------------------------------------------------------------------- 1 | # Ignore all directories 2 | ** 3 | # Include version directory 4 | !21.5 5 | # Include database and patch files 6 | !/database/LINUX.X64_213000_db_home.zip 7 | !/database/oracle-database-ee-21c-1.0-1.ol7.x86_64.rpm 8 | !/database/oracle-database-ee-21c-1.0-1.ol8.x86_64.rpm 9 | !/database/patches/p6880880_210000_Linux-x86-64.zip 10 | !/database/patches/p33516412_210000_Linux-x86-64.zip 11 | # Ignore files 12 | Dockerfile* 13 | .docker* 14 | .git* 15 | README.md 16 | !manageOracle.sh 17 | -------------------------------------------------------------------------------- /config/listener.ora.tmpl: -------------------------------------------------------------------------------- 1 | LISTENER = 2 | (DESCRIPTION_LIST = 3 | (DESCRIPTION = 4 | (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1)) 5 | (ADDRESS = (PROTOCOL = TCP)(HOST = ${CONTAINER_NAME=0.0.0.0})(PORT = 1521)) 6 | ) 7 | ) 8 | 9 | SID_LIST_LISTENER = 10 | (SID_LIST = 11 | (SID_DESC = 12 | (GLOBAL_DBNAME = ${DB_UNQNAME-$ORACLE_SID}) 13 | (ORACLE_HOME = ${ORACLE_HOME}) 14 | (SID_NAME = ${ORACLE_SID}) 15 | ) 16 | ) 17 | 18 | DEDICATED_THROUGH_BROKER_LISTENER=ON 19 | DIAG_ADR_ENABLED = off 20 | -------------------------------------------------------------------------------- /config/manifest.12.1: -------------------------------------------------------------------------------- 1 | 080435a40bd4c8dff6399b231a808e9a linuxamd64_12102_database_1of2.zip database 12.1 EE 2 | 30f20ef9437442b8282ce3984546c982 linuxamd64_12102_database_2of2.zip database 12.1 EE 3 | dadbf2cfbc9b53f92d0b07f6677af966 linuxamd64_12102_database_se2_1of2.zip database 12.1 SE 4 | 2bda8cd4883bbd3f892dc152e568fc9e linuxamd64_12102_database_se2_2of2.zip database 12.1 SE 5 | 9a66f9ff5ccedf1a253820d2984a540b p6880880_121010_Linux-x86-64.zip opatch 12.1 6880880 6 | 19cdb4322035099328e2a90737918767 p32768233_121020_Linux-x86-64.zip patch 12.1 32768233 7 | -------------------------------------------------------------------------------- /config/inst.12.2.rsp: -------------------------------------------------------------------------------- 1 | oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v12.2.0 2 | oracle.install.option=INSTALL_DB_SWONLY 3 | UNIX_GROUP_NAME=dba 4 | INVENTORY_LOCATION=###ORACLE_INV### 5 | ORACLE_HOME=###ORACLE_HOME### 6 | ORACLE_BASE=###ORACLE_BASE### 7 | oracle.install.db.InstallEdition=###ORACLE_EDITION### 8 | oracle.install.db.OSDBA_GROUP=dba 9 | oracle.install.db.OSOPER_GROUP=dba 10 | oracle.install.db.OSBACKUPDBA_GROUP=dba 11 | oracle.install.db.OSDGDBA_GROUP=dba 12 | oracle.install.db.OSKMDBA_GROUP=dba 13 | oracle.install.db.OSRACDBA_GROUP=dba 14 | SECURITY_UPDATES_VIA_MYORACLESUPPORT=false 15 | DECLINE_SECURITY_UPDATES=true 16 | -------------------------------------------------------------------------------- /config/inst.18.3.rsp: -------------------------------------------------------------------------------- 1 | oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v18.0.0 2 | oracle.install.option=INSTALL_DB_SWONLY 3 | UNIX_GROUP_NAME=dba 4 | INVENTORY_LOCATION=###ORACLE_INV### 5 | ORACLE_HOME=###ORACLE_HOME### 6 | ORACLE_BASE=###ORACLE_BASE### 7 | oracle.install.db.InstallEdition=###ORACLE_EDITION### 8 | oracle.install.db.OSDBA_GROUP=dba 9 | oracle.install.db.OSOPER_GROUP=dba 10 | oracle.install.db.OSBACKUPDBA_GROUP=dba 11 | oracle.install.db.OSDGDBA_GROUP=dba 12 | oracle.install.db.OSKMDBA_GROUP=dba 13 | oracle.install.db.OSRACDBA_GROUP=dba 14 | SECURITY_UPDATES_VIA_MYORACLESUPPORT=false 15 | DECLINE_SECURITY_UPDATES=true 16 | -------------------------------------------------------------------------------- /config/inst.12.1.rsp: -------------------------------------------------------------------------------- 1 | oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v12.1.0 2 | oracle.install.option=INSTALL_DB_SWONLY 3 | ORACLE_HOSTNAME=localhost 4 | UNIX_GROUP_NAME=dba 5 | INVENTORY_LOCATION=###ORACLE_INV### 6 | SELECTED_LANGUAGES=en 7 | ORACLE_HOME=###ORACLE_HOME### 8 | ORACLE_BASE=###ORACLE_BASE### 9 | oracle.install.db.InstallEdition=###ORACLE_EDITION### 10 | oracle.install.db.DBA_GROUP=dba 11 | oracle.install.db.OPER_GROUP=dba 12 | oracle.install.db.BACKUPDBA_GROUP=dba 13 | oracle.install.db.DGDBA_GROUP=dba 14 | oracle.install.db.KMDBA_GROUP=dba 15 | SECURITY_UPDATES_VIA_MYORACLESUPPORT=false 16 | DECLINE_SECURITY_UPDATES=true 17 | -------------------------------------------------------------------------------- /config/inst.18.4.rsp: -------------------------------------------------------------------------------- 1 | oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v12.1.0 2 | oracle.install.option=INSTALL_DB_SWONLY 3 | ORACLE_HOSTNAME=localhost 4 | UNIX_GROUP_NAME=dba 5 | INVENTORY_LOCATION=###ORACLE_INV### 6 | SELECTED_LANGUAGES=en 7 | ORACLE_HOME=###ORACLE_HOME### 8 | ORACLE_BASE=###ORACLE_BASE### 9 | oracle.install.db.InstallEdition=###ORACLE_EDITION### 10 | oracle.install.db.DBA_GROUP=dba 11 | oracle.install.db.OPER_GROUP=dba 12 | oracle.install.db.BACKUPDBA_GROUP=dba 13 | oracle.install.db.DGDBA_GROUP=dba 14 | oracle.install.db.KMDBA_GROUP=dba 15 | SECURITY_UPDATES_VIA_MYORACLESUPPORT=false 16 | DECLINE_SECURITY_UPDATES=true 17 | -------------------------------------------------------------------------------- /config/dbca.12.2.rsp: -------------------------------------------------------------------------------- 1 | responseFileVersion=/oracle/assistants/rspfmt_dbca_response_schema_v12.2.0 2 | gdbName=###ORACLE_SID### 3 | sid=###ORACLE_SID### 4 | createAsContainerDatabase=###CREATE_CONTAINER### 5 | numberOfPDBs=###PDBS### 6 | pdbName=###PDB_NAME### 7 | pdbAdminPassword=###ORACLE_PWD### 8 | templateName=General_Purpose.dbc 9 | sysPassword=###ORACLE_PWD### 10 | systemPassword=###ORACLE_PWD### 11 | emConfiguration=DBEXPRESS 12 | emExpressPort=5500 13 | dbsnmpPassword=###ORACLE_PWD### 14 | characterSet=###ORACLE_CHARACTERSET### 15 | nationalCharacterSet=###ORACLE_NLS_CHARACTERSET### 16 | initParams=###INIT_PARAMS### 17 | automaticMemoryManagement=FALSE 18 | totalMemory=2048 19 | -------------------------------------------------------------------------------- /config/dbca.18.3.rsp: -------------------------------------------------------------------------------- 1 | responseFileVersion=/oracle/assistants/rspfmt_dbca_response_schema_v18.0.0 2 | gdbName=###ORACLE_SID### 3 | sid=###ORACLE_SID### 4 | createAsContainerDatabase=###CREATE_CONTAINER### 5 | numberOfPDBs=###PDBS### 6 | pdbName=###ORACLE_PDB### 7 | pdbAdminPassword=###ORACLE_PWD### 8 | templateName=General_Purpose.dbc 9 | sysPassword=###ORACLE_PWD### 10 | systemPassword=###ORACLE_PWD### 11 | emConfiguration=DBEXPRESS 12 | emExpressPort=5500 13 | dbsnmpPassword=###ORACLE_PWD### 14 | characterSet=###ORACLE_CHARACTERSET### 15 | nationalCharacterSet=###ORACLE_NLS_CHARACTERSET### 16 | initParams=###INIT_PARAMS### 17 | automaticMemoryManagement=FALSE 18 | totalMemory=2048 19 | -------------------------------------------------------------------------------- /config/dbca.21.rsp: -------------------------------------------------------------------------------- 1 | responseFileVersion=/oracle/assistants/rspfmt_dbca_response_schema_v21.0.0 2 | gdbName=###ORACLE_SID### 3 | sid=###ORACLE_SID### 4 | createAsContainerDatabase=###CREATE_CONTAINER### 5 | numberOfPDBs=###PDBS### 6 | pdbName=###PDB_NAME### 7 | pdbAdminPassword=###ORACLE_PWD### 8 | templateName=General_Purpose.dbc 9 | sysPassword=###ORACLE_PWD### 10 | systemPassword=###ORACLE_PWD### 11 | emConfiguration=DBEXPRESS 12 | emExpressPort=5500 13 | dbsnmpPassword=###ORACLE_PWD### 14 | characterSet=###ORACLE_CHARACTERSET### 15 | nationalCharacterSet=###ORACLE_NLS_CHARACTERSET### 16 | initParams=###INIT_PARAMS### 17 | automaticMemoryManagement=FALSE 18 | totalMemory=2048 19 | -------------------------------------------------------------------------------- /config/inst.19.rsp: -------------------------------------------------------------------------------- 1 | oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v19.0.0 2 | oracle.install.option=INSTALL_DB_SWONLY 3 | UNIX_GROUP_NAME=oinstall 4 | INVENTORY_LOCATION=###ORACLE_INV### 5 | ORACLE_HOME=###ORACLE_HOME### 6 | ORACLE_BASE=###ORACLE_BASE### 7 | oracle.install.db.InstallEdition=###ORACLE_EDITION### 8 | oracle.install.db.OSDBA_GROUP=oinstall 9 | oracle.install.db.OSOPER_GROUP=oinstall 10 | oracle.install.db.OSBACKUPDBA_GROUP=oinstall 11 | oracle.install.db.OSDGDBA_GROUP=oinstall 12 | oracle.install.db.OSKMDBA_GROUP=oinstall 13 | oracle.install.db.OSRACDBA_GROUP=oinstall 14 | SECURITY_UPDATES_VIA_MYORACLESUPPORT=false 15 | DECLINE_SECURITY_UPDATES=true 16 | -------------------------------------------------------------------------------- /config/inst.21.rsp: -------------------------------------------------------------------------------- 1 | oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v19.0.0 2 | oracle.install.option=INSTALL_DB_SWONLY 3 | UNIX_GROUP_NAME=oinstall 4 | INVENTORY_LOCATION=###ORACLE_INV### 5 | ORACLE_HOME=###ORACLE_HOME### 6 | ORACLE_BASE=###ORACLE_BASE### 7 | oracle.install.db.InstallEdition=###ORACLE_EDITION### 8 | oracle.install.db.OSDBA_GROUP=oinstall 9 | oracle.install.db.OSOPER_GROUP=oinstall 10 | oracle.install.db.OSBACKUPDBA_GROUP=oinstall 11 | oracle.install.db.OSDGDBA_GROUP=oinstall 12 | oracle.install.db.OSKMDBA_GROUP=oinstall 13 | oracle.install.db.OSRACDBA_GROUP=oinstall 14 | SECURITY_UPDATES_VIA_MYORACLESUPPORT=false 15 | DECLINE_SECURITY_UPDATES=true 16 | -------------------------------------------------------------------------------- /config/dbca.19.rsp: -------------------------------------------------------------------------------- 1 | responseFileVersion=/oracle/assistants/rspfmt_dbca_response_schema_v19.0.0 2 | gdbName=###ORACLE_SID### 3 | sid=###ORACLE_SID### 4 | createAsContainerDatabase=###CREATE_CONTAINER### 5 | numberOfPDBs=###PDBS### 6 | pdbName=###PDB_NAME### 7 | pdbAdminPassword=###ORACLE_PWD### 8 | templateName=General_Purpose.dbc 9 | sysPassword=###ORACLE_PWD### 10 | systemPassword=###ORACLE_PWD### 11 | emConfiguration=DBEXPRESS 12 | emExpressPort=5500 13 | dbsnmpPassword=###ORACLE_PWD### 14 | characterSet=###ORACLE_CHARACTERSET### 15 | nationalCharacterSet=###ORACLE_NLS_CHARACTERSET### 16 | initParams=###INIT_PARAMS### 17 | automaticMemoryManagement=FALSE 18 | totalMemory=2048 19 | datafileDestination=###ORADATA### 20 | -------------------------------------------------------------------------------- /config/dbca.11.2.0.4.rsp: -------------------------------------------------------------------------------- 1 | [GENERAL] 2 | RESPONSEFILE_VERSION="11.2.0" 3 | OPERATION_TYPE="createDatabase" 4 | [CREATEDATABASE] 5 | GDBNAME="###ORACLE_SID###" 6 | SID="###ORACLE_SID###" 7 | TEMPLATENAME="General_Purpose.dbc" 8 | SYSPASSWORD="###ORACLE_PWD###" 9 | SYSTEMPASSWORD="###ORACLE_PWD###" 10 | SYSMANPASSWORD="###ORACLE_PWD###" 11 | DBSNMPPASSWORD="###ORACLE_PWD###" 12 | EMCONFIGURATION="NONE" 13 | DATAFILEDESTINATION=###ORADATA### 14 | RECOVERYAREADESTINATION=###ORADATA###/fast_recovery_area 15 | STORAGETYPE=FS 16 | CHARACTERSET="###ORACLE_CHARACTERSET###" 17 | NATIONALCHARACTERSET="###ORACLE_NLS_CHARACTERSET###" 18 | #VARIABLESFILE= 19 | #VARIABLES= 20 | INITPARAMS="JAVA_JIT_ENABLED=false" 21 | AUTOMATICMEMORYMANAGEMENT=FALSE 22 | TOTALMEMORY="800" 23 | -------------------------------------------------------------------------------- /config/dbca.12.1.rsp: -------------------------------------------------------------------------------- 1 | [GENERAL] 2 | RESPONSEFILE_VERSION = "12.1.0" 3 | OPERATION_TYPE = "createDatabase" 4 | [CREATEDATABASE] 5 | GDBNAME = "###ORACLE_SID###" 6 | SID = "###ORACLE_SID###" 7 | CREATEASCONTAINERDATABASE = "###CREATE_CONTAINER###" 8 | NUMBEROFPDBS = ###PDBS### 9 | PDBNAME = "###PDB_NAME###" 10 | PDBADMINPASSWORD = "###ORACLE_PWD###" 11 | TEMPLATENAME = "General_Purpose.dbc" 12 | SYSPASSWORD = "###ORACLE_PWD###" 13 | SYSTEMPASSWORD = "###ORACLE_PWD###" 14 | EMCONFIGURATION = "DBEXPRESS" 15 | EMEXPRESSPORT = "5500" 16 | DBSNMPPASSWORD = "###ORACLE_PWD###" 17 | CHARACTERSET = "###ORACLE_CHARACTERSET###" 18 | NATIONALCHARACTERSET= "###ORACLE_NLS_CHARACTERSET###" 19 | INITPARAMS = "###INIT_PARAMS###" 20 | AUTOMATICMEMORYMANAGEMENT = "FALSE" 21 | TOTALMEMORY = "2048" 22 | DATAFILEDESTINATION = "###ORADATA###" 23 | -------------------------------------------------------------------------------- /labs/farsync/config-dataguard.lst: -------------------------------------------------------------------------------- 1 | # Host | ID | IMAGE | ORACLE_SID | DB_UNQNAME | ORACLE_PWD | PDB_COUNT | PDB_NAME | Role | ROUTE_PRI | DG_TARGET | SYNC_MODE | MAXFAIL | OPEN_MODE 2 | APPPROD | 0 | oraclesean/db:19.11-ee | APPPROD | APPPROD | oracle | 0 | | PRIMARY | 0 | APPS1DB,APPS2DB | SYNC | 0 | OPEN 3 | APPS1DB | 1 | oraclesean/db:19.11-ee | APPPROD | APPS1DB | oracle | 0 | | STANDBY | 8 | APPPROD | ASYNC | 1 | APPLY 4 | APPS2DB | 2 | oraclesean/db:19.11-ee | APPPROD | APPS2DB | oracle | 0 | | STANDBY | 8 | APPPROD | ASYNC | 1 | APPLY 5 | APPFSDB | 3 | oraclesean/db:19.11-ee | APPPROD | APPFSDB | oracle | 0 | | FARSYNC | 1 | | SYNC | 1 | MOUNT 6 | -------------------------------------------------------------------------------- /config/env.tmpl: -------------------------------------------------------------------------------- 1 | export PS1="[\u - \\\${ORACLE_SID}] \w\n# " 2 | 3 | export ORACLE_BASE=${ORACLE_BASE} 4 | export ORACLE_SID=\$(egrep -v "^$|^#" /etc/oratab | cut -d: -f1 | head -1) 5 | export ORACLE_UNQNAME=\${ORACLE_UNQNAME:-\$ORACLE_SID} 6 | export ORACLE_HOME=\$(egrep "^\$ORACLE_SID:" /etc/oratab | egrep -v "^$|^#" | cut -d: -f2 | head -1) 7 | export BASEPATH=/usr/sbin:/usr/local/sbin:/usr/local/bin:/usr/bin:/sbin:/bin 8 | export PATH=\$ORACLE_HOME/bin:\$ORACLE_HOME/OPatch/:\$BASEPATH 9 | export CLASSPATH=\$ORACLE_HOME/jlib:\$ORACLE_HOME/rdbms/jlib 10 | export LD_LIBRARY_PATH=\$ORACLE_HOME/lib:/usr/lib 11 | export ORACLE_BASE_CONFIG="\$(\$ORACLE_HOME/bin/orabaseconfig 2>/dev/null || echo \$ORACLE_HOME)"/dbs 12 | export ORACLE_BASE_HOME="\$(\$ORACLE_HOME/bin/orabasehome 2>/dev/null || echo \$ORACLE_HOME)" 13 | export TNS_ADMIN=\$ORACLE_BASE_HOME/network/admin 14 | export ORACLE_PATH=${ORACLE_PATH} 15 | -------------------------------------------------------------------------------- /config/manifest.21: -------------------------------------------------------------------------------- 1 | 8ac915a800800ddf16a382506d3953db LINUX.X64_213000_db_home.zip database 21 SE,EE 2 | #be49680760d60089815cc0b4ae2e1805 oracle-database-ee-21c-1.0-1.ol7.x86_64.rpm database 21 SE,EE OEL7 3 | #db3d15b21e17a455a1c28861d5ce0a4f oracle-database-ee-21c-1.0-1.ol8.x86_64.rpm database 21 SE,EE OEL8 4 | 9a66f9ff5ccedf1a253820d2984a540b p6880880_210000_Linux-x86-64.zip opatch 21 6880880 5 | e52c22cdc2f6cb18f571569c9412b693 p33516412_210000_Linux-x86-64.zip patch 21.5 33516412 6 | a4f3339727becb27a4033b84615ac214 p33843745_210000_Linux-x86-64.zip patch 21.6 33843745 7 | 70cb6d33ea30aff9302a5bf0ac1e5348 p34160444_210000_Linux-x86-64.zip patch 21.7 34160444 8 | f9fd56bcb1f4faab2ebde54f193b7a63 p34527084_210000_Linux-x86-64.zip patch 21.8 34527084 9 | # DATABASE PERL UPDATE FOR 21C TO V5.32-1 (CVE-2022-23990 - LIBEXPAT UPDATE) 10 | # General for any version, must be applied after RU 11 | 1e3fdfd8dfea43b9d9f34d1202348b89 p33928944_210000_Linux-x86-64.zip patch 21 33928944 12 | -------------------------------------------------------------------------------- /bashrc19: -------------------------------------------------------------------------------- 1 | # .bashrc 2 | # Source global definitions 3 | if [ -f /etc/bashrc ]; then 4 | . /etc/bashrc 5 | fi 6 | 7 | export PS1="[\u - ${ORACLE_SID}] \w\n# " 8 | 9 | export ORACLE_BASE=/u01/app/oracle 10 | export ORACLE_SID=$(egrep -v "^$|^#" /etc/oratab | cut -d: -f1 | head -1) 11 | export ORACLE_UNQNAME=$ORACLE_SID 12 | export ORACLE_HOME=$(egrep "^${ORACLE_SID}:" /etc/oratab | egrep -v "^$|^#" | cut -d: -f2 | head -1) 13 | export ORACLE_BASE_CONFIG="$($ORACLE_HOME/bin/orabaseconfig 2>/dev/null || echo $ORACLE_HOME)"/dbs 14 | export ORACLE_BASE_HOME="$($ORACLE_HOME/bin/orabasehome 2>/dev/null || echo $ORACLE_HOME)" 15 | export TNS_ADMIN=$ORACLE_BASE_HOME/network/admin 16 | export BASEPATH=/usr/sbin:/usr/local/sbin:/usr/local/bin:/usr/bin:/sbin:/bin 17 | export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch/:$BASEPATH 18 | export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib 19 | export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib 20 | export ORACLE_PATH=$ORACLE_PATH 21 | export ORACLE_19C_HOME=$ORACLE_BASE/product/19c/dbhome_1 22 | 23 | alias sqlplus="rlwrap \$ORACLE_HOME/bin/sqlplus" 24 | alias rman="rlwrap \$ORACLE_HOME/bin/rman" 25 | alias dgmgrl="rlwrap \$ORACLE_HOME/bin/dgmgrl" 26 | -------------------------------------------------------------------------------- /bashrc21: -------------------------------------------------------------------------------- 1 | # .bashrc 2 | # Source global definitions 3 | if [ -f /etc/bashrc ]; then 4 | . /etc/bashrc 5 | fi 6 | 7 | export PS1="[\u - ${ORACLE_SID}] \w\n# " 8 | 9 | export ORACLE_BASE=/u01/app/oracle 10 | export ORACLE_SID=$(egrep -v "^$|^#" /etc/oratab | cut -d: -f1 | head -1) 11 | export ORACLE_UNQNAME=$ORACLE_SID 12 | export ORACLE_HOME=$(egrep "^${ORACLE_SID}:" /etc/oratab | egrep -v "^$|^#" | cut -d: -f2 | head -1) 13 | export ORACLE_BASE_CONFIG="$($ORACLE_HOME/bin/orabaseconfig 2>/dev/null || echo $ORACLE_HOME)"/dbs 14 | export ORACLE_BASE_HOME="$($ORACLE_HOME/bin/orabasehome 2>/dev/null || echo $ORACLE_HOME)" 15 | export TNS_ADMIN=$ORACLE_BASE_HOME/network/admin 16 | export BASEPATH=/usr/sbin:/usr/local/sbin:/usr/local/bin:/usr/bin:/sbin:/bin 17 | export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch/:$BASEPATH 18 | export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib 19 | export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib 20 | export ORACLE_PATH=$ORACLE_PATH 21 | export ORACLE_21C_HOME=$ORACLE_BASE/product/21c/dbhome_1 22 | 23 | alias sqlplus="rlwrap \$ORACLE_HOME/bin/sqlplus" 24 | alias rman="rlwrap \$ORACLE_HOME/bin/rman" 25 | alias dgmgrl="rlwrap \$ORACLE_HOME/bin/dgmgrl" 26 | -------------------------------------------------------------------------------- /labs/upgrade/unplug-plug-relocate/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | services: 3 | UPG-ORA12: 4 | image: oraclesean/db:12.1-ee 5 | container_name: UPG-ORA12 6 | volumes: 7 | - UPG-ORA12:/u01/app/oracle/oradata 8 | - /home/lab/docker/labs/upgrade:/upgrade 9 | environment: 10 | CONTAINER_NAME: UPG-ORA12 11 | ORACLE_SID: ORA12 12 | DB_UNQNAME: ORA12 13 | ORACLE_PWD: oracle 14 | PDB_COUNT: 0 15 | ORACLE_PDB: 16 | 17 | ports: 18 | - 10010:1521 19 | 20 | UPG-CDB12: 21 | image: oraclesean/db:12.1-ee 22 | container_name: UPG-CDB12 23 | volumes: 24 | - UPG-CDB12:/u01/app/oracle/oradata 25 | - /home/lab/docker/labs/upgrade:/upgrade 26 | environment: 27 | CONTAINER_NAME: UPG-CDB12 28 | ORACLE_SID: CDB12 29 | DB_UNQNAME: CDB12 30 | ORACLE_PWD: oracle 31 | PDB_COUNT: 3 32 | PDB_LIST: PDB1,PDB2,PDB3 33 | 34 | ports: 35 | - 10011:1521 36 | 37 | UPG-CDB19: 38 | image: oraclesean/db:19.11-ee 39 | container_name: UPG-CDB19 40 | volumes: 41 | - UPG-CDB19:/u01/app/oracle/oradata 42 | - /home/lab/docker/labs/upgrade:/upgrade 43 | environment: 44 | CONTAINER_NAME: UPG-CDB19 45 | ORACLE_SID: CDB19 46 | DB_UNQNAME: CDB19 47 | ORACLE_PWD: oracle 48 | PDB_COUNT: 1 49 | ORACLE_PDB: PDB19 50 | 51 | ports: 52 | - 10012:1521 53 | 54 | volumes: 55 | UPG-ORA12: 56 | UPG-CDB12: 57 | UPG-CDB19: 58 | -------------------------------------------------------------------------------- /config/dbca.18.4.rsp: -------------------------------------------------------------------------------- 1 | responseFileVersion=/oracle/assistants/rspfmt_dbca_response_schema_v12.2.0 2 | gdbName=###ORACLE_SID### 3 | sid=###ORACLE_SID### 4 | databaseConfigType= 5 | RACOneNodeServiceName= 6 | policyManaged= 7 | createServerPool= 8 | serverPoolName= 9 | cardinality= 10 | force= 11 | pqPoolName= 12 | pqCardinality= 13 | createAsContainerDatabase=###CREATE_CONTAINER### 14 | numberOfPDBs=###PDBS### 15 | pdbName=###PDB_NAME### 16 | useLocalUndoForPDBs= 17 | pdbAdminPassword=###ORACLE_PWD### 18 | nodelist= 19 | templateName=XE_Database.dbc 20 | sysPassword=###ORACLE_PWD### 21 | systemPassword=###ORACLE_PWD### 22 | oracleHomeUserPassword= 23 | emConfiguration=DBEXPRESS 24 | emExpressPort=5500 25 | runCVUChecks= 26 | dbsnmpPassword=###ORACLE_PWD### 27 | omsHost= 28 | omsPort= 29 | emUser= 30 | emPassword= 31 | dvConfiguration= 32 | dvUserName= 33 | dvUserPassword= 34 | dvAccountManagerName= 35 | dvAccountManagerPassword= 36 | olsConfiguration= 37 | datafileJarLocation= 38 | datafileDestination= 39 | recoveryAreaDestination= 40 | storageType= 41 | diskGroupName= 42 | asmsnmpPassword= 43 | recoveryGroupName= 44 | characterSet=###ORACLE_CHARACTERSET### 45 | nationalCharacterSet=###ORACLE_NLS_CHARACTERSET### 46 | registerWithDirService= 47 | dirServiceUserName= 48 | dirServicePassword= 49 | walletPassword= 50 | listeners= 51 | variablesFile= 52 | variables= 53 | initParams=###INIT_PARAMS### 54 | sampleSchema=FALSE 55 | memoryPercentage= 56 | databaseType= 57 | automaticMemoryManagement=FALSE 58 | totalMemory=2048 59 | -------------------------------------------------------------------------------- /templates/oraclelinux.dockerfile: -------------------------------------------------------------------------------- 1 | ###FROM_BASE### 2 | 3 | # Directory defaults 4 | ARG SCRIPTS_DIR=/opt/scripts 5 | ARG INSTALL_DIR=/opt/install 6 | ARG ORACLE_PATH=/home/oracle 7 | 8 | # Database defaults 9 | ARG ORACLE_VERSION=###ORACLE_BASE_VERSION### 10 | 11 | # Build defaults 12 | ARG RPM_LIST="oracle-epel-release-el7 file-5.11 git less strace sudo tree vi which bash-completion" 13 | ARG RPM_SUPPLEMENT="rlwrap" 14 | ARG MIN_SPACE_GB=###MIN_SPACE_GB_ARG### 15 | ARG BUILD_DATE= 16 | ARG BUILD_VERSION=1.0 17 | ARG MANAGE_ORACLE=manageOracle.sh 18 | # Pass --build-arg DEBUG="bash -x" to run scripts in debug mode. 19 | ARG DEBUG= 20 | 21 | # Labels 22 | LABEL org.label-schema.schema-version="1.0" 23 | LABEL org.label-schema.url="http://oraclesean.com" 24 | LABEL org.label-schema.version="$BUILD_VERSION" 25 | LABEL org.label-schema.build-date="$BUILD_DATE" 26 | LABEL org.label-schema.vcs-url="https://github.com/oraclesean" 27 | LABEL org.label-schema.name="###OEL_IMAGE###" 28 | LABEL org.label-schema.description="oraclelinux with Oracle Database ###PREINSTALL_TAG### prerequisites" 29 | LABEL maintainer="Sean Scott " 30 | 31 | ENV ORACLE_PATH=$ORACLE_PATH \ 32 | INSTALL_DIR=$INSTALL_DIR \ 33 | SCRIPTS_DIR=$SCRIPTS_DIR \ 34 | MANAGE_ORACLE=$MANAGE_ORACLE \ 35 | DEBUG=$DEBUG 36 | 37 | COPY $MANAGE_ORACLE $SCRIPTS_DIR/ 38 | 39 | # Build base image: 40 | RUN chmod ug+x $SCRIPTS_DIR/$MANAGE_ORACLE && \ 41 | $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE -e && \ 42 | rm -fr /tmp/* /var/cache/yum 43 | -------------------------------------------------------------------------------- /Dockerfile.12-19: -------------------------------------------------------------------------------- 1 | FROM oraclelinux:7-slim-19c 2 | 3 | # Database defaults 4 | ARG ORACLE_VERSION=12.1 5 | ARG ORACLE_INV=/u01/app/oraInventory 6 | ARG ORACLE_BASE=/u01/app/oracle 7 | ARG ORACLE_HOME=$ORACLE_BASE/product/12.1/dbhome_1 8 | ARG ORADATA=/opt/oracle/oradata 9 | ARG ORACLE_EDITION=EE 10 | ARG ORACLE_SID=LAB 11 | 12 | ARG ORACLE_19C_HOME=$ORACLE_BASE/product/19c/dbhome_1 13 | 14 | # Pass --build-arg DEBUG="bash -x" to run scripts in debug mode. 15 | ARG DEBUG= 16 | 17 | # Environment settings 18 | ENV ORACLE_BASE=$ORACLE_BASE \ 19 | ORACLE_HOME=$ORACLE_HOME \ 20 | ORACLE_19C_HOME=$ORACLE_19C_HOME \ 21 | ORACLE_INV=$ORACLE_INV \ 22 | ORADATA=$ORADATA \ 23 | ORACLE_VERSION=$ORACLE_VERSION \ 24 | ORACLE_EDITION=$ORACLE_EDITION \ 25 | ORACLE_SID=$ORACLE_SID \ 26 | DEBUG=$DEBUG \ 27 | PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch/:/usr/sbin:$PATH \ 28 | CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib \ 29 | LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib \ 30 | TNS_ADMIN=$ORACLE_HOME/network/admin 31 | 32 | USER oracle 33 | COPY ./manageOracle.sh /opt/scripts/ 34 | COPY --chown=oracle:oinstall --from=oraclesean/db:12.1-EE $ORACLE_INV $ORACLE_INV 35 | COPY --chown=oracle:oinstall --from=oraclesean/db:12.1-EE $ORACLE_BASE $ORACLE_BASE 36 | COPY --chown=oracle:oinstall --from=oraclesean/db:12.1-EE $ORADATA $ORADATA 37 | COPY --chown=oracle:oinstall --from=oraclesean/db:19.13.1-EE $ORACLE_BASE $ORACLE_BASE 38 | COPY ./bashrc19 /home/oracle/.bashrc 39 | COPY ./config/login.sql.tmpl /home/oracle/login.sql 40 | 41 | USER root 42 | RUN chmod 755 /opt/scripts/manageOracle.sh && \ 43 | yum install -y gcc && yum clean all && \ 44 | $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE -R && \ 45 | $ORACLE_19C_HOME/root.sh 46 | 47 | USER oracle 48 | RUN $ORACLE_19C_HOME/oui/bin/attachHome.sh 49 | WORKDIR /home/oracle 50 | 51 | VOLUME ["$ORADATA"] 52 | EXPOSE 1521 5500 8080 53 | HEALTHCHECK --interval=1m --start-period=5m CMD $SCRIPTS_DIR/$MANAGE_ORACLE -h >/dev/null || exit 1 54 | CMD exec $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE 55 | -------------------------------------------------------------------------------- /Dockerfile.11-19: -------------------------------------------------------------------------------- 1 | FROM oraclelinux:7-slim-19c 2 | 3 | # Database defaults 4 | ARG ORACLE_VERSION=11.2.0.4 5 | ARG ORACLE_INV=/u01/app/oraInventory 6 | ARG ORACLE_BASE=/u01/app/oracle 7 | ARG ORACLE_HOME=$ORACLE_BASE/product/11.2.0.4/dbhome_1 8 | ARG ORADATA=/opt/oracle/oradata 9 | ARG ORACLE_EDITION=EE 10 | ARG ORACLE_SID=LAB 11 | 12 | ARG ORACLE_19C_HOME=$ORACLE_BASE/product/19c/dbhome_1 13 | 14 | # Pass --build-arg DEBUG="bash -x" to run scripts in debug mode. 15 | ARG DEBUG= 16 | 17 | # Environment settings 18 | ENV ORACLE_BASE=$ORACLE_BASE \ 19 | ORACLE_HOME=$ORACLE_HOME \ 20 | ORACLE_19C_HOME=$ORACLE_19C_HOME \ 21 | ORACLE_INV=$ORACLE_INV \ 22 | ORADATA=$ORADATA \ 23 | ORACLE_VERSION=$ORACLE_VERSION \ 24 | ORACLE_EDITION=$ORACLE_EDITION \ 25 | ORACLE_SID=$ORACLE_SID \ 26 | DEBUG=$DEBUG \ 27 | PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch/:/usr/sbin:$PATH \ 28 | CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib \ 29 | LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib \ 30 | TNS_ADMIN=$ORACLE_HOME/network/admin 31 | 32 | #COPY ./manageOracle.sh /opt/scripts/ 33 | 34 | USER oracle 35 | COPY ./manageOracle.sh /opt/scripts/ 36 | COPY --chown=oracle:oinstall --from=oraclesean/db:11.2.0.4-EE $ORACLE_INV $ORACLE_INV 37 | COPY --chown=oracle:oinstall --from=oraclesean/db:11.2.0.4-EE $ORACLE_BASE $ORACLE_BASE 38 | COPY --chown=oracle:oinstall --from=oraclesean/db:11.2.0.4-EE $ORADATA $ORADATA 39 | COPY --chown=oracle:oinstall --from=oraclesean/db:19.13.1-EE $ORACLE_BASE $ORACLE_BASE 40 | COPY ./bashrc19 /home/oracle/.bashrc 41 | COPY ./config/login.sql.tmpl /home/oracle/login.sql 42 | 43 | USER root 44 | RUN chmod 755 /opt/scripts/manageOracle.sh && \ 45 | yum install -y gcc && yum clean all && \ 46 | $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE -R && \ 47 | $ORACLE_19C_HOME/root.sh 48 | 49 | USER oracle 50 | RUN $ORACLE_19C_HOME/oui/bin/attachHome.sh 51 | WORKDIR /home/oracle 52 | 53 | VOLUME ["$ORADATA"] 54 | EXPOSE 1521 5500 8080 55 | HEALTHCHECK --interval=1m --start-period=5m CMD $SCRIPTS_DIR/$MANAGE_ORACLE -h >/dev/null || exit 1 56 | CMD exec $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE 57 | -------------------------------------------------------------------------------- /Dockerfile.19-21: -------------------------------------------------------------------------------- 1 | FROM oraclelinux:7-slim-21c 2 | 3 | # Database defaults 4 | ARG ORACLE_VERSION=19.13.1 5 | ARG ORACLE_INV=/u01/app/oraInventory 6 | ARG ORACLE_BASE=/u01/app/oracle 7 | ARG ORACLE_HOME=$ORACLE_BASE/product/19c/dbhome_1 8 | ARG ORADATA=/opt/oracle/oradata 9 | ARG ORACLE_EDITION=EE 10 | ARG ORACLE_SID=LAB 11 | 12 | ARG ORACLE_21C_HOME=$ORACLE_BASE/product/21c/dbhome_1 13 | 14 | # Pass --build-arg DEBUG="bash -x" to run scripts in debug mode. 15 | ARG DEBUG= 16 | 17 | # Environment settings 18 | ENV ORACLE_BASE=$ORACLE_BASE \ 19 | ORACLE_HOME=$ORACLE_HOME \ 20 | ORACLE_21C_HOME=$ORACLE_21C_HOME \ 21 | ORACLE_INV=$ORACLE_INV \ 22 | ORADATA=$ORADATA \ 23 | ORACLE_VERSION=$ORACLE_VERSION \ 24 | ORACLE_EDITION=$ORACLE_EDITION \ 25 | ORACLE_SID=$ORACLE_SID \ 26 | DEBUG=$DEBUG \ 27 | PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch/:/usr/sbin:$PATH \ 28 | CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib \ 29 | LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib \ 30 | TNS_ADMIN=$ORACLE_HOME/network/admin 31 | 32 | USER oracle 33 | COPY ./manageOracle.sh /opt/scripts/ 34 | COPY --chown=oracle:oinstall --from=oraclesean/db:19.13.1-EE $ORACLE_INV $ORACLE_INV 35 | COPY --chown=oracle:oinstall --from=oraclesean/db:19.13.1-EE $ORACLE_BASE $ORACLE_BASE 36 | COPY --chown=oracle:oinstall --from=oraclesean/db:19.13.1-EE $ORADATA $ORADATA 37 | COPY --chown=oracle:oinstall --from=oraclesean/db:21.5-EE $ORACLE_BASE $ORACLE_BASE 38 | COPY ./bashrc21 /home/oracle/.bashrc 39 | COPY ./config/login.sql.tmpl /home/oracle/login.sql 40 | 41 | USER root 42 | RUN chmod 755 /opt/scripts/manageOracle.sh 43 | RUN $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE -R 44 | 45 | USER root 46 | RUN chmod 755 /opt/scripts/manageOracle.sh && \ 47 | $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE -R && \ 48 | $ORACLE_21C_HOME/root.sh 49 | 50 | USER oracle 51 | RUN $ORACLE_21C_HOME/oui/bin/attachHome.sh 52 | WORKDIR /home/oracle 53 | 54 | VOLUME ["$ORADATA"] 55 | EXPOSE 1521 5500 8080 56 | HEALTHCHECK --interval=1m --start-period=5m CMD $SCRIPTS_DIR/$MANAGE_ORACLE -h >/dev/null || exit 1 57 | CMD exec $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE 58 | -------------------------------------------------------------------------------- /functions.sh: -------------------------------------------------------------------------------- 1 | logger() { 2 | local __format="$1" 3 | shift 1 4 | 5 | __line="# ----------------------------------------------------------------------------------------------- #" 6 | 7 | if [[ $__format =~ B ]] 8 | then printf "\n${__line}\n" 9 | elif [[ $__format =~ b ]] 10 | then printf "\n" 11 | fi 12 | 13 | printf "%s\n" " $@" 14 | 15 | if [[ $__format =~ A ]] 16 | then printf "${__line}\n\n" 17 | elif [[ $__format =~ a ]] 18 | then printf "\n" 19 | fi 20 | 21 | } 22 | 23 | warn() { 24 | printf "WARNING: %s\n" "$@" 25 | } 26 | 27 | error() { 28 | printf "ERROR: %s\nExiting...\n" "$@" 29 | return 1 30 | } 31 | 32 | debug() { 33 | __s1= 34 | __s2= 35 | if [ "$debug" ] 36 | then __s1="DEBUG: $1" 37 | __s2="${2//\n/}" #"$(echo $2 | sed 's/\n//g')" 38 | printf "%-40s: %s\n" "$__s1" "$__s2" | tee -a "$3" 39 | fi 40 | } 41 | 42 | fixcase() { 43 | echo "$1" | tr '[:upper:]' '[:lower:]' 44 | } 45 | 46 | FIXCASE() { 47 | echo "$1" | tr '[:lower:]' '[:upper:]' 48 | } 49 | 50 | replaceVars() { 51 | local __file="$1" 52 | local __var="$2" 53 | if [ -z "$3" ] 54 | then local __val="$(eval echo "\$$(echo "$__var")")" 55 | else local __val="$3" 56 | fi 57 | sed -i -e "s|###${__var}###|"${__val}"|g" "$__file" 58 | } 59 | 60 | checkSum() { 61 | # $1 is the file name containing the md5 hashes 62 | # $2 is the extension to check 63 | grep -E "${2}$" "$1" | while read checksum_value filename 64 | do 65 | # md5sum is present and values do not match 66 | if [ "$(type md5sum 2>/dev/null)" ] && [ ! "$(md5sum "$INSTALL_DIR"/"$filename" | awk '{print $1}')" == "$checksum_value" ] 67 | then error "Checksum for $filename did not match" 68 | else # Unzip to the correct directory--ORACLE_HOME for 18c/19c, INSTALL_DIR for others 69 | case $ORACLE_VERSION in 70 | 18.*|19.*|21.*) sudo su - oracle -c "unzip -oq -d $ORACLE_HOME $INSTALL_DIR/$filename" ;; 71 | *) sudo su - oracle -c "unzip -oq -d $INSTALL_DIR $INSTALL_DIR/$filename" ;; 72 | esac 73 | fi 74 | done 75 | } 76 | 77 | -------------------------------------------------------------------------------- /Dockerfiles/Dockerfile.ahf: -------------------------------------------------------------------------------- 1 | # syntax=docker/dockerfile:1.3-labs 2 | FROM oraclelinux:7-slim as base 3 | 4 | # Use ARGs to keep the environment clean 5 | ARG TFA_BASE=/opt/oracle.ahf 6 | ARG INSTALL_DIR=/opt/install 7 | ARG TFA_FILE="AHF-LINUX_v21.2.0.zip" 8 | 9 | # Directory defaults 10 | ARG SCRIPTS_DIR=/opt/scripts 11 | ARG ORACLE_PATH=/home/oracle 12 | 13 | # Build defaults 14 | #ARG RPM_LIST="oracle-epel-release-el7 file-5.11 git less strace sudo tree vi which bash-completion" 15 | #ARG RPM_SUPPLEMENT="rlwrap" 16 | #ARG MIN_SPACE_GB=12 17 | ARG BUILD_DATE= 18 | ARG BUILD_VERSION=1.0 19 | # Pass --build-arg DEBUG="bash -x" to run scripts in debug mode. 20 | ARG DEBUG= 21 | 22 | # DB configuration defaults 23 | ENV TFA_BASE=$TFA_BASE \ 24 | INSTALL_DIR=$INSTALL_DIR \ 25 | TFA_FILE=$TFA_FILE 26 | 27 | # Copy files needed during both installation and runtime 28 | COPY --chown=oracle:oinstall ahf/$TFA_FILE $INSTALL_DIR/ 29 | 30 | RUN </dev/null || exit 1 55 | #CMD exec $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE 56 | -------------------------------------------------------------------------------- /config/inst.11.2.0.4.rsp: -------------------------------------------------------------------------------- 1 | oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v11_2_0 2 | oracle.install.option=INSTALL_DB_SWONLY 3 | ORACLE_HOSTNAME=localhost 4 | UNIX_GROUP_NAME=oinstall 5 | INVENTORY_LOCATION=###ORACLE_INV### 6 | SELECTED_LANGUAGES=en 7 | ORACLE_HOME=###ORACLE_HOME### 8 | ORACLE_BASE=###ORACLE_BASE### 9 | oracle.install.db.InstallEdition=###ORACLE_EDITION### 10 | oracle.install.db.EEOptionsSelection=false 11 | 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 12 | oracle.install.db.DBA_GROUP=dba 13 | oracle.install.db.OPER_GROUP=dba 14 | oracle.install.db.CLUSTER_NODES= 15 | oracle.install.db.isRACOneInstall=false 16 | oracle.install.db.racOneServiceName= 17 | oracle.install.db.config.starterdb.type= 18 | oracle.install.db.config.starterdb.globalDBName= 19 | oracle.install.db.config.starterdb.SID= 20 | oracle.install.db.config.starterdb.characterSet= 21 | oracle.install.db.config.starterdb.memoryOption=true 22 | oracle.install.db.config.starterdb.memoryLimit=2048 23 | oracle.install.db.config.starterdb.installExampleSchemas=false 24 | oracle.install.db.config.starterdb.enableSecuritySettings=true 25 | oracle.install.db.config.starterdb.password.ALL= 26 | oracle.install.db.config.starterdb.password.SYS= 27 | oracle.install.db.config.starterdb.password.SYSTEM= 28 | oracle.install.db.config.starterdb.password.SYSMAN= 29 | oracle.install.db.config.starterdb.password.DBSNMP= 30 | oracle.install.db.config.starterdb.control=DB_CONTROL 31 | oracle.install.db.config.starterdb.gridcontrol.gridControlServiceURL= 32 | oracle.install.db.config.starterdb.automatedBackup.enable=false 33 | oracle.install.db.config.starterdb.automatedBackup.osuid= 34 | oracle.install.db.config.starterdb.automatedBackup.ospwd= 35 | oracle.install.db.config.starterdb.storageType= 36 | oracle.install.db.config.starterdb.fileSystemStorage.dataLocation= 37 | oracle.install.db.config.starterdb.fileSystemStorage.recoveryLocation= 38 | oracle.install.db.config.asm.diskGroup= 39 | oracle.install.db.config.asm.ASMSNMPPassword= 40 | MYORACLESUPPORT_USERNAME= 41 | MYORACLESUPPORT_PASSWORD= 42 | SECURITY_UPDATES_VIA_MYORACLESUPPORT= 43 | DECLINE_SECURITY_UPDATES=true 44 | PROXY_HOST= 45 | PROXY_PORT= 46 | PROXY_USER= 47 | PROXY_PWD= 48 | PROXY_REALM= 49 | COLLECTOR_SUPPORTHUB_URL= 50 | oracle.installer.autoupdates.option=SKIP_UPDATES 51 | oracle.installer.autoupdates.downloadUpdatesLoc= 52 | AUTOUPDATES_MYORACLESUPPORT_USERNAME= 53 | AUTOUPDATES_MYORACLESUPPORT_PASSWORD= 54 | -------------------------------------------------------------------------------- /labs/farsync/README.md: -------------------------------------------------------------------------------- 1 | # FarSync Lab 2 | This lab automates the build of Data Guard Far Sync through Docker Compose. 3 | # IMPORTANT SETUP INSTRUCTIONS 4 | This lab requires preliminary setup. 5 | ## Customize `config-dataguard.lst` 6 | The `config-dataguard.lst` file contains information on each member of the Data Guard configuration. Each member must be present in the file in order: 7 | * The primary database must appear first 8 | * One or more standby databases appear next 9 | * The last member must be the Far Sync 10 | ### Notes 11 | * Replace the image name with the database image present on your local system 12 | * The ORACLE_SID must be identical for all members 13 | * The ORACLE_PWD must be identical for all members 14 | * ROLE must be PRIMARY, STANDBY, or FARSYNC 15 | * DG_TARGET 16 | * On standby databases = the DB_UNQNAME of the PRIMARY 17 | * On the primary = a comma-delimited list of each standby DB_UNQNAME 18 | * On the far sync = NULL 19 | * OPEN_MODE 20 | * Always OPEN for the primary 21 | * Always MOUNT for the far sync 22 | * APPLY on the standby will activate managed recovery, otherwise the database will open READ ONLY automatically 23 | ## Customize `create_compose.sh` 24 | * Update the value of ORADATA to match the ORADATA directory of your image 25 | * SETUP_DIR is the mount point where the current script directory will be mounted 26 | * The ORADATA directories will be mounted in Docker volumes (FS_${CONTAINER_NAME}). If you would like the volumes bind mounted: 27 | * Add a generic path (eg, `/somedir/oradata`) 28 | * Make sure the path exists on the local system 29 | * On Linux systems, create a subdirectory under this path for each container name (`/somedir/oradata/container_name`) and chown these directories to be owned by `oracle:dba` or `oracle:oinstall` 30 | # Run `create_compose.sh` 31 | Make `create_compose.sh` executable on your system and run it. This will create: 32 | * `docker-compose.yml`: defines all of the services (databases) 33 | * `tnsnames.ora`: a shared file used by all databases 34 | * RMAN scrips to duplicate the database to the standby and far sync members 35 | * Data Guard configurations run from the primary 36 | Modify these scripts as you see fit. They are run automatically when services are initially created. 37 | # Run `docker-compose` 38 | From the current directory, run `docker-compose up -d` to start building the environment. Monitor the build process with `docker-compose logs -f`. The process will: 39 | * Create the database on the primary 40 | * Run RMAN to duplicate the standby and Far Sync databases 41 | * Create the Data Guard Broker configuration 42 | * (Optionally) set the standby to managed apply 43 | # Errata 44 | This is tested in 19c for non-container databases only. 45 | -------------------------------------------------------------------------------- /labs/farsync/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | services: 3 | APPPROD: 4 | image: oraclesean/db:19.11-ee 5 | container_name: APPPROD 6 | volumes: 7 | - FS_APPPROD:/u01/app/oracle/oradata 8 | - /home/lab/docker/labs/farsync:/docker 9 | environment: 10 | CONTAINER_NAME: APPPROD 11 | ORACLE_SID: APPPROD 12 | DB_UNQNAME: APPPROD 13 | ORACLE_PWD: oracle 14 | PDB_COUNT: 0 15 | PDB_NAME: 16 | ROLE: PRIMARY 17 | DG_TARGET: APPS1DB,APPS2DB 18 | SETUP_DIR: /docker 19 | BROKER_SCRIPT: dg_broker.dgs 20 | BROKER_CHECKS: dg_check.dgs 21 | SETUP_PRIMARY: dg_setup_primary 22 | RMAN_DUPLICATE: rman_duplicate 23 | OPEN_MODE: OPEN 24 | 25 | ports: 26 | - 10000:1521 27 | 28 | APPS1DB: 29 | image: oraclesean/db:19.11-ee 30 | container_name: APPS1DB 31 | volumes: 32 | - FS_APPS1DB:/u01/app/oracle/oradata 33 | - /home/lab/docker/labs/farsync:/docker 34 | environment: 35 | CONTAINER_NAME: APPS1DB 36 | ORACLE_SID: APPPROD 37 | DB_UNQNAME: APPS1DB 38 | ORACLE_PWD: oracle 39 | PDB_COUNT: 0 40 | PDB_NAME: 41 | ROLE: STANDBY 42 | DG_TARGET: APPPROD 43 | SETUP_DIR: /docker 44 | BROKER_SCRIPT: dg_broker.dgs 45 | BROKER_CHECKS: dg_check.dgs 46 | SETUP_PRIMARY: dg_setup_primary 47 | RMAN_DUPLICATE: rman_duplicate 48 | OPEN_MODE: APPLY 49 | 50 | ports: 51 | - 10001:1521 52 | 53 | APPS2DB: 54 | image: oraclesean/db:19.11-ee 55 | container_name: APPS2DB 56 | volumes: 57 | - FS_APPS2DB:/u01/app/oracle/oradata 58 | - /home/lab/docker/labs/farsync:/docker 59 | environment: 60 | CONTAINER_NAME: APPS2DB 61 | ORACLE_SID: APPPROD 62 | DB_UNQNAME: APPS2DB 63 | ORACLE_PWD: oracle 64 | PDB_COUNT: 0 65 | PDB_NAME: 66 | ROLE: STANDBY 67 | DG_TARGET: APPPROD 68 | SETUP_DIR: /docker 69 | BROKER_SCRIPT: dg_broker.dgs 70 | BROKER_CHECKS: dg_check.dgs 71 | SETUP_PRIMARY: dg_setup_primary 72 | RMAN_DUPLICATE: rman_duplicate 73 | OPEN_MODE: APPLY 74 | 75 | ports: 76 | - 10002:1521 77 | 78 | APPFSDB: 79 | image: oraclesean/db:19.11-ee 80 | container_name: APPFSDB 81 | volumes: 82 | - FS_APPFSDB:/u01/app/oracle/oradata 83 | - /home/lab/docker/labs/farsync:/docker 84 | environment: 85 | CONTAINER_NAME: APPFSDB 86 | ORACLE_SID: APPPROD 87 | DB_UNQNAME: APPFSDB 88 | ORACLE_PWD: oracle 89 | PDB_COUNT: 0 90 | PDB_NAME: 91 | ROLE: FARSYNC 92 | DG_TARGET: 93 | SETUP_DIR: /docker 94 | BROKER_SCRIPT: dg_broker.dgs 95 | BROKER_CHECKS: dg_check.dgs 96 | SETUP_PRIMARY: dg_setup_primary 97 | RMAN_DUPLICATE: rman_duplicate 98 | OPEN_MODE: MOUNT 99 | 100 | ports: 101 | - 10003:1521 102 | 103 | volumes: 104 | FS_APPPROD: 105 | FS_APPS1DB: 106 | FS_APPS2DB: 107 | FS_APPFSDB: 108 | -------------------------------------------------------------------------------- /config/manifest.19: -------------------------------------------------------------------------------- 1 | 1858bd0d281c60f4ddabd87b1c214a4f LINUX.X64_193000_db_home.zip database 19 SE,EE 2 | #1f86171d22137e31cc2086bf7af36e91 oracle-database-ee-19c-1.0-1.x86_64.rpm database 19 SE,EE 3 | #f65d3ce87cec3a09c3f2bc480c58ea4b p6880880_190000_Linux-x86-64.zip opatch 19 6880880 4 | 9a66f9ff5ccedf1a253820d2984a540b p6880880_190000_Linux-x86-64.zip opatch 19 6880880 5 | 2a06e8c7409b21de9be6d404d39febda p30557433_190000_Linux-x86-64.zip patch 19.6 30557433 6 | 0e0831a46cc3f8312a761212505ba5d1 p30565805_196000DBRU_Linux-x86-64.zip patch 19.6 30565805 7 | f949a2bc8c5b1e01fd24ebee8c7feebe p30869156_190000_Linux-x86-64.zip patch 19.7 30869156 8 | fef4c7b7f7c313847de69667258eb3cd p30565805_197000DBRU_Linux-x86-64.zip patch 19.7 30565805 9 | 2003566250018b0b5c53e6f98d5d6d80 p31281355_190000_Linux-x86-64.zip patch 19.8 31281355 10 | bd8060c43c60bd4337bb2a89471b1fba p30565805_198000DBRU_Linux-x86-64.zip patch 19.8 30565805 11 | 65c2d78b70ebba4ee66d9454af9bbbb8 p31771877_190000_Linux-x86-64.zip patch 19.9 31771877 12 | add92eb9abca0f67593ae08e128bc3d4 p32218454_190000_Linux-x86-64.zip patch 19.10 32218454 13 | d2b136a8eb13e2446b62752b4d55db2f p32545013_190000_Linux-x86-64.zip patch 19.11 32545013 14 | f61d7cee9f16b70069cabe9617abc3d1 p33457235_1911000DBRU_Linux-x86-64.zip patch 19.11 33457235 15 | 726b68f86c2060a63808836a6831cb3d p33153989_190000_Linux-x86-64.zip patch 19.11.2 33153989 16 | 317e43c72d6c60dc4105b0be19acc84e p33457235_1911200DBRUR_Linux-x86-64.zip patch 19.11.2 33457235 17 | a3cc49832e94a6abd0490ab22732b39f p32904851_190000_Linux-x86-64.zip patch 19.12 32904851 18 | 1a86167e157ede01b3f266ce6b0994df p33457235_1912000DBRU_Linux-x86-64.zip patch 19.12 33457235 19 | 73133e0259a6fc39326001bc43976881 p33210889_190000_Linux-x86-64.zip patch 19.12.1 33210889 20 | 9d868fb8f273ef10338ee5ee15a7c336 p33457235_1912100DBRUR_Linux-x86-64.zip patch 19.12.1 33457235 21 | de60e587df931a96deac13c5119e4264 p33494256_190000_Linux-x86-64.zip patch 19.12.2 33494256 22 | 5b2f369f6c1f0397c656a5554bc864e6 p33192793_190000_Linux-x86-64.zip patch 19.13 33192793 23 | 680af566ae1ed41a9916dfb0a122565c p33457235_1913000DBRU_Linux-x86-64.zip patch 19.13 33457235 24 | 30eb702fe0c1bee393bb80ff8f10afe9 p33516456_190000_Linux-x86-64.zip patch 19.13.1 33516456 25 | de8c41d94676479b9aa35d66ca11c96a p33457235_1913100DBRUR_Linux-x86-64.zip patch 19.13.1 33457235 26 | b0f065b8cb6e6b45ccb3558042a7edc5 p33783771_190000_Linux-x86-64.zip patch 19.13.2 33783771 27 | 7bcfdcd0f3086531e232fd0237b7438f p33515361_190000_Linux-x86-64.zip patch 19.14 33515361 28 | 9af8fefc1cd25cfbef611922091a81bc p33806138_190000_Linux-x86-64.zip patch 19.14.1 33806138 29 | 665b940107da7f51f611fcbbf27f0df3 p34110559_190000_Linux-x86-64.zip patch 19.14.2 34110559 30 | 4b1ce8b287073994ddf72282a7d1e2e9 p33806152_190000_Linux-x86-64.zip patch 19.15 33806152 31 | ec7cc001b66271c6475b7dca7f6d0163 p33195096_1915000DBRU_Linux-x86-64.zip patch 19.15 33195096 32 | 5f7d0f8d72d425167a7f43dde54377de p34119532_190000_Linux-x86-64.zip patch 19.15.1 34119532 33 | ebc61b15e15aa0d84131b61ae776ba41 p34429835_190000_Linux-x86-64.zip patch 19.15.2 34429835 34 | 12d5aadb52df3269ad0d995657660bb0 p34133642_190000_Linux-x86-64.zip patch 19.16 34133642 35 | b82e96e953f3da29987b8914c64b3c4e p33195096_1916000DBRU_Linux-x86-64.zip patch 19.16 33195096 36 | 42a6c3484a1bd7f6aa3ca3434d762fb7 p34444812_190000_Linux-x86-64.zip patch 19.16.1 34444812 37 | 5866e2e148a1cecc267b3b43e68b62c3 p34419443_190000_Linux-x86-64.zip patch 19.17 34419443 38 | # DATABASE PERL UPDATE IN 19C TO V5.32-1 (CVE-2022-23990 - LIBEXPAT UPDATE) 39 | # General for any version, must be applied after RU 40 | fd96f9db3c1873dfee00efe8088186a4 p33912872_190000_Linux-x86-64.zip patch 19 33912872 41 | -------------------------------------------------------------------------------- /Dockerfiles/Dockerfile.11.2.0.4: -------------------------------------------------------------------------------- 1 | #----------------------------------------------------------# 2 | # # 3 | # Oracle Database Dockerfile # 4 | # # 5 | #----------------------------------------------------------# 6 | 7 | FROM oraclelinux:7-slim as base 8 | 9 | # Use ARGs to keep the environment clean 10 | 11 | # Database defaults 12 | ARG ORACLE_VERSION_NAME=11.2.0.4 13 | ARG ORACLE_VERSION=11.2.0.4 14 | ARG ORACLE_BASE=/u01/app/oracle 15 | ARG ORACLE_HOME=$ORACLE_BASE/product/$ORACLE_VERSION_NAME/dbhome_1 16 | ARG ORACLE_INV=/u01/app/oraInventory 17 | ARG ORADATA=/opt/oracle/oradata 18 | ARG ORACLE_EDITION=EE 19 | ARG ORACLE_SID=ORCL 20 | 21 | # Directory defaults 22 | ARG SCRIPTS_DIR=/opt/scripts 23 | ARG ORACLE_PATH=/home/oracle 24 | 25 | # Build defaults 26 | ARG RPM_LIST="oracle-epel-release-el7 file-5.11 git less strace sudo tree vi which bash-completion" 27 | ARG RPM_SUPPLEMENT="rlwrap" 28 | ARG MIN_SPACE_GB=12 29 | ARG BUILD_DATE= 30 | ARG BUILD_VERSION=1.0 31 | # Pass --build-arg DEBUG="bash -x" to run scripts in debug mode. 32 | ARG DEBUG= 33 | 34 | # DB configuration defaults 35 | ARG MANAGE_ORACLE=manageOracle.sh 36 | ARG ATTACH_HOME=0 37 | 38 | # Labels 39 | LABEL org.label-schema.schema-version="1.0" 40 | LABEL org.label-schema.url="http://oraclesean.com" 41 | LABEL org.label-schema.version="$BUILD_VERSION" 42 | LABEL org.label-schema.build-date="$BUILD_DATE" 43 | LABEL org.label-schema.vcs-url="https://github.com/oraclesean" 44 | LABEL org.label-schema.name="oraclesean/oracledb-$ORACLE_VERSION-$ORACLE_EDITION" 45 | LABEL org.label-schema.description="Extensible Oracle $ORACLE_VERSION database" 46 | LABEL org.label-schema.docker.cmd="docker run -d --name -e ORACLE_SID= " 47 | LABEL maintainer="Sean Scott " 48 | LABEL database.version="$ORACLE_VERSION" 49 | LABEL database.edition="$ORACLE_EDITION" 50 | LABEL volume.oraclebase="$ORACLE_BASE" 51 | LABEL volume.oracleinv="$ORACLE_INV" 52 | LABEL volume.oraclehome="$ORACLE_HOME" 53 | LABEL volume.data="$ORADATA" 54 | LABEL volume.scripts="$SCRIPTS_DIR" 55 | LABEL volume.scripts.manage="$MANAGE_ORACLE" 56 | LABEL volume.sqlpath="$ORACLE_PATH" 57 | LABEL port.listener.listener1="1521" 58 | LABEL port.oemexpress="5500" 59 | LABEL port.http="8080" 60 | LABEL database.default.sid="$ORACLE_SID" 61 | 62 | # Environment settings 63 | ENV ORACLE_BASE=$ORACLE_BASE \ 64 | ORACLE_HOME=$ORACLE_HOME \ 65 | ORACLE_INV=$ORACLE_INV \ 66 | ORADATA=$ORADATA \ 67 | ORACLE_VERSION=$ORACLE_VERSION \ 68 | ORACLE_EDITION=$ORACLE_EDITION \ 69 | ORACLE_SID=$ORACLE_SID \ 70 | ORACLE_PATH=$ORACLE_PATH \ 71 | SCRIPTS_DIR=$SCRIPTS_DIR \ 72 | MANAGE_ORACLE=$MANAGE_ORACLE \ 73 | ATTACH_HOME=$ATTACH_HOME \ 74 | DEBUG=$DEBUG 75 | 76 | ENV PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch/:/usr/sbin:$PATH \ 77 | CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib \ 78 | LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib \ 79 | TNS_ADMIN=$ORACLE_HOME/network/admin 80 | 81 | COPY $MANAGE_ORACLE $ORACLE_VERSION/install/dbca* $SCRIPTS_DIR/ 82 | 83 | # Build base image: 84 | RUN chmod ug+x $SCRIPTS_DIR/*.sh && \ 85 | $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE -e && \ 86 | rm -fr /tmp/* /var/cache/yum 87 | 88 | #----------------------------------------------------------# 89 | # # 90 | # Database Software Installation Stage # 91 | # # 92 | #----------------------------------------------------------# 93 | 94 | FROM base as db 95 | 96 | # DB installation defaults 97 | ARG INSTALL_DIR=/opt/install 98 | ARG INSTALL_RESPONSE=inst.rsp 99 | ARG REMOVE_COMPONENTS="DBMA,HELP,ORDS,OUI,PATCH,PILOT,SQLD,SUP,UCP,TCP,ZIP" 100 | 101 | # Copy DB install files 102 | COPY --chown=oracle:oinstall ./$ORACLE_VERSION/install/ $INSTALL_DIR/ 103 | COPY --chown=oracle:oinstall ./database/* $INSTALL_DIR/ 104 | 105 | # Install DB software binaries 106 | RUN $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE -O 107 | 108 | #----------------------------------------------------------# 109 | # # 110 | # Create a Database Runtime # 111 | # # 112 | #----------------------------------------------------------# 113 | 114 | FROM base 115 | 116 | USER oracle 117 | COPY --chown=oracle:oinstall --from=db $ORACLE_INV $ORACLE_INV 118 | COPY --chown=oracle:oinstall --from=db $ORACLE_BASE $ORACLE_BASE 119 | COPY --chown=oracle:oinstall --from=db $ORADATA $ORADATA 120 | 121 | USER root 122 | RUN $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE -R 123 | 124 | USER oracle 125 | WORKDIR /home/oracle 126 | 127 | VOLUME ["$ORADATA"] 128 | EXPOSE 1521 5500 8080 129 | HEALTHCHECK --interval=1m --start-period=5m CMD $SCRIPTS_DIR/$MANAGE_ORACLE -h >/dev/null || exit 1 130 | CMD exec $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE 131 | -------------------------------------------------------------------------------- /Dockerfiles/Dockerfile.11.2.0.2: -------------------------------------------------------------------------------- 1 | #----------------------------------------------------------# 2 | # # 3 | # Oracle Database Dockerfile # 4 | # # 5 | #----------------------------------------------------------# 6 | 7 | FROM oraclelinux:7-slim as base 8 | 9 | # Use ARGs to keep the environment clean 10 | 11 | # Database defaults 12 | ARG ORACLE_VERSION_NAME=11.2.0 13 | ARG ORACLE_VERSION=11.2.0.2 14 | ARG ORACLE_BASE=/u01/app/oracle 15 | ARG ORACLE_HOME=$ORACLE_BASE/product/$ORACLE_VERSION_NAME/xe 16 | ARG ORACLE_INV=/u01/app/oraInventory 17 | ARG ORADATA=/opt/oracle/oradata 18 | ARG ORACLE_EDITION=XE 19 | ARG ORACLE_SID=ORCL 20 | 21 | # Directory defaults 22 | ARG SCRIPTS_DIR=/opt/scripts 23 | ARG ORACLE_PATH=/home/oracle 24 | 25 | # Build defaults 26 | ARG RPM_LIST="oracle-epel-release-el7 file-5.11 git less strace sudo tree vi which bash-completion" 27 | ARG RPM_SUPPLEMENT="rlwrap" 28 | ARG MIN_SPACE_GB=12 29 | ARG BUILD_DATE= 30 | ARG BUILD_VERSION=1.0 31 | # Pass --build-arg DEBUG="bash -x" to run scripts in debug mode. 32 | ARG DEBUG= 33 | 34 | # DB configuration defaults 35 | ARG MANAGE_ORACLE=manageOracle.sh 36 | ARG ATTACH_HOME=0 37 | 38 | # Labels 39 | LABEL org.label-schema.schema-version="1.0" 40 | LABEL org.label-schema.url="http://oraclesean.com" 41 | LABEL org.label-schema.version="$BUILD_VERSION" 42 | LABEL org.label-schema.build-date="$BUILD_DATE" 43 | LABEL org.label-schema.vcs-url="https://github.com/oraclesean" 44 | LABEL org.label-schema.name="oraclesean/oracledb-$ORACLE_VERSION-$ORACLE_EDITION" 45 | LABEL org.label-schema.description="Extensible Oracle $ORACLE_VERSION database" 46 | LABEL org.label-schema.docker.cmd="docker run -d --name -e ORACLE_SID= " 47 | LABEL maintainer="Sean Scott " 48 | LABEL database.version="$ORACLE_VERSION" 49 | LABEL database.edition="$ORACLE_EDITION" 50 | LABEL volume.oraclebase="$ORACLE_BASE" 51 | LABEL volume.oracleinv="$ORACLE_INV" 52 | LABEL volume.oraclehome="$ORACLE_HOME" 53 | LABEL volume.data="$ORADATA" 54 | LABEL volume.scripts="$SCRIPTS_DIR" 55 | LABEL volume.scripts.manage="$MANAGE_ORACLE" 56 | LABEL volume.sqlpath="$ORACLE_PATH" 57 | LABEL port.listener.listener1="1521" 58 | LABEL port.oemexpress="5500" 59 | LABEL port.http="8080" 60 | LABEL database.default.sid="$ORACLE_SID" 61 | 62 | # Environment settings 63 | ENV ORACLE_BASE=$ORACLE_BASE \ 64 | ORACLE_HOME=$ORACLE_HOME \ 65 | ORACLE_INV=$ORACLE_INV \ 66 | ORADATA=$ORADATA \ 67 | ORACLE_VERSION=$ORACLE_VERSION \ 68 | ORACLE_EDITION=$ORACLE_EDITION \ 69 | ORACLE_SID=$ORACLE_SID \ 70 | ORACLE_PATH=$ORACLE_PATH \ 71 | SCRIPTS_DIR=$SCRIPTS_DIR \ 72 | MANAGE_ORACLE=$MANAGE_ORACLE \ 73 | ATTACH_HOME=$ATTACH_HOME \ 74 | DEBUG=$DEBUG 75 | 76 | ENV PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch/:/usr/sbin:$PATH \ 77 | CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib \ 78 | LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib \ 79 | TNS_ADMIN=$ORACLE_HOME/network/admin 80 | 81 | COPY $MANAGE_ORACLE $ORACLE_VERSION/install/dbca* $SCRIPTS_DIR/ 82 | 83 | # Build base image: 84 | RUN chmod ug+x $SCRIPTS_DIR/*.sh && \ 85 | $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE -e && \ 86 | rm -fr /tmp/* /var/cache/yum 87 | 88 | #----------------------------------------------------------# 89 | # # 90 | # Database Software Installation Stage # 91 | # # 92 | #----------------------------------------------------------# 93 | 94 | FROM base as db 95 | 96 | # DB installation defaults 97 | ARG INSTALL_DIR=/opt/install 98 | ARG INSTALL_RESPONSE=oracle-${ORACLE_VERSION}-${ORACLE_EDITION}.conf 99 | ARG INIT_FILE=oracle-xe 100 | ARG REMOVE_COMPONENTS="DBMA,HELP,ORDS,OUI,PATCH,PILOT,SQLD,SUP,UCP,TCP,ZIP" 101 | 102 | # Copy DB install files 103 | COPY --chown=oracle:oinstall ./$ORACLE_VERSION/install/ $INSTALL_DIR/ 104 | COPY --chown=oracle:oinstall ./database/* $INSTALL_DIR/ 105 | 106 | # Install DB software binaries 107 | RUN $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE -O 108 | 109 | #----------------------------------------------------------# 110 | # # 111 | # Create a Database Runtime # 112 | # # 113 | #----------------------------------------------------------# 114 | 115 | FROM base 116 | 117 | USER oracle 118 | COPY --chown=oracle:oinstall --from=db $ORACLE_INV $ORACLE_INV 119 | COPY --chown=oracle:oinstall --from=db $ORACLE_BASE $ORACLE_BASE 120 | COPY --chown=oracle:oinstall --from=db $ORADATA $ORADATA 121 | 122 | USER root 123 | RUN $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE -R 124 | 125 | USER oracle 126 | WORKDIR /home/oracle 127 | 128 | VOLUME ["$ORADATA"] 129 | EXPOSE 1521 5500 8080 130 | HEALTHCHECK --interval=1m --start-period=5m CMD $SCRIPTS_DIR/$MANAGE_ORACLE -h >/dev/null || exit 1 131 | CMD exec $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE 132 | -------------------------------------------------------------------------------- /templates/db.dockerfile: -------------------------------------------------------------------------------- 1 | # syntax=docker/dockerfile:1.4 2 | FROM ###FROM_OEL_BASE### as db 3 | 4 | # Database defaults 5 | ARG ORACLE_VERSION=###ORACLE_VERSION### 6 | ARG ORACLE_INV=/u01/app/oraInventory 7 | ARG ORACLE_BASE=/u01/app/oracle 8 | ARG ORACLE_HOME=$ORACLE_BASE/product/###ORACLE_HOME_ARG### 9 | ###ORACLE_BASE_HOME_ARG### 10 | ###ORACLE_BASE_CONFIG_ARG### 11 | ARG ORADATA=/opt/oracle/oradata 12 | ARG ORACLE_EDITION=###ORACLE_EDITION_ARG### 13 | ARG ORACLE_SID=###ORACLE_SID_ARG### 14 | ###ORACLE_PDB_ARG### 15 | ###PDB_COUNT_ARG### 16 | ###ORACLE_READ_ONLY_HOME_ARG### 17 | 18 | # Pass --build-arg DEBUG="bash -x" to run scripts in debug mode. 19 | ARG DEBUG= 20 | 21 | # DB installation defaults 22 | ARG INSTALL_RESPONSE=inst.###INSTALL_RESPONSE_ARG###.rsp 23 | ARG REMOVE_COMPONENTS="DBMA,HELP,ORDS,OUI,PATCH,PILOT,SQLD,SUP,UCP,TCP,ZIP" 24 | ARG FORCE_PATCH= 25 | ARG FILE_MD5SUM= 26 | 27 | # Environment settings 28 | ENV ORACLE_BASE=$ORACLE_BASE \ 29 | ORACLE_HOME=$ORACLE_HOME \ 30 | ORACLE_INV=$ORACLE_INV \ 31 | ###ORACLE_BASE_HOME_ENV### 32 | ###ORACLE_BASE_CONFIG_ENV### 33 | ORADATA=$ORADATA \ 34 | ORACLE_VERSION=$ORACLE_VERSION \ 35 | ORACLE_EDITION=$ORACLE_EDITION \ 36 | ORACLE_SID=$ORACLE_SID \ 37 | ###ORACLE_PDB_ENV### 38 | ###PDB_COUNT_ENV### 39 | ###ORACLE_ROH_ENV### 40 | ATTACH_HOME=$ATTACH_HOME \ 41 | DEBUG=$DEBUG \ 42 | PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch/:/usr/sbin:$PATH \ 43 | CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib \ 44 | LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib \ 45 | TNS_ADMIN=$ORACLE_HOME/network/admin 46 | 47 | # Copy DB install files 48 | COPY --chown=oracle:oinstall $MANAGE_ORACLE $SCRIPTS_DIR/ 49 | COPY --chown=oracle:oinstall ./config/inst.* $INSTALL_DIR/ 50 | COPY --chown=oracle:oinstall ./config/manifest.* $INSTALL_DIR/ 51 | COPY --chown=oracle:oinstall ./database/ $INSTALL_DIR/ 52 | 53 | # Install DB software binaries 54 | RUN ###MOS_SECRET### chmod ug+x $SCRIPTS_DIR/$MANAGE_ORACLE && \ 55 | $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE -O 56 | 57 | FROM ###FROM_OEL_BASE### 58 | 59 | # Build defaults 60 | ARG BUILD_DATE= 61 | ARG BUILD_VERSION=1.0 62 | 63 | # Database defaults 64 | ARG ORACLE_VERSION=###ORACLE_VERSION### 65 | ARG ORACLE_INV=/u01/app/oraInventory 66 | ARG ORACLE_BASE=/u01/app/oracle 67 | ARG ORACLE_HOME=$ORACLE_BASE/product/###ORACLE_HOME_ARG### 68 | ###ORACLE_BASE_HOME_ARG### 69 | ###ORACLE_BASE_CONFIG_ARG### 70 | ARG ORADATA=/opt/oracle/oradata 71 | ARG ORACLE_EDITION=###ORACLE_EDITION_ARG### 72 | ARG ORACLE_SID=###ORACLE_SID_ARG### 73 | ###ORACLE_PDB_ARG### 74 | ###PDB_COUNT_ARG### 75 | ###ORACLE_READ_ONLY_HOME_ARG### 76 | 77 | # Pass --build-arg DEBUG="bash -x" to run scripts in debug mode. 78 | ARG DEBUG= 79 | 80 | # Label the image: 81 | LABEL org.label-schema.schema-version="1.0" 82 | LABEL org.label-schema.url="http://oraclesean.com" 83 | LABEL org.label-schema.version="$BUILD_VERSION" 84 | LABEL org.label-schema.build-date="$BUILD_DATE" 85 | LABEL org.label-schema.vcs-url="https://github.com/oraclesean" 86 | LABEL org.label-schema.name="###DB_REPO###-${ORACLE_VERSION}-${ORACLE_EDITION}" 87 | LABEL org.label-schema.description="Extensible Oracle $ORACLE_VERSION database" 88 | LABEL org.label-schema.docker.cmd="docker run -d --name -e ORACLE_SID= ###DOCKER_RUN_LABEL### ###DB_REPO###-${ORACLE_VERSION}-${ORACLE_EDITION}" 89 | LABEL maintainer="Sean Scott " 90 | LABEL database.version="$ORACLE_VERSION" 91 | LABEL database.edition="$ORACLE_EDITION" 92 | ###SOFTWARE_LABEL### 93 | LABEL volume.data="$ORADATA" 94 | LABEL volume.diagnostic_dest="$ORACLE_BASE/diag" 95 | LABEL port.listener.listener1="1521" 96 | LABEL port.oemexpress="5500" 97 | LABEL port.http="8080" 98 | 99 | # Environment settings 100 | ENV ORACLE_BASE=$ORACLE_BASE \ 101 | ORACLE_HOME=$ORACLE_HOME \ 102 | ###ORACLE_BASE_HOME_ENV### 103 | ###ORACLE_BASE_CONFIG_ENV### 104 | ORADATA=$ORADATA \ 105 | ORACLE_VERSION=$ORACLE_VERSION \ 106 | ORACLE_EDITION=$ORACLE_EDITION \ 107 | ORACLE_SID=$ORACLE_SID \ 108 | ###ORACLE_PDB_ENV### 109 | ###PDB_COUNT_ENV### 110 | ###ORACLE_ROH_ENV### 111 | ATTACH_HOME=$ATTACH_HOME \ 112 | DEBUG=$DEBUG \ 113 | PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch/:/usr/sbin:$PATH \ 114 | CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib \ 115 | LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib \ 116 | TNS_ADMIN=$ORACLE_HOME/network/admin 117 | 118 | USER oracle 119 | COPY --chown=oracle:oinstall ./config/dbca.* $INSTALL_DIR/ 120 | COPY --chown=oracle:oinstall ./config/*.tmpl $INSTALL_DIR/ 121 | COPY --chown=oracle:oinstall $MANAGE_ORACLE $SCRIPTS_DIR/ 122 | COPY --chown=oracle:oinstall --from=db $ORACLE_INV $ORACLE_INV 123 | COPY --chown=oracle:oinstall --from=db $ORACLE_BASE $ORACLE_BASE 124 | COPY --chown=oracle:oinstall --from=db $ORADATA $ORADATA 125 | 126 | USER root 127 | RUN $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE -R 128 | 129 | USER oracle 130 | WORKDIR /home/oracle 131 | 132 | VOLUME ["$ORADATA"] 133 | VOLUME [ "$ORACLE_BASE/diag" ] 134 | ###SYSTEMD_VOLUME### 135 | EXPOSE 1521 5500 8080 136 | HEALTHCHECK --interval=1m --start-period=5m CMD $SCRIPTS_DIR/$MANAGE_ORACLE -h >/dev/null || exit 1 137 | CMD exec $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE 138 | -------------------------------------------------------------------------------- /Dockerfiles/Dockerfile.12.1: -------------------------------------------------------------------------------- 1 | #----------------------------------------------------------# 2 | # # 3 | # Oracle Database Dockerfile # 4 | # # 5 | #----------------------------------------------------------# 6 | 7 | FROM oraclelinux:7-slim as base 8 | 9 | # Use ARGs to keep the environment clean 10 | 11 | # Database defaults 12 | ARG ORACLE_VERSION_NAME=12.1.0.2 13 | ARG ORACLE_VERSION=12.1 14 | ARG ORACLE_BASE=/u01/app/oracle 15 | ARG ORACLE_HOME=$ORACLE_BASE/product/$ORACLE_VERSION_NAME/dbhome_1 16 | ARG ORACLE_INV=/u01/app/oraInventory 17 | ARG ORADATA=/opt/oracle/oradata 18 | ARG ORACLE_EDITION=EE 19 | ARG ORACLE_SID=ORCLCDB 20 | ARG ORACLE_PDB= 21 | ARG PDB_COUNT=1 22 | 23 | # Directory defaults 24 | ARG SCRIPTS_DIR=/opt/scripts 25 | ARG ORACLE_PATH=/home/oracle 26 | 27 | # Build defaults 28 | ARG RPM_LIST="oracle-epel-release-el7 file-5.11 git less strace sudo tree vi which bash-completion" 29 | ARG RPM_SUPPLEMENT="rlwrap" 30 | ARG MIN_SPACE_GB=12 31 | ARG BUILD_DATE= 32 | ARG BUILD_VERSION=1.0 33 | # Pass --build-arg DEBUG="bash -x" to run scripts in debug mode. 34 | ARG DEBUG= 35 | 36 | # DB configuration defaults 37 | ARG MANAGE_ORACLE=manageOracle.sh 38 | ARG ATTACH_HOME=0 39 | 40 | # Labels 41 | LABEL org.label-schema.schema-version="1.0" 42 | LABEL org.label-schema.url="http://oraclesean.com" 43 | LABEL org.label-schema.version="$BUILD_VERSION" 44 | LABEL org.label-schema.build-date="$BUILD_DATE" 45 | LABEL org.label-schema.vcs-url="https://github.com/oraclesean" 46 | LABEL org.label-schema.name="oraclesean/oracledb-$ORACLE_VERSION-$ORACLE_EDITION" 47 | LABEL org.label-schema.description="Extensible Oracle $ORACLE_VERSION database" 48 | LABEL org.label-schema.docker.cmd="docker run -d --name -e PDB_COUNT= -e ORACLE_SID= -e ORACLE_PDB= " 49 | LABEL maintainer="Sean Scott " 50 | LABEL database.version="$ORACLE_VERSION" 51 | LABEL database.edition="$ORACLE_EDITION" 52 | LABEL volume.oraclebase="$ORACLE_BASE" 53 | LABEL volume.oracleinv="$ORACLE_INV" 54 | LABEL volume.oraclehome="$ORACLE_HOME" 55 | LABEL volume.data="$ORADATA" 56 | LABEL volume.scripts="$SCRIPTS_DIR" 57 | LABEL volume.scripts.manage="$MANAGE_ORACLE" 58 | LABEL volume.sqlpath="$ORACLE_PATH" 59 | LABEL port.listener.listener1="1521" 60 | LABEL port.oemexpress="5500" 61 | LABEL port.http="8080" 62 | LABEL database.default.sid="$ORACLE_SID" 63 | LABEL database.default.pdb="$ORACLE_PDB" 64 | LABEL database.default.pdb_count="$PDB_COUNT" 65 | 66 | # Environment settings 67 | ENV ORACLE_BASE=$ORACLE_BASE \ 68 | ORACLE_HOME=$ORACLE_HOME \ 69 | ORACLE_INV=$ORACLE_INV \ 70 | ORADATA=$ORADATA \ 71 | ORACLE_VERSION=$ORACLE_VERSION \ 72 | ORACLE_EDITION=$ORACLE_EDITION \ 73 | ORACLE_SID=$ORACLE_SID \ 74 | ORACLE_PDB=$ORACLE_PDB \ 75 | PDB_COUNT=$PDB_COUNT \ 76 | ORACLE_PATH=$ORACLE_PATH \ 77 | SCRIPTS_DIR=$SCRIPTS_DIR \ 78 | MANAGE_ORACLE=$MANAGE_ORACLE \ 79 | ATTACH_HOME=$ATTACH_HOME \ 80 | DEBUG=$DEBUG 81 | 82 | ENV PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch/:/usr/sbin:$PATH \ 83 | CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib \ 84 | LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib \ 85 | TNS_ADMIN=$ORACLE_HOME/network/admin 86 | 87 | COPY $MANAGE_ORACLE $ORACLE_VERSION/install/dbca* $SCRIPTS_DIR/ 88 | 89 | # Build base image: 90 | RUN chmod ug+x $SCRIPTS_DIR/*.sh && \ 91 | $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE -e && \ 92 | rm -fr /tmp/* /var/cache/yum 93 | 94 | #----------------------------------------------------------# 95 | # # 96 | # Database Software Installation Stage # 97 | # # 98 | #----------------------------------------------------------# 99 | 100 | FROM base as db 101 | 102 | # DB installation defaults 103 | ARG INSTALL_DIR=/opt/install 104 | ARG INSTALL_RESPONSE=inst.rsp 105 | ARG REMOVE_COMPONENTS="DBMA,HELP,ORDS,OUI,PATCH,PILOT,SQLD,SUP,UCP,TCP,ZIP" 106 | 107 | # Copy DB install files 108 | COPY --chown=oracle:oinstall ./$ORACLE_VERSION/install/ $INSTALL_DIR/ 109 | COPY --chown=oracle:oinstall ./database/* $INSTALL_DIR/ 110 | 111 | # Install DB software binaries 112 | RUN $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE -O 113 | 114 | #----------------------------------------------------------# 115 | # # 116 | # Create a Database Runtime # 117 | # # 118 | #----------------------------------------------------------# 119 | 120 | FROM base 121 | 122 | USER oracle 123 | COPY --chown=oracle:oinstall --from=db $ORACLE_INV $ORACLE_INV 124 | COPY --chown=oracle:oinstall --from=db $ORACLE_BASE $ORACLE_BASE 125 | COPY --chown=oracle:oinstall --from=db $ORADATA $ORADATA 126 | 127 | USER root 128 | RUN $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE -R 129 | 130 | USER oracle 131 | WORKDIR /home/oracle 132 | 133 | VOLUME ["$ORADATA"] 134 | EXPOSE 1521 5500 8080 135 | HEALTHCHECK --interval=1m --start-period=5m CMD $SCRIPTS_DIR/$MANAGE_ORACLE -h >/dev/null || exit 1 136 | CMD exec $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE 137 | -------------------------------------------------------------------------------- /Dockerfiles/Dockerfile.12.2: -------------------------------------------------------------------------------- 1 | #----------------------------------------------------------# 2 | # # 3 | # Oracle Database Dockerfile # 4 | # # 5 | #----------------------------------------------------------# 6 | 7 | FROM oraclelinux:7-slim as base 8 | 9 | # Use ARGs to keep the environment clean 10 | 11 | # Database defaults 12 | ARG ORACLE_VERSION_NAME=12.2.0.1 13 | ARG ORACLE_VERSION=12.2 14 | ARG ORACLE_BASE=/u01/app/oracle 15 | ARG ORACLE_HOME=$ORACLE_BASE/product/$ORACLE_VERSION_NAME/dbhome_1 16 | ARG ORACLE_INV=/u01/app/oraInventory 17 | ARG ORADATA=/opt/oracle/oradata 18 | ARG ORACLE_EDITION=EE 19 | ARG ORACLE_SID=ORCLCDB 20 | ARG ORACLE_PDB= 21 | ARG PDB_COUNT=1 22 | 23 | # Directory defaults 24 | ARG SCRIPTS_DIR=/opt/scripts 25 | ARG ORACLE_PATH=/home/oracle 26 | 27 | # Build defaults 28 | ARG RPM_LIST="oracle-epel-release-el7 file-5.11 git less strace sudo tree vi which bash-completion" 29 | ARG RPM_SUPPLEMENT="rlwrap" 30 | ARG MIN_SPACE_GB=12 31 | ARG BUILD_DATE= 32 | ARG BUILD_VERSION=1.0 33 | # Pass --build-arg DEBUG="bash -x" to run scripts in debug mode. 34 | ARG DEBUG= 35 | 36 | # DB configuration defaults 37 | ARG MANAGE_ORACLE=manageOracle.sh 38 | ARG ATTACH_HOME=0 39 | 40 | # Labels 41 | LABEL org.label-schema.schema-version="1.0" 42 | LABEL org.label-schema.url="http://oraclesean.com" 43 | LABEL org.label-schema.version="$BUILD_VERSION" 44 | LABEL org.label-schema.build-date="$BUILD_DATE" 45 | LABEL org.label-schema.vcs-url="https://github.com/oraclesean" 46 | LABEL org.label-schema.name="oraclesean/oracledb-$ORACLE_VERSION-$ORACLE_EDITION" 47 | LABEL org.label-schema.description="Extensible Oracle $ORACLE_VERSION database" 48 | LABEL org.label-schema.docker.cmd="docker run -d --name -e PDB_COUNT= -e ORACLE_SID= -e ORACLE_PDB= " 49 | LABEL maintainer="Sean Scott " 50 | LABEL database.version="$ORACLE_VERSION" 51 | LABEL database.edition="$ORACLE_EDITION" 52 | LABEL volume.oraclebase="$ORACLE_BASE" 53 | LABEL volume.oracleinv="$ORACLE_INV" 54 | LABEL volume.oraclehome="$ORACLE_HOME" 55 | LABEL volume.data="$ORADATA" 56 | LABEL volume.scripts="$SCRIPTS_DIR" 57 | LABEL volume.scripts.manage="$MANAGE_ORACLE" 58 | LABEL volume.sqlpath="$ORACLE_PATH" 59 | LABEL port.listener.listener1="1521" 60 | LABEL port.oemexpress="5500" 61 | LABEL port.http="8080" 62 | LABEL database.default.sid="$ORACLE_SID" 63 | LABEL database.default.pdb="$ORACLE_PDB" 64 | LABEL database.default.pdb_count="$PDB_COUNT" 65 | 66 | # Environment settings 67 | ENV ORACLE_BASE=$ORACLE_BASE \ 68 | ORACLE_HOME=$ORACLE_HOME \ 69 | ORACLE_INV=$ORACLE_INV \ 70 | ORADATA=$ORADATA \ 71 | ORACLE_VERSION=$ORACLE_VERSION \ 72 | ORACLE_EDITION=$ORACLE_EDITION \ 73 | ORACLE_SID=$ORACLE_SID \ 74 | ORACLE_PDB=$ORACLE_PDB \ 75 | PDB_COUNT=$PDB_COUNT \ 76 | ORACLE_PATH=$ORACLE_PATH \ 77 | SCRIPTS_DIR=$SCRIPTS_DIR \ 78 | MANAGE_ORACLE=$MANAGE_ORACLE \ 79 | ATTACH_HOME=$ATTACH_HOME \ 80 | DEBUG=$DEBUG 81 | 82 | ENV PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch/:/usr/sbin:$PATH \ 83 | CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib \ 84 | LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib \ 85 | TNS_ADMIN=$ORACLE_HOME/network/admin 86 | 87 | COPY $MANAGE_ORACLE $ORACLE_VERSION/install/dbca* $SCRIPTS_DIR/ 88 | 89 | # Build base image: 90 | RUN chmod ug+x $SCRIPTS_DIR/*.sh && \ 91 | $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE -e && \ 92 | rm -fr /tmp/* /var/cache/yum 93 | 94 | #----------------------------------------------------------# 95 | # # 96 | # Database Software Installation Stage # 97 | # # 98 | #----------------------------------------------------------# 99 | 100 | FROM base as db 101 | 102 | # DB installation defaults 103 | ARG INSTALL_DIR=/opt/install 104 | ARG INSTALL_RESPONSE=inst.rsp 105 | ARG REMOVE_COMPONENTS="DBMA,HELP,ORDS,OUI,PATCH,PILOT,SQLD,SUP,UCP,TCP,ZIP" 106 | 107 | # Copy DB install files 108 | COPY --chown=oracle:oinstall ./$ORACLE_VERSION/install/ $INSTALL_DIR/ 109 | COPY --chown=oracle:oinstall ./database/* $INSTALL_DIR/ 110 | 111 | # Install DB software binaries 112 | RUN $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE -O 113 | 114 | #----------------------------------------------------------# 115 | # # 116 | # Create a Database Runtime # 117 | # # 118 | #----------------------------------------------------------# 119 | 120 | FROM base 121 | 122 | USER oracle 123 | COPY --chown=oracle:oinstall --from=db $ORACLE_INV $ORACLE_INV 124 | COPY --chown=oracle:oinstall --from=db $ORACLE_BASE $ORACLE_BASE 125 | COPY --chown=oracle:oinstall --from=db $ORADATA $ORADATA 126 | 127 | USER root 128 | RUN $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE -R 129 | 130 | USER oracle 131 | WORKDIR /home/oracle 132 | 133 | VOLUME ["$ORADATA"] 134 | EXPOSE 1521 5500 8080 135 | HEALTHCHECK --interval=1m --start-period=5m CMD $SCRIPTS_DIR/$MANAGE_ORACLE -h >/dev/null || exit 1 136 | CMD exec $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE 137 | -------------------------------------------------------------------------------- /Dockerfiles/Dockerfile.18.4: -------------------------------------------------------------------------------- 1 | #----------------------------------------------------------# 2 | # # 3 | # Oracle Database Dockerfile # 4 | # # 5 | #----------------------------------------------------------# 6 | 7 | FROM oraclelinux:7-slim as base 8 | 9 | # Use ARGs to keep the environment clean 10 | 11 | # Database defaults 12 | ARG ORACLE_VERSION_NAME=18c 13 | ARG ORACLE_VERSION=18.4 14 | ARG ORACLE_BASE=/u01/app/oracle 15 | ARG ORACLE_HOME=$ORACLE_BASE/product/$ORACLE_VERSION_NAME/dbhomeXE 16 | ARG ORACLE_INV=/u01/app/oraInventory 17 | ARG ORADATA=/opt/oracle/oradata 18 | ARG ORACLE_EDITION=XE 19 | ARG ORACLE_SID=XE 20 | ARG ORACLE_PDB=XEPDB 21 | ARG PDB_COUNT=1 22 | 23 | # Directory defaults 24 | ARG SCRIPTS_DIR=/opt/scripts 25 | ARG ORACLE_PATH=/home/oracle 26 | 27 | # Build defaults 28 | ARG RPM_LIST="oracle-epel-release-el7 file-5.11 git less strace sudo tree vi which bash-completion" 29 | ARG RPM_SUPPLEMENT="rlwrap" 30 | ARG MIN_SPACE_GB=13 31 | ARG BUILD_DATE= 32 | ARG BUILD_VERSION=1.0 33 | # Pass --build-arg DEBUG="bash -x" to run scripts in debug mode. 34 | ARG DEBUG= 35 | 36 | # DB configuration defaults 37 | ARG MANAGE_ORACLE=manageOracle.sh 38 | ARG ATTACH_HOME=0 39 | 40 | # Labels 41 | LABEL org.label-schema.schema-version="1.0" 42 | LABEL org.label-schema.url="http://oraclesean.com" 43 | LABEL org.label-schema.version="$BUILD_VERSION" 44 | LABEL org.label-schema.build-date="$BUILD_DATE" 45 | LABEL org.label-schema.vcs-url="https://github.com/oraclesean" 46 | LABEL org.label-schema.name="oraclesean/oracledb-$ORACLE_VERSION-$ORACLE_EDITION" 47 | LABEL org.label-schema.description="Extensible Oracle $ORACLE_VERSION database" 48 | LABEL org.label-schema.docker.cmd="docker run -d --name -e PDB_COUNT= -e ORACLE_SID= -e ORACLE_PDB= " 49 | LABEL maintainer="Sean Scott " 50 | LABEL database.version="$ORACLE_VERSION" 51 | LABEL database.edition="$ORACLE_EDITION" 52 | LABEL volume.oraclebase="$ORACLE_BASE" 53 | LABEL volume.oracleinv="$ORACLE_INV" 54 | LABEL volume.oraclehome="$ORACLE_HOME" 55 | LABEL volume.data="$ORADATA" 56 | LABEL volume.scripts="$SCRIPTS_DIR" 57 | LABEL volume.scripts.manage="$MANAGE_ORACLE" 58 | LABEL volume.sqlpath="$ORACLE_PATH" 59 | LABEL port.listener.listener1="1521" 60 | LABEL port.oemexpress="5500" 61 | LABEL port.http="8080" 62 | LABEL database.default.sid="$ORACLE_SID" 63 | LABEL database.default.pdb="$ORACLE_PDB" 64 | LABEL database.default.pdb_count="$PDB_COUNT" 65 | 66 | # Environment settings 67 | ENV ORACLE_BASE=$ORACLE_BASE \ 68 | ORACLE_HOME=$ORACLE_HOME \ 69 | ORACLE_INV=$ORACLE_INV \ 70 | ORADATA=$ORADATA \ 71 | ORACLE_VERSION=$ORACLE_VERSION \ 72 | ORACLE_EDITION=$ORACLE_EDITION \ 73 | ORACLE_SID=$ORACLE_SID \ 74 | ORACLE_PDB=$ORACLE_PDB \ 75 | PDB_COUNT=$PDB_COUNT \ 76 | ORACLE_PATH=$ORACLE_PATH \ 77 | SCRIPTS_DIR=$SCRIPTS_DIR \ 78 | MANAGE_ORACLE=$MANAGE_ORACLE \ 79 | ATTACH_HOME=$ATTACH_HOME \ 80 | DEBUG=$DEBUG 81 | 82 | ENV PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch/:/usr/sbin:$PATH \ 83 | CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib \ 84 | LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib \ 85 | TNS_ADMIN=$ORACLE_HOME/network/admin 86 | 87 | COPY $MANAGE_ORACLE $ORACLE_VERSION/install/dbca* $SCRIPTS_DIR/ 88 | 89 | # Build base image: 90 | RUN chmod ug+x $SCRIPTS_DIR/*.sh && \ 91 | $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE -e && \ 92 | rm -fr /tmp/* /var/cache/yum 93 | 94 | #----------------------------------------------------------# 95 | # # 96 | # Database Software Installation Stage # 97 | # # 98 | #----------------------------------------------------------# 99 | 100 | FROM base as db 101 | 102 | # DB installation defaults 103 | ARG INSTALL_DIR=/opt/install 104 | ARG ORACLE_RPM="https://download.oracle.com/otn-pub/otn_software/db-express/oracle-database-xe-18c-1.0-1.x86_64.rpm" 105 | ARG INSTALL_RESPONSE=oracle-${ORACLE_VERSION}-${ORACLE_EDITION}.conf 106 | ARG INIT_FILE=oracle-xe-18c 107 | ARG REMOVE_COMPONENTS="DBMA,HELP,ORDS,OUI,PATCH,PILOT,SQLD,SUP,UCP,TCP,ZIP" 108 | 109 | # Copy DB install files 110 | COPY --chown=oracle:oinstall ./$ORACLE_VERSION/install/ $INSTALL_DIR/ 111 | COPY --chown=oracle:oinstall ./database/* $INSTALL_DIR/ 112 | 113 | # Install DB software binaries 114 | RUN $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE -O 115 | 116 | #----------------------------------------------------------# 117 | # # 118 | # Create a Database Runtime # 119 | # # 120 | #----------------------------------------------------------# 121 | 122 | FROM base 123 | 124 | USER oracle 125 | COPY --chown=oracle:oinstall --from=db $ORACLE_INV $ORACLE_INV 126 | COPY --chown=oracle:oinstall --from=db $ORACLE_BASE $ORACLE_BASE 127 | COPY --chown=oracle:oinstall --from=db $ORADATA $ORADATA 128 | 129 | USER root 130 | RUN $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE -R 131 | 132 | USER oracle 133 | WORKDIR /home/oracle 134 | 135 | VOLUME ["$ORADATA"] 136 | 137 | EXPOSE 1521 5500 8080 138 | HEALTHCHECK --interval=1m --start-period=5m CMD $SCRIPTS_DIR/$MANAGE_ORACLE -h >/dev/null || exit 1 139 | CMD exec $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE 140 | -------------------------------------------------------------------------------- /Dockerfiles/Dockerfile.18.3: -------------------------------------------------------------------------------- 1 | #----------------------------------------------------------# 2 | # # 3 | # Oracle Database Dockerfile # 4 | # # 5 | #----------------------------------------------------------# 6 | 7 | FROM oraclelinux:7-slim as base 8 | 9 | # Use ARGs to keep the environment clean 10 | 11 | # Database defaults 12 | ARG ORACLE_VERSION_NAME=18c 13 | ARG ORACLE_VERSION=18.3 14 | ARG ORACLE_BASE=/u01/app/oracle 15 | ARG ORACLE_BASE_HOME=$ORACLE_BASE/homes 16 | ARG ORACLE_BASE_CONFIG=$ORACLE_BASE/dbs 17 | ARG ORACLE_HOME=$ORACLE_BASE/product/$ORACLE_VERSION_NAME/dbhome_1 18 | ARG ORACLE_INV=/u01/app/oraInventory 19 | ARG ORADATA=/opt/oracle/oradata 20 | ARG ORACLE_EDITION=EE 21 | ARG ORACLE_SID=ORCLCDB 22 | ARG ORACLE_PDB= 23 | ARG PDB_COUNT=1 24 | # Set ROOH to ENABLE to use a Read Only Oracle Home 25 | ARG ROOH= 26 | 27 | # Directory defaults 28 | ARG SCRIPTS_DIR=/opt/scripts 29 | ARG ORACLE_PATH=/home/oracle 30 | 31 | # Build defaults 32 | ARG RPM_LIST="oracle-epel-release-el7 file-5.11 git less strace sudo tree vi which bash-completion" 33 | ARG RPM_SUPPLEMENT="rlwrap" 34 | ARG MIN_SPACE_GB=12 35 | ARG BUILD_DATE= 36 | ARG BUILD_VERSION=1.0 37 | # Pass --build-arg DEBUG="bash -x" to run scripts in debug mode. 38 | ARG DEBUG= 39 | 40 | # DB configuration defaults 41 | ARG MANAGE_ORACLE=manageOracle.sh 42 | ARG ATTACH_HOME=0 43 | 44 | # Labels 45 | LABEL org.label-schema.schema-version="1.0" 46 | LABEL org.label-schema.url="http://oraclesean.com" 47 | LABEL org.label-schema.version="$BUILD_VERSION" 48 | LABEL org.label-schema.build-date="$BUILD_DATE" 49 | LABEL org.label-schema.vcs-url="https://github.com/oraclesean" 50 | LABEL org.label-schema.name="oraclesean/oracledb-$ORACLE_VERSION-$ORACLE_EDITION" 51 | LABEL org.label-schema.description="Extensible Oracle $ORACLE_VERSION database" 52 | LABEL org.label-schema.docker.cmd="docker run -d --name -e PDB_COUNT= -e ORACLE_SID= -e ORACLE_PDB= " 53 | LABEL maintainer="Sean Scott " 54 | LABEL database.version="$ORACLE_VERSION" 55 | LABEL database.edition="$ORACLE_EDITION" 56 | LABEL volume.oraclebase="$ORACLE_BASE" 57 | LABEL volume.oracleinv="$ORACLE_INV" 58 | LABEL volume.oraclehome="$ORACLE_HOME" 59 | LABEL volume.data="$ORADATA" 60 | LABEL volume.scripts="$SCRIPTS_DIR" 61 | LABEL volume.scripts.manage="$MANAGE_ORACLE" 62 | LABEL volume.sqlpath="$ORACLE_PATH" 63 | LABEL port.listener.listener1="1521" 64 | LABEL port.oemexpress="5500" 65 | LABEL port.http="8080" 66 | LABEL database.default.sid="$ORACLE_SID" 67 | LABEL database.default.pdb="$ORACLE_PDB" 68 | LABEL database.default.pdb_count="$PDB_COUNT" 69 | 70 | # Environment settings 71 | ENV ORACLE_BASE=$ORACLE_BASE \ 72 | ORACLE_BASE_HOME=$ORACLE_BASE_HOME \ 73 | ORACLE_BASE_CONFIG=$ORACLE_BASE_CONFIG \ 74 | ORACLE_HOME=$ORACLE_HOME \ 75 | ORACLE_INV=$ORACLE_INV \ 76 | ORADATA=$ORADATA \ 77 | ORACLE_VERSION=$ORACLE_VERSION \ 78 | ORACLE_EDITION=$ORACLE_EDITION \ 79 | ORACLE_SID=$ORACLE_SID \ 80 | ORACLE_PDB=$ORACLE_PDB \ 81 | PDB_COUNT=$PDB_COUNT \ 82 | ROOH=$ROOH \ 83 | ORACLE_PATH=$ORACLE_PATH \ 84 | SCRIPTS_DIR=$SCRIPTS_DIR \ 85 | MANAGE_ORACLE=$MANAGE_ORACLE \ 86 | ATTACH_HOME=$ATTACH_HOME \ 87 | DEBUG=$DEBUG 88 | 89 | ENV PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch/:/usr/sbin:$PATH \ 90 | CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib \ 91 | LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib \ 92 | TNS_ADMIN=$ORACLE_HOME/network/admin 93 | 94 | COPY $MANAGE_ORACLE $ORACLE_VERSION/install/dbca* $SCRIPTS_DIR/ 95 | 96 | # Build base image: 97 | RUN chmod ug+x $SCRIPTS_DIR/*.sh && \ 98 | $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE -e && \ 99 | rm -fr /tmp/* /var/cache/yum 100 | 101 | #----------------------------------------------------------# 102 | # # 103 | # Database Software Installation Stage # 104 | # # 105 | #----------------------------------------------------------# 106 | 107 | FROM base as db 108 | 109 | # DB installation defaults 110 | ARG INSTALL_DIR=/opt/install 111 | ARG INSTALL_RESPONSE=inst.rsp 112 | ARG INIT_FILE=oracledb_ORCLCDB-$ORACLE_VERSION_NAME 113 | ARG REMOVE_COMPONENTS="DBMA,HELP,ORDS,OUI,PATCH,PILOT,SQLD,SUP,UCP,TCP,ZIP" 114 | 115 | # Copy DB install files 116 | COPY --chown=oracle:oinstall ./$ORACLE_VERSION/install/ $INSTALL_DIR/ 117 | COPY --chown=oracle:oinstall ./database/* $INSTALL_DIR/ 118 | 119 | # Install DB software binaries 120 | RUN $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE -O 121 | 122 | #----------------------------------------------------------# 123 | # # 124 | # Create a Database Runtime # 125 | # # 126 | #----------------------------------------------------------# 127 | 128 | FROM base 129 | 130 | USER oracle 131 | COPY --chown=oracle:oinstall --from=db $ORACLE_INV $ORACLE_INV 132 | COPY --chown=oracle:oinstall --from=db $ORACLE_BASE $ORACLE_BASE 133 | COPY --chown=oracle:oinstall --from=db $ORADATA $ORADATA 134 | 135 | USER root 136 | RUN $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE -R 137 | 138 | USER oracle 139 | WORKDIR /home/oracle 140 | 141 | VOLUME ["$ORADATA"] 142 | EXPOSE 1521 5500 8080 143 | HEALTHCHECK --interval=1m --start-period=5m CMD $SCRIPTS_DIR/$MANAGE_ORACLE -h >/dev/null || exit 1 144 | CMD exec $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE 145 | -------------------------------------------------------------------------------- /Dockerfiles/Dockerfile.19.11: -------------------------------------------------------------------------------- 1 | #----------------------------------------------------------# 2 | # # 3 | # Oracle Database Dockerfile # 4 | # # 5 | #----------------------------------------------------------# 6 | 7 | FROM oraclelinux:7-slim as base 8 | 9 | # Use ARGs to keep the environment clean 10 | 11 | # Database defaults 12 | ARG ORACLE_VERSION_NAME=19c 13 | ARG ORACLE_VERSION=19.11 14 | ARG ORACLE_BASE=/u01/app/oracle 15 | ARG ORACLE_BASE_HOME=$ORACLE_BASE/homes 16 | ARG ORACLE_BASE_CONFIG=$ORACLE_BASE/dbs 17 | ARG ORACLE_HOME=$ORACLE_BASE/product/$ORACLE_VERSION_NAME/dbhome_1 18 | ARG ORACLE_INV=/u01/app/oraInventory 19 | ARG ORADATA=/opt/oracle/oradata 20 | ARG ORACLE_EDITION=EE 21 | ARG ORACLE_SID=ORCLCDB 22 | ARG ORACLE_PDB= 23 | ARG PDB_COUNT=1 24 | # Set ROOH to ENABLE to use a Read Only Oracle Home 25 | ARG ROOH= 26 | 27 | # Directory defaults 28 | ARG SCRIPTS_DIR=/opt/scripts 29 | ARG ORACLE_PATH=/home/oracle 30 | 31 | # Build defaults 32 | ARG RPM_LIST="oracle-epel-release-el7 file-5.11 git less strace sudo tree vi which bash-completion" 33 | ARG RPM_SUPPLEMENT="rlwrap" 34 | ARG MIN_SPACE_GB=12 35 | ARG BUILD_DATE= 36 | ARG BUILD_VERSION=1.0 37 | # Pass --build-arg DEBUG="bash -x" to run scripts in debug mode. 38 | ARG DEBUG= 39 | 40 | # DB configuration defaults 41 | ARG MANAGE_ORACLE=manageOracle.sh 42 | ARG ATTACH_HOME=0 43 | 44 | # Labels 45 | LABEL org.label-schema.schema-version="1.0" 46 | LABEL org.label-schema.url="http://oraclesean.com" 47 | LABEL org.label-schema.version="$BUILD_VERSION" 48 | LABEL org.label-schema.build-date="$BUILD_DATE" 49 | LABEL org.label-schema.vcs-url="https://github.com/oraclesean" 50 | LABEL org.label-schema.name="oraclesean/oracledb-$ORACLE_VERSION-$ORACLE_EDITION" 51 | LABEL org.label-schema.description="Extensible Oracle $ORACLE_VERSION database" 52 | LABEL org.label-schema.docker.cmd="docker run -d --name -e PDB_COUNT= -e ORACLE_SID= -e ORACLE_PDB= " 53 | LABEL maintainer="Sean Scott " 54 | LABEL database.version="$ORACLE_VERSION" 55 | LABEL database.edition="$ORACLE_EDITION" 56 | LABEL volume.oraclebase="$ORACLE_BASE" 57 | LABEL volume.oracleinv="$ORACLE_INV" 58 | LABEL volume.oraclehome="$ORACLE_HOME" 59 | LABEL volume.data="$ORADATA" 60 | LABEL volume.scripts="$SCRIPTS_DIR" 61 | LABEL volume.scripts.manage="$MANAGE_ORACLE" 62 | LABEL volume.sqlpath="$ORACLE_PATH" 63 | LABEL port.listener.listener1="1521" 64 | LABEL port.oemexpress="5500" 65 | LABEL port.http="8080" 66 | LABEL database.default.sid="$ORACLE_SID" 67 | LABEL database.default.pdb="$ORACLE_PDB" 68 | LABEL database.default.pdb_count="$PDB_COUNT" 69 | 70 | # Environment settings 71 | ENV ORACLE_BASE=$ORACLE_BASE \ 72 | ORACLE_BASE_HOME=$ORACLE_BASE_HOME \ 73 | ORACLE_BASE_CONFIG=$ORACLE_BASE_CONFIG \ 74 | ORACLE_HOME=$ORACLE_HOME \ 75 | ORACLE_INV=$ORACLE_INV \ 76 | ORADATA=$ORADATA \ 77 | ORACLE_VERSION=$ORACLE_VERSION \ 78 | ORACLE_EDITION=$ORACLE_EDITION \ 79 | ORACLE_SID=$ORACLE_SID \ 80 | ORACLE_PDB=$ORACLE_PDB \ 81 | PDB_COUNT=$PDB_COUNT \ 82 | ROOH=$ROOH \ 83 | ORACLE_PATH=$ORACLE_PATH \ 84 | SCRIPTS_DIR=$SCRIPTS_DIR \ 85 | MANAGE_ORACLE=$MANAGE_ORACLE \ 86 | ATTACH_HOME=$ATTACH_HOME \ 87 | DEBUG=$DEBUG 88 | 89 | ENV PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch/:/usr/sbin:$PATH \ 90 | CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib \ 91 | LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib \ 92 | TNS_ADMIN=$ORACLE_HOME/network/admin 93 | 94 | COPY $MANAGE_ORACLE $ORACLE_VERSION/install/dbca* $SCRIPTS_DIR/ 95 | 96 | # Build base image: 97 | RUN chmod ug+x $SCRIPTS_DIR/*.sh && \ 98 | $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE -e && \ 99 | rm -fr /tmp/* /var/cache/yum 100 | 101 | #----------------------------------------------------------# 102 | # # 103 | # Database Software Installation Stage # 104 | # # 105 | #----------------------------------------------------------# 106 | 107 | FROM base as db 108 | 109 | # DB installation defaults 110 | ARG INSTALL_DIR=/opt/install 111 | ARG INSTALL_RESPONSE=inst.rsp 112 | ARG INIT_FILE=oracledb_ORCLCDB-$ORACLE_VERSION_NAME 113 | ARG REMOVE_COMPONENTS="DBMA,HELP,ORDS,OUI,PATCH,PILOT,SQLD,SUP,UCP,TCP,ZIP" 114 | 115 | # Copy DB install files 116 | COPY --chown=oracle:oinstall ./$ORACLE_VERSION/install/ $INSTALL_DIR/ 117 | COPY --chown=oracle:oinstall ./database/* $INSTALL_DIR/ 118 | 119 | # Install DB software binaries 120 | RUN $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE -O 121 | 122 | #----------------------------------------------------------# 123 | # # 124 | # Create a Database Runtime # 125 | # # 126 | #----------------------------------------------------------# 127 | 128 | FROM base 129 | 130 | USER oracle 131 | COPY --chown=oracle:oinstall --from=db $ORACLE_INV $ORACLE_INV 132 | COPY --chown=oracle:oinstall --from=db $ORACLE_BASE $ORACLE_BASE 133 | COPY --chown=oracle:oinstall --from=db $ORADATA $ORADATA 134 | 135 | USER root 136 | RUN $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE -R 137 | 138 | USER oracle 139 | WORKDIR /home/oracle 140 | 141 | VOLUME ["$ORADATA"] 142 | EXPOSE 1521 5500 8080 143 | HEALTHCHECK --interval=1m --start-period=5m CMD $SCRIPTS_DIR/$MANAGE_ORACLE -h >/dev/null || exit 1 144 | CMD exec $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE 145 | -------------------------------------------------------------------------------- /Dockerfiles/Dockerfile.19.12: -------------------------------------------------------------------------------- 1 | #----------------------------------------------------------# 2 | # # 3 | # Oracle Database Dockerfile # 4 | # # 5 | #----------------------------------------------------------# 6 | 7 | FROM oraclelinux:7-slim as base 8 | 9 | # Use ARGs to keep the environment clean 10 | 11 | # Database defaults 12 | ARG ORACLE_VERSION_NAME=19c 13 | ARG ORACLE_VERSION=19.12 14 | ARG ORACLE_BASE=/u01/app/oracle 15 | ARG ORACLE_BASE_HOME=$ORACLE_BASE/homes 16 | ARG ORACLE_BASE_CONFIG=$ORACLE_BASE/dbs 17 | ARG ORACLE_HOME=$ORACLE_BASE/product/$ORACLE_VERSION_NAME/dbhome_1 18 | ARG ORACLE_INV=/u01/app/oraInventory 19 | ARG ORADATA=/opt/oracle/oradata 20 | ARG ORACLE_EDITION=EE 21 | ARG ORACLE_SID=ORCLCDB 22 | ARG ORACLE_PDB= 23 | ARG PDB_COUNT=1 24 | # Set ROOH to ENABLE to use a Read Only Oracle Home 25 | ARG ROOH= 26 | 27 | # Directory defaults 28 | ARG SCRIPTS_DIR=/opt/scripts 29 | ARG ORACLE_PATH=/home/oracle 30 | 31 | # Build defaults 32 | ARG RPM_LIST="oracle-epel-release-el7 file-5.11 git less strace sudo tree vi which bash-completion" 33 | ARG RPM_SUPPLEMENT="rlwrap" 34 | ARG MIN_SPACE_GB=12 35 | ARG BUILD_DATE= 36 | ARG BUILD_VERSION=1.0 37 | # Pass --build-arg DEBUG="bash -x" to run scripts in debug mode. 38 | ARG DEBUG= 39 | 40 | # DB configuration defaults 41 | ARG MANAGE_ORACLE=manageOracle.sh 42 | ARG ATTACH_HOME=0 43 | 44 | # Labels 45 | LABEL org.label-schema.schema-version="1.0" 46 | LABEL org.label-schema.url="http://oraclesean.com" 47 | LABEL org.label-schema.version="$BUILD_VERSION" 48 | LABEL org.label-schema.build-date="$BUILD_DATE" 49 | LABEL org.label-schema.vcs-url="https://github.com/oraclesean" 50 | LABEL org.label-schema.name="oraclesean/oracledb-$ORACLE_VERSION-$ORACLE_EDITION" 51 | LABEL org.label-schema.description="Extensible Oracle $ORACLE_VERSION database" 52 | LABEL org.label-schema.docker.cmd="docker run -d --name -e PDB_COUNT= -e ORACLE_SID= -e ORACLE_PDB= " 53 | LABEL maintainer="Sean Scott " 54 | LABEL database.version="$ORACLE_VERSION" 55 | LABEL database.edition="$ORACLE_EDITION" 56 | LABEL volume.oraclebase="$ORACLE_BASE" 57 | LABEL volume.oracleinv="$ORACLE_INV" 58 | LABEL volume.oraclehome="$ORACLE_HOME" 59 | LABEL volume.data="$ORADATA" 60 | LABEL volume.scripts="$SCRIPTS_DIR" 61 | LABEL volume.scripts.manage="$MANAGE_ORACLE" 62 | LABEL volume.sqlpath="$ORACLE_PATH" 63 | LABEL port.listener.listener1="1521" 64 | LABEL port.oemexpress="5500" 65 | LABEL port.http="8080" 66 | LABEL database.default.sid="$ORACLE_SID" 67 | LABEL database.default.pdb="$ORACLE_PDB" 68 | LABEL database.default.pdb_count="$PDB_COUNT" 69 | 70 | # Environment settings 71 | ENV ORACLE_BASE=$ORACLE_BASE \ 72 | ORACLE_BASE_HOME=$ORACLE_BASE_HOME \ 73 | ORACLE_BASE_CONFIG=$ORACLE_BASE_CONFIG \ 74 | ORACLE_HOME=$ORACLE_HOME \ 75 | ORACLE_INV=$ORACLE_INV \ 76 | ORADATA=$ORADATA \ 77 | ORACLE_VERSION=$ORACLE_VERSION \ 78 | ORACLE_EDITION=$ORACLE_EDITION \ 79 | ORACLE_SID=$ORACLE_SID \ 80 | ORACLE_PDB=$ORACLE_PDB \ 81 | PDB_COUNT=$PDB_COUNT \ 82 | ROOH=$ROOH \ 83 | ORACLE_PATH=$ORACLE_PATH \ 84 | SCRIPTS_DIR=$SCRIPTS_DIR \ 85 | MANAGE_ORACLE=$MANAGE_ORACLE \ 86 | ATTACH_HOME=$ATTACH_HOME \ 87 | DEBUG=$DEBUG 88 | 89 | ENV PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch/:/usr/sbin:$PATH \ 90 | CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib \ 91 | LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib \ 92 | TNS_ADMIN=$ORACLE_HOME/network/admin 93 | 94 | COPY $MANAGE_ORACLE $ORACLE_VERSION/install/dbca* $SCRIPTS_DIR/ 95 | 96 | # Build base image: 97 | RUN chmod ug+x $SCRIPTS_DIR/*.sh && \ 98 | $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE -e && \ 99 | rm -fr /tmp/* /var/cache/yum 100 | 101 | #----------------------------------------------------------# 102 | # # 103 | # Database Software Installation Stage # 104 | # # 105 | #----------------------------------------------------------# 106 | 107 | FROM base as db 108 | 109 | # DB installation defaults 110 | ARG INSTALL_DIR=/opt/install 111 | ARG INSTALL_RESPONSE=inst.rsp 112 | ARG INIT_FILE=oracledb_ORCLCDB-$ORACLE_VERSION_NAME 113 | ARG REMOVE_COMPONENTS="DBMA,HELP,ORDS,OUI,PATCH,PILOT,SQLD,SUP,UCP,TCP,ZIP" 114 | 115 | # Copy DB install files 116 | COPY --chown=oracle:oinstall ./$ORACLE_VERSION/install/ $INSTALL_DIR/ 117 | COPY --chown=oracle:oinstall ./database/* $INSTALL_DIR/ 118 | 119 | # Install DB software binaries 120 | RUN $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE -O 121 | 122 | #----------------------------------------------------------# 123 | # # 124 | # Create a Database Runtime # 125 | # # 126 | #----------------------------------------------------------# 127 | 128 | FROM base 129 | 130 | USER oracle 131 | COPY --chown=oracle:oinstall --from=db $ORACLE_INV $ORACLE_INV 132 | COPY --chown=oracle:oinstall --from=db $ORACLE_BASE $ORACLE_BASE 133 | COPY --chown=oracle:oinstall --from=db $ORADATA $ORADATA 134 | 135 | USER root 136 | RUN $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE -R 137 | 138 | USER oracle 139 | WORKDIR /home/oracle 140 | 141 | VOLUME ["$ORADATA"] 142 | EXPOSE 1521 5500 8080 143 | HEALTHCHECK --interval=1m --start-period=5m CMD $SCRIPTS_DIR/$MANAGE_ORACLE -h >/dev/null || exit 1 144 | CMD exec $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE 145 | -------------------------------------------------------------------------------- /Dockerfiles/Dockerfile.19.13: -------------------------------------------------------------------------------- 1 | #----------------------------------------------------------# 2 | # # 3 | # Oracle Database Dockerfile # 4 | # # 5 | #----------------------------------------------------------# 6 | 7 | FROM oraclelinux:7-slim as base 8 | 9 | # Use ARGs to keep the environment clean 10 | 11 | # Database defaults 12 | ARG ORACLE_VERSION_NAME=19c 13 | ARG ORACLE_VERSION=19.13 14 | ARG ORACLE_BASE=/u01/app/oracle 15 | ARG ORACLE_BASE_HOME=$ORACLE_BASE/homes 16 | ARG ORACLE_BASE_CONFIG=$ORACLE_BASE/dbs 17 | ARG ORACLE_HOME=$ORACLE_BASE/product/$ORACLE_VERSION_NAME/dbhome_1 18 | ARG ORACLE_INV=/u01/app/oraInventory 19 | ARG ORADATA=/opt/oracle/oradata 20 | ARG ORACLE_EDITION=EE 21 | ARG ORACLE_SID=ORCLCDB 22 | ARG ORACLE_PDB= 23 | ARG PDB_COUNT=1 24 | # Set ROOH to ENABLE to use a Read Only Oracle Home 25 | ARG ROOH= 26 | 27 | # Directory defaults 28 | ARG SCRIPTS_DIR=/opt/scripts 29 | ARG ORACLE_PATH=/home/oracle 30 | 31 | # Build defaults 32 | ARG RPM_LIST="oracle-epel-release-el7 file-5.11 git less strace sudo tree vi which bash-completion" 33 | ARG RPM_SUPPLEMENT="rlwrap" 34 | ARG MIN_SPACE_GB=12 35 | ARG BUILD_DATE= 36 | ARG BUILD_VERSION=1.0 37 | # Pass --build-arg DEBUG="bash -x" to run scripts in debug mode. 38 | ARG DEBUG= 39 | 40 | # DB configuration defaults 41 | ARG MANAGE_ORACLE=manageOracle.sh 42 | ARG ATTACH_HOME=0 43 | 44 | # Labels 45 | LABEL org.label-schema.schema-version="1.0" 46 | LABEL org.label-schema.url="http://oraclesean.com" 47 | LABEL org.label-schema.version="$BUILD_VERSION" 48 | LABEL org.label-schema.build-date="$BUILD_DATE" 49 | LABEL org.label-schema.vcs-url="https://github.com/oraclesean" 50 | LABEL org.label-schema.name="oraclesean/oracledb-$ORACLE_VERSION-$ORACLE_EDITION" 51 | LABEL org.label-schema.description="Extensible Oracle $ORACLE_VERSION database" 52 | LABEL org.label-schema.docker.cmd="docker run -d --name -e PDB_COUNT= -e ORACLE_SID= -e ORACLE_PDB= " 53 | LABEL maintainer="Sean Scott " 54 | LABEL database.version="$ORACLE_VERSION" 55 | LABEL database.edition="$ORACLE_EDITION" 56 | LABEL volume.oraclebase="$ORACLE_BASE" 57 | LABEL volume.oracleinv="$ORACLE_INV" 58 | LABEL volume.oraclehome="$ORACLE_HOME" 59 | LABEL volume.data="$ORADATA" 60 | LABEL volume.scripts="$SCRIPTS_DIR" 61 | LABEL volume.scripts.manage="$MANAGE_ORACLE" 62 | LABEL volume.sqlpath="$ORACLE_PATH" 63 | LABEL port.listener.listener1="1521" 64 | LABEL port.oemexpress="5500" 65 | LABEL port.http="8080" 66 | LABEL database.default.sid="$ORACLE_SID" 67 | LABEL database.default.pdb="$ORACLE_PDB" 68 | LABEL database.default.pdb_count="$PDB_COUNT" 69 | 70 | # Environment settings 71 | ENV ORACLE_BASE=$ORACLE_BASE \ 72 | ORACLE_BASE_HOME=$ORACLE_BASE_HOME \ 73 | ORACLE_BASE_CONFIG=$ORACLE_BASE_CONFIG \ 74 | ORACLE_HOME=$ORACLE_HOME \ 75 | ORACLE_INV=$ORACLE_INV \ 76 | ORADATA=$ORADATA \ 77 | ORACLE_VERSION=$ORACLE_VERSION \ 78 | ORACLE_EDITION=$ORACLE_EDITION \ 79 | ORACLE_SID=$ORACLE_SID \ 80 | ORACLE_PDB=$ORACLE_PDB \ 81 | PDB_COUNT=$PDB_COUNT \ 82 | ROOH=$ROOH \ 83 | ORACLE_PATH=$ORACLE_PATH \ 84 | SCRIPTS_DIR=$SCRIPTS_DIR \ 85 | MANAGE_ORACLE=$MANAGE_ORACLE \ 86 | ATTACH_HOME=$ATTACH_HOME \ 87 | DEBUG=$DEBUG 88 | 89 | ENV PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch/:/usr/sbin:$PATH \ 90 | CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib \ 91 | LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib \ 92 | TNS_ADMIN=$ORACLE_HOME/network/admin 93 | 94 | COPY $MANAGE_ORACLE $ORACLE_VERSION/install/dbca* $SCRIPTS_DIR/ 95 | 96 | # Build base image: 97 | RUN chmod ug+x $SCRIPTS_DIR/*.sh && \ 98 | $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE -e && \ 99 | rm -fr /tmp/* /var/cache/yum 100 | 101 | #----------------------------------------------------------# 102 | # # 103 | # Database Software Installation Stage # 104 | # # 105 | #----------------------------------------------------------# 106 | 107 | FROM base as db 108 | 109 | # DB installation defaults 110 | ARG INSTALL_DIR=/opt/install 111 | ARG INSTALL_RESPONSE=inst.rsp 112 | ARG INIT_FILE=oracledb_ORCLCDB-$ORACLE_VERSION_NAME 113 | ARG REMOVE_COMPONENTS="DBMA,HELP,ORDS,OUI,PATCH,PILOT,SQLD,SUP,UCP,TCP,ZIP" 114 | 115 | # Copy DB install files 116 | COPY --chown=oracle:oinstall ./$ORACLE_VERSION/install/ $INSTALL_DIR/ 117 | COPY --chown=oracle:oinstall ./database/* $INSTALL_DIR/ 118 | 119 | # Install DB software binaries 120 | RUN $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE -O 121 | 122 | #----------------------------------------------------------# 123 | # # 124 | # Create a Database Runtime # 125 | # # 126 | #----------------------------------------------------------# 127 | 128 | FROM base 129 | 130 | USER oracle 131 | COPY --chown=oracle:oinstall --from=db $ORACLE_INV $ORACLE_INV 132 | COPY --chown=oracle:oinstall --from=db $ORACLE_BASE $ORACLE_BASE 133 | COPY --chown=oracle:oinstall --from=db $ORADATA $ORADATA 134 | 135 | USER root 136 | RUN $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE -R 137 | 138 | USER oracle 139 | WORKDIR /home/oracle 140 | 141 | VOLUME ["$ORADATA"] 142 | EXPOSE 1521 5500 8080 143 | HEALTHCHECK --interval=1m --start-period=5m CMD $SCRIPTS_DIR/$MANAGE_ORACLE -h >/dev/null || exit 1 144 | CMD exec $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE 145 | -------------------------------------------------------------------------------- /Dockerfiles/Dockerfile.19.3: -------------------------------------------------------------------------------- 1 | #----------------------------------------------------------# 2 | # # 3 | # Oracle Database Dockerfile # 4 | # # 5 | #----------------------------------------------------------# 6 | 7 | FROM oraclelinux:7-slim as base 8 | 9 | # Use ARGs to keep the environment clean 10 | 11 | # Database defaults 12 | ARG ORACLE_VERSION_NAME=19c 13 | ARG ORACLE_VERSION=19.3 14 | ARG ORACLE_BASE=/u01/app/oracle 15 | ARG ORACLE_BASE_HOME=$ORACLE_BASE/homes 16 | ARG ORACLE_BASE_CONFIG=$ORACLE_BASE/dbs 17 | ARG ORACLE_HOME=$ORACLE_BASE/product/$ORACLE_VERSION_NAME/dbhome_1 18 | ARG ORACLE_INV=/u01/app/oraInventory 19 | ARG ORADATA=/opt/oracle/oradata 20 | ARG ORACLE_EDITION=EE 21 | ARG ORACLE_SID=ORCLCDB 22 | ARG ORACLE_PDB= 23 | ARG PDB_COUNT=1 24 | # Set ROOH to ENABLE to use a Read Only Oracle Home 25 | ARG ROOH= 26 | 27 | # Directory defaults 28 | ARG SCRIPTS_DIR=/opt/scripts 29 | ARG ORACLE_PATH=/home/oracle 30 | 31 | # Build defaults 32 | ARG RPM_LIST="oracle-epel-release-el7 file-5.11 git less strace sudo tree vi which bash-completion" 33 | ARG RPM_SUPPLEMENT="rlwrap" 34 | ARG MIN_SPACE_GB=12 35 | ARG BUILD_DATE= 36 | ARG BUILD_VERSION=1.0 37 | # Pass --build-arg DEBUG="bash -x" to run scripts in debug mode. 38 | ARG DEBUG= 39 | 40 | # DB configuration defaults 41 | ARG MANAGE_ORACLE=manageOracle.sh 42 | ARG ATTACH_HOME=0 43 | 44 | # Labels 45 | LABEL org.label-schema.schema-version="1.0" 46 | LABEL org.label-schema.url="http://oraclesean.com" 47 | LABEL org.label-schema.version="$BUILD_VERSION" 48 | LABEL org.label-schema.build-date="$BUILD_DATE" 49 | LABEL org.label-schema.vcs-url="https://github.com/oraclesean" 50 | LABEL org.label-schema.name="oraclesean/oracledb-$ORACLE_VERSION-$ORACLE_EDITION" 51 | LABEL org.label-schema.description="Extensible Oracle $ORACLE_VERSION database" 52 | LABEL org.label-schema.docker.cmd="docker run -d --name -e PDB_COUNT= -e ORACLE_SID= -e ORACLE_PDB= " 53 | LABEL maintainer="Sean Scott " 54 | LABEL database.version="$ORACLE_VERSION" 55 | LABEL database.edition="$ORACLE_EDITION" 56 | LABEL volume.oraclebase="$ORACLE_BASE" 57 | LABEL volume.oracleinv="$ORACLE_INV" 58 | LABEL volume.oraclehome="$ORACLE_HOME" 59 | LABEL volume.data="$ORADATA" 60 | LABEL volume.scripts="$SCRIPTS_DIR" 61 | LABEL volume.scripts.manage="$MANAGE_ORACLE" 62 | LABEL volume.sqlpath="$ORACLE_PATH" 63 | LABEL port.listener.listener1="1521" 64 | LABEL port.oemexpress="5500" 65 | LABEL port.http="8080" 66 | LABEL database.default.sid="$ORACLE_SID" 67 | LABEL database.default.pdb="$ORACLE_PDB" 68 | LABEL database.default.pdb_count="$PDB_COUNT" 69 | 70 | # Environment settings 71 | ENV ORACLE_BASE=$ORACLE_BASE \ 72 | ORACLE_BASE_HOME=$ORACLE_BASE_HOME \ 73 | ORACLE_BASE_CONFIG=$ORACLE_BASE_CONFIG \ 74 | ORACLE_HOME=$ORACLE_HOME \ 75 | ORACLE_INV=$ORACLE_INV \ 76 | ORADATA=$ORADATA \ 77 | ORACLE_VERSION=$ORACLE_VERSION \ 78 | ORACLE_EDITION=$ORACLE_EDITION \ 79 | ORACLE_SID=$ORACLE_SID \ 80 | ORACLE_PDB=$ORACLE_PDB \ 81 | PDB_COUNT=$PDB_COUNT \ 82 | ROOH=$ROOH \ 83 | ORACLE_PATH=$ORACLE_PATH \ 84 | SCRIPTS_DIR=$SCRIPTS_DIR \ 85 | MANAGE_ORACLE=$MANAGE_ORACLE \ 86 | ATTACH_HOME=$ATTACH_HOME \ 87 | DEBUG=$DEBUG 88 | 89 | ENV PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch/:/usr/sbin:$PATH \ 90 | CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib \ 91 | LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib \ 92 | TNS_ADMIN=$ORACLE_HOME/network/admin 93 | 94 | COPY $MANAGE_ORACLE $ORACLE_VERSION/install/dbca* $SCRIPTS_DIR/ 95 | 96 | # Build base image: 97 | RUN chmod ug+x $SCRIPTS_DIR/*.sh && \ 98 | $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE -e && \ 99 | rm -fr /tmp/* /var/cache/yum 100 | 101 | #----------------------------------------------------------# 102 | # # 103 | # Database Software Installation Stage # 104 | # # 105 | #----------------------------------------------------------# 106 | 107 | FROM base as db 108 | 109 | # DB installation defaults 110 | ARG INSTALL_DIR=/opt/install 111 | ARG INSTALL_RESPONSE=inst.rsp 112 | ARG INIT_FILE=oracledb_ORCLCDB-$ORACLE_VERSION_NAME 113 | ARG REMOVE_COMPONENTS="DBMA,HELP,ORDS,OUI,PATCH,PILOT,SQLD,SUP,UCP,TCP,ZIP" 114 | 115 | # Copy DB install files 116 | COPY --chown=oracle:oinstall ./$ORACLE_VERSION/install/ $INSTALL_DIR/ 117 | COPY --chown=oracle:oinstall ./database/* $INSTALL_DIR/ 118 | 119 | # Install DB software binaries 120 | RUN $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE -O 121 | 122 | #----------------------------------------------------------# 123 | # # 124 | # Create a Database Runtime # 125 | # # 126 | #----------------------------------------------------------# 127 | 128 | FROM base 129 | 130 | USER oracle 131 | COPY --chown=oracle:oinstall --from=db $ORACLE_INV $ORACLE_INV 132 | COPY --chown=oracle:oinstall --from=db $ORACLE_BASE $ORACLE_BASE 133 | COPY --chown=oracle:oinstall --from=db $ORADATA $ORADATA 134 | 135 | USER root 136 | RUN $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE -R 137 | 138 | USER oracle 139 | WORKDIR /home/oracle 140 | 141 | VOLUME ["$ORADATA"] 142 | EXPOSE 1521 5500 8080 143 | HEALTHCHECK --interval=1m --start-period=5m CMD $SCRIPTS_DIR/$MANAGE_ORACLE -h >/dev/null || exit 1 144 | CMD exec $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE 145 | -------------------------------------------------------------------------------- /Dockerfiles/Dockerfile.19.6: -------------------------------------------------------------------------------- 1 | #----------------------------------------------------------# 2 | # # 3 | # Oracle Database Dockerfile # 4 | # # 5 | #----------------------------------------------------------# 6 | 7 | FROM oraclelinux:7-slim as base 8 | 9 | # Use ARGs to keep the environment clean 10 | 11 | # Database defaults 12 | ARG ORACLE_VERSION_NAME=19c 13 | ARG ORACLE_VERSION=19.6 14 | ARG ORACLE_BASE=/u01/app/oracle 15 | ARG ORACLE_BASE_HOME=$ORACLE_BASE/homes 16 | ARG ORACLE_BASE_CONFIG=$ORACLE_BASE/dbs 17 | ARG ORACLE_HOME=$ORACLE_BASE/product/$ORACLE_VERSION_NAME/dbhome_1 18 | ARG ORACLE_INV=/u01/app/oraInventory 19 | ARG ORADATA=/opt/oracle/oradata 20 | ARG ORACLE_EDITION=EE 21 | ARG ORACLE_SID=ORCLCDB 22 | ARG ORACLE_PDB= 23 | ARG PDB_COUNT=1 24 | # Set ROOH to ENABLE to use a Read Only Oracle Home 25 | ARG ROOH= 26 | 27 | # Directory defaults 28 | ARG SCRIPTS_DIR=/opt/scripts 29 | ARG ORACLE_PATH=/home/oracle 30 | 31 | # Build defaults 32 | ARG RPM_LIST="oracle-epel-release-el7 file-5.11 git less strace sudo tree vi which bash-completion" 33 | ARG RPM_SUPPLEMENT="rlwrap" 34 | ARG MIN_SPACE_GB=12 35 | ARG BUILD_DATE= 36 | ARG BUILD_VERSION=1.0 37 | # Pass --build-arg DEBUG="bash -x" to run scripts in debug mode. 38 | ARG DEBUG= 39 | 40 | # DB configuration defaults 41 | ARG MANAGE_ORACLE=manageOracle.sh 42 | ARG ATTACH_HOME=0 43 | 44 | # Labels 45 | LABEL org.label-schema.schema-version="1.0" 46 | LABEL org.label-schema.url="http://oraclesean.com" 47 | LABEL org.label-schema.version="$BUILD_VERSION" 48 | LABEL org.label-schema.build-date="$BUILD_DATE" 49 | LABEL org.label-schema.vcs-url="https://github.com/oraclesean" 50 | LABEL org.label-schema.name="oraclesean/oracledb-$ORACLE_VERSION-$ORACLE_EDITION" 51 | LABEL org.label-schema.description="Extensible Oracle $ORACLE_VERSION database" 52 | LABEL org.label-schema.docker.cmd="docker run -d --name -e PDB_COUNT= -e ORACLE_SID= -e ORACLE_PDB= " 53 | LABEL maintainer="Sean Scott " 54 | LABEL database.version="$ORACLE_VERSION" 55 | LABEL database.edition="$ORACLE_EDITION" 56 | LABEL volume.oraclebase="$ORACLE_BASE" 57 | LABEL volume.oracleinv="$ORACLE_INV" 58 | LABEL volume.oraclehome="$ORACLE_HOME" 59 | LABEL volume.data="$ORADATA" 60 | LABEL volume.scripts="$SCRIPTS_DIR" 61 | LABEL volume.scripts.manage="$MANAGE_ORACLE" 62 | LABEL volume.sqlpath="$ORACLE_PATH" 63 | LABEL port.listener.listener1="1521" 64 | LABEL port.oemexpress="5500" 65 | LABEL port.http="8080" 66 | LABEL database.default.sid="$ORACLE_SID" 67 | LABEL database.default.pdb="$ORACLE_PDB" 68 | LABEL database.default.pdb_count="$PDB_COUNT" 69 | 70 | # Environment settings 71 | ENV ORACLE_BASE=$ORACLE_BASE \ 72 | ORACLE_BASE_HOME=$ORACLE_BASE_HOME \ 73 | ORACLE_BASE_CONFIG=$ORACLE_BASE_CONFIG \ 74 | ORACLE_HOME=$ORACLE_HOME \ 75 | ORACLE_INV=$ORACLE_INV \ 76 | ORADATA=$ORADATA \ 77 | ORACLE_VERSION=$ORACLE_VERSION \ 78 | ORACLE_EDITION=$ORACLE_EDITION \ 79 | ORACLE_SID=$ORACLE_SID \ 80 | ORACLE_PDB=$ORACLE_PDB \ 81 | PDB_COUNT=$PDB_COUNT \ 82 | ROOH=$ROOH \ 83 | ORACLE_PATH=$ORACLE_PATH \ 84 | SCRIPTS_DIR=$SCRIPTS_DIR \ 85 | MANAGE_ORACLE=$MANAGE_ORACLE \ 86 | ATTACH_HOME=$ATTACH_HOME \ 87 | DEBUG=$DEBUG 88 | 89 | ENV PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch/:/usr/sbin:$PATH \ 90 | CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib \ 91 | LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib \ 92 | TNS_ADMIN=$ORACLE_HOME/network/admin 93 | 94 | COPY $MANAGE_ORACLE $ORACLE_VERSION/install/dbca* $SCRIPTS_DIR/ 95 | 96 | # Build base image: 97 | RUN chmod ug+x $SCRIPTS_DIR/*.sh && \ 98 | $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE -e && \ 99 | rm -fr /tmp/* /var/cache/yum 100 | 101 | #----------------------------------------------------------# 102 | # # 103 | # Database Software Installation Stage # 104 | # # 105 | #----------------------------------------------------------# 106 | 107 | FROM base as db 108 | 109 | # DB installation defaults 110 | ARG INSTALL_DIR=/opt/install 111 | ARG INSTALL_RESPONSE=inst.rsp 112 | ARG INIT_FILE=oracledb_ORCLCDB-$ORACLE_VERSION_NAME 113 | ARG REMOVE_COMPONENTS="DBMA,HELP,ORDS,OUI,PATCH,PILOT,SQLD,SUP,UCP,TCP,ZIP" 114 | 115 | # Copy DB install files 116 | COPY --chown=oracle:oinstall ./$ORACLE_VERSION/install/ $INSTALL_DIR/ 117 | COPY --chown=oracle:oinstall ./database/* $INSTALL_DIR/ 118 | 119 | # Install DB software binaries 120 | RUN $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE -O 121 | 122 | #----------------------------------------------------------# 123 | # # 124 | # Create a Database Runtime # 125 | # # 126 | #----------------------------------------------------------# 127 | 128 | FROM base 129 | 130 | USER oracle 131 | COPY --chown=oracle:oinstall --from=db $ORACLE_INV $ORACLE_INV 132 | COPY --chown=oracle:oinstall --from=db $ORACLE_BASE $ORACLE_BASE 133 | COPY --chown=oracle:oinstall --from=db $ORADATA $ORADATA 134 | 135 | USER root 136 | RUN $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE -R 137 | 138 | USER oracle 139 | WORKDIR /home/oracle 140 | 141 | VOLUME ["$ORADATA"] 142 | EXPOSE 1521 5500 8080 143 | HEALTHCHECK --interval=1m --start-period=5m CMD $SCRIPTS_DIR/$MANAGE_ORACLE -h >/dev/null || exit 1 144 | CMD exec $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE 145 | -------------------------------------------------------------------------------- /Dockerfiles/Dockerfile.19.7: -------------------------------------------------------------------------------- 1 | #----------------------------------------------------------# 2 | # # 3 | # Oracle Database Dockerfile # 4 | # # 5 | #----------------------------------------------------------# 6 | 7 | FROM oraclelinux:7-slim as base 8 | 9 | # Use ARGs to keep the environment clean 10 | 11 | # Database defaults 12 | ARG ORACLE_VERSION_NAME=19c 13 | ARG ORACLE_VERSION=19.7 14 | ARG ORACLE_BASE=/u01/app/oracle 15 | ARG ORACLE_BASE_HOME=$ORACLE_BASE/homes 16 | ARG ORACLE_BASE_CONFIG=$ORACLE_BASE/dbs 17 | ARG ORACLE_HOME=$ORACLE_BASE/product/$ORACLE_VERSION_NAME/dbhome_1 18 | ARG ORACLE_INV=/u01/app/oraInventory 19 | ARG ORADATA=/opt/oracle/oradata 20 | ARG ORACLE_EDITION=EE 21 | ARG ORACLE_SID=ORCLCDB 22 | ARG ORACLE_PDB= 23 | ARG PDB_COUNT=1 24 | # Set ROOH to ENABLE to use a Read Only Oracle Home 25 | ARG ROOH= 26 | 27 | # Directory defaults 28 | ARG SCRIPTS_DIR=/opt/scripts 29 | ARG ORACLE_PATH=/home/oracle 30 | 31 | # Build defaults 32 | ARG RPM_LIST="oracle-epel-release-el7 file-5.11 git less strace sudo tree vi which bash-completion" 33 | ARG RPM_SUPPLEMENT="rlwrap" 34 | ARG MIN_SPACE_GB=12 35 | ARG BUILD_DATE= 36 | ARG BUILD_VERSION=1.0 37 | # Pass --build-arg DEBUG="bash -x" to run scripts in debug mode. 38 | ARG DEBUG= 39 | 40 | # DB configuration defaults 41 | ARG MANAGE_ORACLE=manageOracle.sh 42 | ARG ATTACH_HOME=0 43 | 44 | # Labels 45 | LABEL org.label-schema.schema-version="1.0" 46 | LABEL org.label-schema.url="http://oraclesean.com" 47 | LABEL org.label-schema.version="$BUILD_VERSION" 48 | LABEL org.label-schema.build-date="$BUILD_DATE" 49 | LABEL org.label-schema.vcs-url="https://github.com/oraclesean" 50 | LABEL org.label-schema.name="oraclesean/oracledb-$ORACLE_VERSION-$ORACLE_EDITION" 51 | LABEL org.label-schema.description="Extensible Oracle $ORACLE_VERSION database" 52 | LABEL org.label-schema.docker.cmd="docker run -d --name -e PDB_COUNT= -e ORACLE_SID= -e ORACLE_PDB= " 53 | LABEL maintainer="Sean Scott " 54 | LABEL database.version="$ORACLE_VERSION" 55 | LABEL database.edition="$ORACLE_EDITION" 56 | LABEL volume.oraclebase="$ORACLE_BASE" 57 | LABEL volume.oracleinv="$ORACLE_INV" 58 | LABEL volume.oraclehome="$ORACLE_HOME" 59 | LABEL volume.data="$ORADATA" 60 | LABEL volume.scripts="$SCRIPTS_DIR" 61 | LABEL volume.scripts.manage="$MANAGE_ORACLE" 62 | LABEL volume.sqlpath="$ORACLE_PATH" 63 | LABEL port.listener.listener1="1521" 64 | LABEL port.oemexpress="5500" 65 | LABEL port.http="8080" 66 | LABEL database.default.sid="$ORACLE_SID" 67 | LABEL database.default.pdb="$ORACLE_PDB" 68 | LABEL database.default.pdb_count="$PDB_COUNT" 69 | 70 | # Environment settings 71 | ENV ORACLE_BASE=$ORACLE_BASE \ 72 | ORACLE_BASE_HOME=$ORACLE_BASE_HOME \ 73 | ORACLE_BASE_CONFIG=$ORACLE_BASE_CONFIG \ 74 | ORACLE_HOME=$ORACLE_HOME \ 75 | ORACLE_INV=$ORACLE_INV \ 76 | ORADATA=$ORADATA \ 77 | ORACLE_VERSION=$ORACLE_VERSION \ 78 | ORACLE_EDITION=$ORACLE_EDITION \ 79 | ORACLE_SID=$ORACLE_SID \ 80 | ORACLE_PDB=$ORACLE_PDB \ 81 | PDB_COUNT=$PDB_COUNT \ 82 | ROOH=$ROOH \ 83 | ORACLE_PATH=$ORACLE_PATH \ 84 | SCRIPTS_DIR=$SCRIPTS_DIR \ 85 | MANAGE_ORACLE=$MANAGE_ORACLE \ 86 | ATTACH_HOME=$ATTACH_HOME \ 87 | DEBUG=$DEBUG 88 | 89 | ENV PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch/:/usr/sbin:$PATH \ 90 | CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib \ 91 | LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib \ 92 | TNS_ADMIN=$ORACLE_HOME/network/admin 93 | 94 | COPY $MANAGE_ORACLE $ORACLE_VERSION/install/dbca* $SCRIPTS_DIR/ 95 | 96 | # Build base image: 97 | RUN chmod ug+x $SCRIPTS_DIR/*.sh && \ 98 | $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE -e && \ 99 | rm -fr /tmp/* /var/cache/yum 100 | 101 | #----------------------------------------------------------# 102 | # # 103 | # Database Software Installation Stage # 104 | # # 105 | #----------------------------------------------------------# 106 | 107 | FROM base as db 108 | 109 | # DB installation defaults 110 | ARG INSTALL_DIR=/opt/install 111 | ARG INSTALL_RESPONSE=inst.rsp 112 | ARG INIT_FILE=oracledb_ORCLCDB-$ORACLE_VERSION_NAME 113 | ARG REMOVE_COMPONENTS="DBMA,HELP,ORDS,OUI,PATCH,PILOT,SQLD,SUP,UCP,TCP,ZIP" 114 | 115 | # Copy DB install files 116 | COPY --chown=oracle:oinstall ./$ORACLE_VERSION/install/ $INSTALL_DIR/ 117 | COPY --chown=oracle:oinstall ./database/* $INSTALL_DIR/ 118 | 119 | # Install DB software binaries 120 | RUN $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE -O 121 | 122 | #----------------------------------------------------------# 123 | # # 124 | # Create a Database Runtime # 125 | # # 126 | #----------------------------------------------------------# 127 | 128 | FROM base 129 | 130 | USER oracle 131 | COPY --chown=oracle:oinstall --from=db $ORACLE_INV $ORACLE_INV 132 | COPY --chown=oracle:oinstall --from=db $ORACLE_BASE $ORACLE_BASE 133 | COPY --chown=oracle:oinstall --from=db $ORADATA $ORADATA 134 | 135 | USER root 136 | RUN $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE -R 137 | 138 | USER oracle 139 | WORKDIR /home/oracle 140 | 141 | VOLUME ["$ORADATA"] 142 | EXPOSE 1521 5500 8080 143 | HEALTHCHECK --interval=1m --start-period=5m CMD $SCRIPTS_DIR/$MANAGE_ORACLE -h >/dev/null || exit 1 144 | CMD exec $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE 145 | -------------------------------------------------------------------------------- /Dockerfiles/Dockerfile.19.8: -------------------------------------------------------------------------------- 1 | #----------------------------------------------------------# 2 | # # 3 | # Oracle Database Dockerfile # 4 | # # 5 | #----------------------------------------------------------# 6 | 7 | FROM oraclelinux:7-slim as base 8 | 9 | # Use ARGs to keep the environment clean 10 | 11 | # Database defaults 12 | ARG ORACLE_VERSION_NAME=19c 13 | ARG ORACLE_VERSION=19.8 14 | ARG ORACLE_BASE=/u01/app/oracle 15 | ARG ORACLE_BASE_HOME=$ORACLE_BASE/homes 16 | ARG ORACLE_BASE_CONFIG=$ORACLE_BASE/dbs 17 | ARG ORACLE_HOME=$ORACLE_BASE/product/$ORACLE_VERSION_NAME/dbhome_1 18 | ARG ORACLE_INV=/u01/app/oraInventory 19 | ARG ORADATA=/opt/oracle/oradata 20 | ARG ORACLE_EDITION=EE 21 | ARG ORACLE_SID=ORCLCDB 22 | ARG ORACLE_PDB= 23 | ARG PDB_COUNT=1 24 | # Set ROOH to ENABLE to use a Read Only Oracle Home 25 | ARG ROOH= 26 | 27 | # Directory defaults 28 | ARG SCRIPTS_DIR=/opt/scripts 29 | ARG ORACLE_PATH=/home/oracle 30 | 31 | # Build defaults 32 | ARG RPM_LIST="oracle-epel-release-el7 file-5.11 git less strace sudo tree vi which bash-completion" 33 | ARG RPM_SUPPLEMENT="rlwrap" 34 | ARG MIN_SPACE_GB=12 35 | ARG BUILD_DATE= 36 | ARG BUILD_VERSION=1.0 37 | # Pass --build-arg DEBUG="bash -x" to run scripts in debug mode. 38 | ARG DEBUG= 39 | 40 | # DB configuration defaults 41 | ARG MANAGE_ORACLE=manageOracle.sh 42 | ARG ATTACH_HOME=0 43 | 44 | # Labels 45 | LABEL org.label-schema.schema-version="1.0" 46 | LABEL org.label-schema.url="http://oraclesean.com" 47 | LABEL org.label-schema.version="$BUILD_VERSION" 48 | LABEL org.label-schema.build-date="$BUILD_DATE" 49 | LABEL org.label-schema.vcs-url="https://github.com/oraclesean" 50 | LABEL org.label-schema.name="oraclesean/oracledb-$ORACLE_VERSION-$ORACLE_EDITION" 51 | LABEL org.label-schema.description="Extensible Oracle $ORACLE_VERSION database" 52 | LABEL org.label-schema.docker.cmd="docker run -d --name -e PDB_COUNT= -e ORACLE_SID= -e ORACLE_PDB= " 53 | LABEL maintainer="Sean Scott " 54 | LABEL database.version="$ORACLE_VERSION" 55 | LABEL database.edition="$ORACLE_EDITION" 56 | LABEL volume.oraclebase="$ORACLE_BASE" 57 | LABEL volume.oracleinv="$ORACLE_INV" 58 | LABEL volume.oraclehome="$ORACLE_HOME" 59 | LABEL volume.data="$ORADATA" 60 | LABEL volume.scripts="$SCRIPTS_DIR" 61 | LABEL volume.scripts.manage="$MANAGE_ORACLE" 62 | LABEL volume.sqlpath="$ORACLE_PATH" 63 | LABEL port.listener.listener1="1521" 64 | LABEL port.oemexpress="5500" 65 | LABEL port.http="8080" 66 | LABEL database.default.sid="$ORACLE_SID" 67 | LABEL database.default.pdb="$ORACLE_PDB" 68 | LABEL database.default.pdb_count="$PDB_COUNT" 69 | 70 | # Environment settings 71 | ENV ORACLE_BASE=$ORACLE_BASE \ 72 | ORACLE_BASE_HOME=$ORACLE_BASE_HOME \ 73 | ORACLE_BASE_CONFIG=$ORACLE_BASE_CONFIG \ 74 | ORACLE_HOME=$ORACLE_HOME \ 75 | ORACLE_INV=$ORACLE_INV \ 76 | ORADATA=$ORADATA \ 77 | ORACLE_VERSION=$ORACLE_VERSION \ 78 | ORACLE_EDITION=$ORACLE_EDITION \ 79 | ORACLE_SID=$ORACLE_SID \ 80 | ORACLE_PDB=$ORACLE_PDB \ 81 | PDB_COUNT=$PDB_COUNT \ 82 | ROOH=$ROOH \ 83 | ORACLE_PATH=$ORACLE_PATH \ 84 | SCRIPTS_DIR=$SCRIPTS_DIR \ 85 | MANAGE_ORACLE=$MANAGE_ORACLE \ 86 | ATTACH_HOME=$ATTACH_HOME \ 87 | DEBUG=$DEBUG 88 | 89 | ENV PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch/:/usr/sbin:$PATH \ 90 | CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib \ 91 | LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib \ 92 | TNS_ADMIN=$ORACLE_HOME/network/admin 93 | 94 | COPY $MANAGE_ORACLE $ORACLE_VERSION/install/dbca* $SCRIPTS_DIR/ 95 | 96 | # Build base image: 97 | RUN chmod ug+x $SCRIPTS_DIR/*.sh && \ 98 | $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE -e && \ 99 | rm -fr /tmp/* /var/cache/yum 100 | 101 | #----------------------------------------------------------# 102 | # # 103 | # Database Software Installation Stage # 104 | # # 105 | #----------------------------------------------------------# 106 | 107 | FROM base as db 108 | 109 | # DB installation defaults 110 | ARG INSTALL_DIR=/opt/install 111 | ARG INSTALL_RESPONSE=inst.rsp 112 | ARG INIT_FILE=oracledb_ORCLCDB-$ORACLE_VERSION_NAME 113 | ARG REMOVE_COMPONENTS="DBMA,HELP,ORDS,OUI,PATCH,PILOT,SQLD,SUP,UCP,TCP,ZIP" 114 | 115 | # Copy DB install files 116 | COPY --chown=oracle:oinstall ./$ORACLE_VERSION/install/ $INSTALL_DIR/ 117 | COPY --chown=oracle:oinstall ./database/* $INSTALL_DIR/ 118 | 119 | # Install DB software binaries 120 | RUN $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE -O 121 | 122 | #----------------------------------------------------------# 123 | # # 124 | # Create a Database Runtime # 125 | # # 126 | #----------------------------------------------------------# 127 | 128 | FROM base 129 | 130 | USER oracle 131 | COPY --chown=oracle:oinstall --from=db $ORACLE_INV $ORACLE_INV 132 | COPY --chown=oracle:oinstall --from=db $ORACLE_BASE $ORACLE_BASE 133 | COPY --chown=oracle:oinstall --from=db $ORADATA $ORADATA 134 | 135 | USER root 136 | RUN $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE -R 137 | 138 | USER oracle 139 | WORKDIR /home/oracle 140 | 141 | VOLUME ["$ORADATA"] 142 | EXPOSE 1521 5500 8080 143 | HEALTHCHECK --interval=1m --start-period=5m CMD $SCRIPTS_DIR/$MANAGE_ORACLE -h >/dev/null || exit 1 144 | CMD exec $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE 145 | -------------------------------------------------------------------------------- /Dockerfiles/Dockerfile.19.9: -------------------------------------------------------------------------------- 1 | #----------------------------------------------------------# 2 | # # 3 | # Oracle Database Dockerfile # 4 | # # 5 | #----------------------------------------------------------# 6 | 7 | FROM oraclelinux:7-slim as base 8 | 9 | # Use ARGs to keep the environment clean 10 | 11 | # Database defaults 12 | ARG ORACLE_VERSION_NAME=19c 13 | ARG ORACLE_VERSION=19.9 14 | ARG ORACLE_BASE=/u01/app/oracle 15 | ARG ORACLE_BASE_HOME=$ORACLE_BASE/homes 16 | ARG ORACLE_BASE_CONFIG=$ORACLE_BASE/dbs 17 | ARG ORACLE_HOME=$ORACLE_BASE/product/$ORACLE_VERSION_NAME/dbhome_1 18 | ARG ORACLE_INV=/u01/app/oraInventory 19 | ARG ORADATA=/opt/oracle/oradata 20 | ARG ORACLE_EDITION=EE 21 | ARG ORACLE_SID=ORCLCDB 22 | ARG ORACLE_PDB= 23 | ARG PDB_COUNT=1 24 | # Set ROOH to ENABLE to use a Read Only Oracle Home 25 | ARG ROOH= 26 | 27 | # Directory defaults 28 | ARG SCRIPTS_DIR=/opt/scripts 29 | ARG ORACLE_PATH=/home/oracle 30 | 31 | # Build defaults 32 | ARG RPM_LIST="oracle-epel-release-el7 file-5.11 git less strace sudo tree vi which bash-completion" 33 | ARG RPM_SUPPLEMENT="rlwrap" 34 | ARG MIN_SPACE_GB=12 35 | ARG BUILD_DATE= 36 | ARG BUILD_VERSION=1.0 37 | # Pass --build-arg DEBUG="bash -x" to run scripts in debug mode. 38 | ARG DEBUG= 39 | 40 | # DB configuration defaults 41 | ARG MANAGE_ORACLE=manageOracle.sh 42 | ARG ATTACH_HOME=0 43 | 44 | # Labels 45 | LABEL org.label-schema.schema-version="1.0" 46 | LABEL org.label-schema.url="http://oraclesean.com" 47 | LABEL org.label-schema.version="$BUILD_VERSION" 48 | LABEL org.label-schema.build-date="$BUILD_DATE" 49 | LABEL org.label-schema.vcs-url="https://github.com/oraclesean" 50 | LABEL org.label-schema.name="oraclesean/oracledb-$ORACLE_VERSION-$ORACLE_EDITION" 51 | LABEL org.label-schema.description="Extensible Oracle $ORACLE_VERSION database" 52 | LABEL org.label-schema.docker.cmd="docker run -d --name -e PDB_COUNT= -e ORACLE_SID= -e ORACLE_PDB= " 53 | LABEL maintainer="Sean Scott " 54 | LABEL database.version="$ORACLE_VERSION" 55 | LABEL database.edition="$ORACLE_EDITION" 56 | LABEL volume.oraclebase="$ORACLE_BASE" 57 | LABEL volume.oracleinv="$ORACLE_INV" 58 | LABEL volume.oraclehome="$ORACLE_HOME" 59 | LABEL volume.data="$ORADATA" 60 | LABEL volume.scripts="$SCRIPTS_DIR" 61 | LABEL volume.scripts.manage="$MANAGE_ORACLE" 62 | LABEL volume.sqlpath="$ORACLE_PATH" 63 | LABEL port.listener.listener1="1521" 64 | LABEL port.oemexpress="5500" 65 | LABEL port.http="8080" 66 | LABEL database.default.sid="$ORACLE_SID" 67 | LABEL database.default.pdb="$ORACLE_PDB" 68 | LABEL database.default.pdb_count="$PDB_COUNT" 69 | 70 | # Environment settings 71 | ENV ORACLE_BASE=$ORACLE_BASE \ 72 | ORACLE_BASE_HOME=$ORACLE_BASE_HOME \ 73 | ORACLE_BASE_CONFIG=$ORACLE_BASE_CONFIG \ 74 | ORACLE_HOME=$ORACLE_HOME \ 75 | ORACLE_INV=$ORACLE_INV \ 76 | ORADATA=$ORADATA \ 77 | ORACLE_VERSION=$ORACLE_VERSION \ 78 | ORACLE_EDITION=$ORACLE_EDITION \ 79 | ORACLE_SID=$ORACLE_SID \ 80 | ORACLE_PDB=$ORACLE_PDB \ 81 | PDB_COUNT=$PDB_COUNT \ 82 | ROOH=$ROOH \ 83 | ORACLE_PATH=$ORACLE_PATH \ 84 | SCRIPTS_DIR=$SCRIPTS_DIR \ 85 | MANAGE_ORACLE=$MANAGE_ORACLE \ 86 | ATTACH_HOME=$ATTACH_HOME \ 87 | DEBUG=$DEBUG 88 | 89 | ENV PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch/:/usr/sbin:$PATH \ 90 | CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib \ 91 | LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib \ 92 | TNS_ADMIN=$ORACLE_HOME/network/admin 93 | 94 | COPY $MANAGE_ORACLE $ORACLE_VERSION/install/dbca* $SCRIPTS_DIR/ 95 | 96 | # Build base image: 97 | RUN chmod ug+x $SCRIPTS_DIR/*.sh && \ 98 | $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE -e && \ 99 | rm -fr /tmp/* /var/cache/yum 100 | 101 | #----------------------------------------------------------# 102 | # # 103 | # Database Software Installation Stage # 104 | # # 105 | #----------------------------------------------------------# 106 | 107 | FROM base as db 108 | 109 | # DB installation defaults 110 | ARG INSTALL_DIR=/opt/install 111 | ARG INSTALL_RESPONSE=inst.rsp 112 | ARG INIT_FILE=oracledb_ORCLCDB-$ORACLE_VERSION_NAME 113 | ARG REMOVE_COMPONENTS="DBMA,HELP,ORDS,OUI,PATCH,PILOT,SQLD,SUP,UCP,TCP,ZIP" 114 | 115 | # Copy DB install files 116 | COPY --chown=oracle:oinstall ./$ORACLE_VERSION/install/ $INSTALL_DIR/ 117 | COPY --chown=oracle:oinstall ./database/* $INSTALL_DIR/ 118 | 119 | # Install DB software binaries 120 | RUN $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE -O 121 | 122 | #----------------------------------------------------------# 123 | # # 124 | # Create a Database Runtime # 125 | # # 126 | #----------------------------------------------------------# 127 | 128 | FROM base 129 | 130 | USER oracle 131 | COPY --chown=oracle:oinstall --from=db $ORACLE_INV $ORACLE_INV 132 | COPY --chown=oracle:oinstall --from=db $ORACLE_BASE $ORACLE_BASE 133 | COPY --chown=oracle:oinstall --from=db $ORADATA $ORADATA 134 | 135 | USER root 136 | RUN $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE -R 137 | 138 | USER oracle 139 | WORKDIR /home/oracle 140 | 141 | VOLUME ["$ORADATA"] 142 | EXPOSE 1521 5500 8080 143 | HEALTHCHECK --interval=1m --start-period=5m CMD $SCRIPTS_DIR/$MANAGE_ORACLE -h >/dev/null || exit 1 144 | CMD exec $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE 145 | -------------------------------------------------------------------------------- /Dockerfiles/Dockerfile.21.3: -------------------------------------------------------------------------------- 1 | #----------------------------------------------------------# 2 | # # 3 | # Oracle Database Dockerfile # 4 | # # 5 | #----------------------------------------------------------# 6 | 7 | FROM oraclelinux:7-slim as base 8 | 9 | # Use ARGs to keep the environment clean 10 | 11 | # Database defaults 12 | ARG ORACLE_VERSION_NAME=21c 13 | ARG ORACLE_VERSION=21.3 14 | ARG ORACLE_BASE=/u01/app/oracle 15 | ARG ORACLE_BASE_HOME=$ORACLE_BASE/homes 16 | ARG ORACLE_BASE_CONFIG=$ORACLE_BASE/dbs 17 | ARG ORACLE_HOME=$ORACLE_BASE/product/$ORACLE_VERSION_NAME/dbhome_1 18 | ARG ORACLE_INV=/u01/app/oraInventory 19 | ARG ORADATA=/opt/oracle/oradata 20 | ARG ORACLE_EDITION=EE 21 | ARG ORACLE_SID=ORCLCDB 22 | ARG ORACLE_PDB= 23 | ARG PDB_COUNT=1 24 | # Set ROOH to ENABLE to use a Read Only Oracle Home 25 | ARG ROOH= 26 | 27 | # Directory defaults 28 | ARG SCRIPTS_DIR=/opt/scripts 29 | ARG ORACLE_PATH=/home/oracle 30 | 31 | # Build defaults 32 | ARG RPM_LIST="oracle-epel-release-el7 file-5.11 git less strace sudo tree vi which bash-completion" 33 | ARG RPM_SUPPLEMENT="rlwrap" 34 | ARG MIN_SPACE_GB=12 35 | ARG BUILD_DATE= 36 | ARG BUILD_VERSION=1.0 37 | # Pass --build-arg DEBUG="bash -x" to run scripts in debug mode. 38 | ARG DEBUG= 39 | 40 | # DB configuration defaults 41 | ARG MANAGE_ORACLE=manageOracle.sh 42 | ARG ATTACH_HOME=0 43 | 44 | # Labels 45 | LABEL org.label-schema.schema-version="1.0" 46 | LABEL org.label-schema.url="http://oraclesean.com" 47 | LABEL org.label-schema.version="$BUILD_VERSION" 48 | LABEL org.label-schema.build-date="$BUILD_DATE" 49 | LABEL org.label-schema.vcs-url="https://github.com/oraclesean" 50 | LABEL org.label-schema.name="oraclesean/oracledb-$ORACLE_VERSION-$ORACLE_EDITION" 51 | LABEL org.label-schema.description="Extensible Oracle $ORACLE_VERSION database" 52 | LABEL org.label-schema.docker.cmd="docker run -d --name -e PDB_COUNT= -e ORACLE_SID= -e ORACLE_PDB= " 53 | LABEL maintainer="Sean Scott " 54 | LABEL database.version="$ORACLE_VERSION" 55 | LABEL database.edition="$ORACLE_EDITION" 56 | LABEL volume.oraclebase="$ORACLE_BASE" 57 | LABEL volume.oracleinv="$ORACLE_INV" 58 | LABEL volume.oraclehome="$ORACLE_HOME" 59 | LABEL volume.data="$ORADATA" 60 | LABEL volume.scripts="$SCRIPTS_DIR" 61 | LABEL volume.scripts.manage="$MANAGE_ORACLE" 62 | LABEL volume.sqlpath="$ORACLE_PATH" 63 | LABEL port.listener.listener1="1521" 64 | LABEL port.oemexpress="5500" 65 | LABEL port.http="8080" 66 | LABEL database.default.sid="$ORACLE_SID" 67 | LABEL database.default.pdb="$ORACLE_PDB" 68 | LABEL database.default.pdb_count="$PDB_COUNT" 69 | 70 | # Environment settings 71 | ENV ORACLE_BASE=$ORACLE_BASE \ 72 | ORACLE_BASE_HOME=$ORACLE_BASE_HOME \ 73 | ORACLE_BASE_CONFIG=$ORACLE_BASE_CONFIG \ 74 | ORACLE_HOME=$ORACLE_HOME \ 75 | ORACLE_INV=$ORACLE_INV \ 76 | ORADATA=$ORADATA \ 77 | ORACLE_VERSION=$ORACLE_VERSION \ 78 | ORACLE_EDITION=$ORACLE_EDITION \ 79 | ORACLE_SID=$ORACLE_SID \ 80 | ORACLE_PDB=$ORACLE_PDB \ 81 | PDB_COUNT=$PDB_COUNT \ 82 | ROOH=$ROOH \ 83 | ORACLE_PATH=$ORACLE_PATH \ 84 | SCRIPTS_DIR=$SCRIPTS_DIR \ 85 | MANAGE_ORACLE=$MANAGE_ORACLE \ 86 | ATTACH_HOME=$ATTACH_HOME \ 87 | DEBUG=$DEBUG 88 | 89 | ENV PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch/:/usr/sbin:$PATH \ 90 | CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib \ 91 | LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib \ 92 | TNS_ADMIN=$ORACLE_HOME/network/admin 93 | 94 | COPY $MANAGE_ORACLE $ORACLE_VERSION/install/dbca* $SCRIPTS_DIR/ 95 | 96 | # Build base image: 97 | RUN chmod ug+x $SCRIPTS_DIR/*.sh && \ 98 | $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE -e && \ 99 | rm -fr /tmp/* /var/cache/yum 100 | 101 | #----------------------------------------------------------# 102 | # # 103 | # Database Software Installation Stage # 104 | # # 105 | #----------------------------------------------------------# 106 | 107 | FROM base as db 108 | 109 | # DB installation defaults 110 | ARG INSTALL_DIR=/opt/install 111 | ARG INSTALL_RESPONSE=inst.rsp 112 | ARG INIT_FILE=oracledb_ORCLCDB-$ORACLE_VERSION_NAME 113 | ARG REMOVE_COMPONENTS="DBMA,HELP,ORDS,OUI,PATCH,PILOT,SQLD,SUP,UCP,TCP,ZIP" 114 | 115 | # Copy DB install files 116 | COPY --chown=oracle:oinstall ./$ORACLE_VERSION/install/ $INSTALL_DIR/ 117 | COPY --chown=oracle:oinstall ./database/* $INSTALL_DIR/ 118 | 119 | # Install DB software binaries 120 | RUN $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE -O 121 | 122 | #----------------------------------------------------------# 123 | # # 124 | # Create a Database Runtime # 125 | # # 126 | #----------------------------------------------------------# 127 | 128 | FROM base 129 | 130 | USER oracle 131 | COPY --chown=oracle:oinstall --from=db $ORACLE_INV $ORACLE_INV 132 | COPY --chown=oracle:oinstall --from=db $ORACLE_BASE $ORACLE_BASE 133 | COPY --chown=oracle:oinstall --from=db $ORADATA $ORADATA 134 | 135 | USER root 136 | RUN $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE -R 137 | 138 | USER oracle 139 | WORKDIR /home/oracle 140 | 141 | VOLUME ["$ORADATA"] 142 | EXPOSE 1521 5500 8080 143 | HEALTHCHECK --interval=1m --start-period=5m CMD $SCRIPTS_DIR/$MANAGE_ORACLE -h >/dev/null || exit 1 144 | CMD exec $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE 145 | -------------------------------------------------------------------------------- /Dockerfiles/Dockerfile.21.5: -------------------------------------------------------------------------------- 1 | #----------------------------------------------------------# 2 | # # 3 | # Oracle Database Dockerfile # 4 | # # 5 | #----------------------------------------------------------# 6 | 7 | FROM oraclelinux:7-slim as base 8 | 9 | # Use ARGs to keep the environment clean 10 | 11 | # Database defaults 12 | ARG ORACLE_VERSION_NAME=21c 13 | ARG ORACLE_VERSION=21.5 14 | ARG ORACLE_BASE=/u01/app/oracle 15 | ARG ORACLE_BASE_HOME=$ORACLE_BASE/homes 16 | ARG ORACLE_BASE_CONFIG=$ORACLE_BASE/dbs 17 | ARG ORACLE_HOME=$ORACLE_BASE/product/$ORACLE_VERSION_NAME/dbhome_1 18 | ARG ORACLE_INV=/u01/app/oraInventory 19 | ARG ORADATA=/opt/oracle/oradata 20 | ARG ORACLE_EDITION=EE 21 | ARG ORACLE_SID=ORCLCDB 22 | ARG ORACLE_PDB= 23 | ARG PDB_COUNT=1 24 | # Set ROOH to ENABLE to use a Read Only Oracle Home 25 | ARG ROOH= 26 | 27 | # Directory defaults 28 | ARG SCRIPTS_DIR=/opt/scripts 29 | ARG ORACLE_PATH=/home/oracle 30 | 31 | # Build defaults 32 | ARG RPM_LIST="oracle-epel-release-el7 file-5.11 git less strace sudo tree vi which bash-completion" 33 | ARG RPM_SUPPLEMENT="rlwrap" 34 | ARG MIN_SPACE_GB=12 35 | ARG BUILD_DATE= 36 | ARG BUILD_VERSION=1.0 37 | # Pass --build-arg DEBUG="bash -x" to run scripts in debug mode. 38 | ARG DEBUG= 39 | 40 | # DB configuration defaults 41 | ARG MANAGE_ORACLE=manageOracle.sh 42 | ARG ATTACH_HOME=0 43 | 44 | # Labels 45 | LABEL org.label-schema.schema-version="1.0" 46 | LABEL org.label-schema.url="http://oraclesean.com" 47 | LABEL org.label-schema.version="$BUILD_VERSION" 48 | LABEL org.label-schema.build-date="$BUILD_DATE" 49 | LABEL org.label-schema.vcs-url="https://github.com/oraclesean" 50 | LABEL org.label-schema.name="oraclesean/oracledb-$ORACLE_VERSION-$ORACLE_EDITION" 51 | LABEL org.label-schema.description="Extensible Oracle $ORACLE_VERSION database" 52 | LABEL org.label-schema.docker.cmd="docker run -d --name -e PDB_COUNT= -e ORACLE_SID= -e ORACLE_PDB= " 53 | LABEL maintainer="Sean Scott " 54 | LABEL database.version="$ORACLE_VERSION" 55 | LABEL database.edition="$ORACLE_EDITION" 56 | LABEL volume.oraclebase="$ORACLE_BASE" 57 | LABEL volume.oracleinv="$ORACLE_INV" 58 | LABEL volume.oraclehome="$ORACLE_HOME" 59 | LABEL volume.data="$ORADATA" 60 | LABEL volume.scripts="$SCRIPTS_DIR" 61 | LABEL volume.scripts.manage="$MANAGE_ORACLE" 62 | LABEL volume.sqlpath="$ORACLE_PATH" 63 | LABEL port.listener.listener1="1521" 64 | LABEL port.oemexpress="5500" 65 | LABEL port.http="8080" 66 | LABEL database.default.sid="$ORACLE_SID" 67 | LABEL database.default.pdb="$ORACLE_PDB" 68 | LABEL database.default.pdb_count="$PDB_COUNT" 69 | 70 | # Environment settings 71 | ENV ORACLE_BASE=$ORACLE_BASE \ 72 | ORACLE_BASE_HOME=$ORACLE_BASE_HOME \ 73 | ORACLE_BASE_CONFIG=$ORACLE_BASE_CONFIG \ 74 | ORACLE_HOME=$ORACLE_HOME \ 75 | ORACLE_INV=$ORACLE_INV \ 76 | ORADATA=$ORADATA \ 77 | ORACLE_VERSION=$ORACLE_VERSION \ 78 | ORACLE_EDITION=$ORACLE_EDITION \ 79 | ORACLE_SID=$ORACLE_SID \ 80 | ORACLE_PDB=$ORACLE_PDB \ 81 | PDB_COUNT=$PDB_COUNT \ 82 | ROOH=$ROOH \ 83 | ORACLE_PATH=$ORACLE_PATH \ 84 | SCRIPTS_DIR=$SCRIPTS_DIR \ 85 | MANAGE_ORACLE=$MANAGE_ORACLE \ 86 | ATTACH_HOME=$ATTACH_HOME \ 87 | DEBUG=$DEBUG 88 | 89 | ENV PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch/:/usr/sbin:$PATH \ 90 | CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib \ 91 | LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib \ 92 | TNS_ADMIN=$ORACLE_HOME/network/admin 93 | 94 | COPY $MANAGE_ORACLE $ORACLE_VERSION/install/dbca* $SCRIPTS_DIR/ 95 | 96 | # Build base image: 97 | RUN chmod ug+x $SCRIPTS_DIR/*.sh && \ 98 | $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE -e && \ 99 | rm -fr /tmp/* /var/cache/yum 100 | 101 | #----------------------------------------------------------# 102 | # # 103 | # Database Software Installation Stage # 104 | # # 105 | #----------------------------------------------------------# 106 | 107 | FROM base as db 108 | 109 | # DB installation defaults 110 | ARG INSTALL_DIR=/opt/install 111 | ARG INSTALL_RESPONSE=inst.rsp 112 | ARG INIT_FILE=oracledb_ORCLCDB-$ORACLE_VERSION_NAME 113 | ARG REMOVE_COMPONENTS="DBMA,HELP,ORDS,OUI,PATCH,PILOT,SQLD,SUP,UCP,TCP,ZIP" 114 | 115 | # Copy DB install files 116 | COPY --chown=oracle:oinstall ./$ORACLE_VERSION/install/ $INSTALL_DIR/ 117 | COPY --chown=oracle:oinstall ./database/* $INSTALL_DIR/ 118 | 119 | # Install DB software binaries 120 | RUN $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE -O 121 | 122 | #----------------------------------------------------------# 123 | # # 124 | # Create a Database Runtime # 125 | # # 126 | #----------------------------------------------------------# 127 | 128 | FROM base 129 | 130 | USER oracle 131 | COPY --chown=oracle:oinstall --from=db $ORACLE_INV $ORACLE_INV 132 | COPY --chown=oracle:oinstall --from=db $ORACLE_BASE $ORACLE_BASE 133 | COPY --chown=oracle:oinstall --from=db $ORADATA $ORADATA 134 | 135 | USER root 136 | RUN $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE -R 137 | 138 | USER oracle 139 | WORKDIR /home/oracle 140 | 141 | VOLUME ["$ORADATA"] 142 | EXPOSE 1521 5500 8080 143 | HEALTHCHECK --interval=1m --start-period=5m CMD $SCRIPTS_DIR/$MANAGE_ORACLE -h >/dev/null || exit 1 144 | CMD exec $DEBUG $SCRIPTS_DIR/$MANAGE_ORACLE 145 | -------------------------------------------------------------------------------- /config/manifest: -------------------------------------------------------------------------------- 1 | # 11.2.0.2 2 | dd7881a55569d890241f11cd0eeb7d48 oracle-xe-11.2.0-1.0.x86_64.rpm.zip database 11.2.0.2 XE 3 | # 4 | # 11.2.0.4 5 | 1616f61789891a56eafd40de79f58f28 p13390677_112040_Linux-x86-64_1of7.zip database 11.2.0.4 SE,EE 6 | 67ba1e68a4f581b305885114768443d3 p13390677_112040_Linux-x86-64_2of7.zip database 11.2.0.4 SE,EE 7 | dcad00c57b8fac46e5291ee0688d8220 p6880880_112000_Linux-x86-64.zip opatch 11.2.0.4 6880880 8 | eb970c5843f3a69ad6476f7fba1f9a7f p31537677_112040_Linux-x86-64.zip patch 11.2.0.4 31537677 9 | # 10 | # 12.1 11 | #4ed271b77b14aa25eea31b6574015471 linuxamd64_12101_database_1of2.zip database 12.1.0.1 EE 12 | #623b3f8b81d4eee06e333118d4d0040f linuxamd64_12101_database_2of2.zip database 12.1.0.1 EE 13 | 080435a40bd4c8dff6399b231a808e9a linuxamd64_12102_database_1of2.zip database 12.1 EE 14 | 30f20ef9437442b8282ce3984546c982 linuxamd64_12102_database_2of2.zip database 12.1 EE 15 | 80c2928c6382af06926cb173e4f4aef5 linuxamd64_12102_database_se2_1of2.zip database 12.1 SE 16 | bf0942f360f8938917511a8960280d11 linuxamd64_12102_database_se2_2of2.zip database 12.1 SE 17 | 5a8aedbd343732b5f69967b1379b21b9 p6880880_121010_Linux-x86-64.zip opatch 12.1 6880880 18 | 83ba2c6f4e4eb15939ddbce9fcd9bd7f p32768233_121020_Linux-x86-64.zip patch 12.1 32768233 19 | f926c2fa170a03929a4bb330b54006da p34057742_121020_Linux-x86-64.zip patch 12.1 34057742 20 | bc427a4d8c31929da523cae7fd6e659c p34006614_121020_Linux-x86-64.zip patch 12.1 34006614 # RDBMS - DSTV38 UPDATE - TZDATA2022A 21 | # 22 | # 12.2 23 | 1841f2ce7709cf909db4c064d80aae79 linuxx64_12201_database.zip database 12.2 SE,EE 24 | 5a8aedbd343732b5f69967b1379b21b9 p6880880_122010_Linux-x86-64.zip opatch 12.2 6880880 25 | 053a9f7b9156f89b0143d26d36a9fcd5 p34006614_122010_Linux-x86-64.zip patch 12.2 34006614 # RDBMS - DSTV38 UPDATE - TZDATA2022A 26 | # 27 | # 18c 28 | 99a7c4a088a8a502c261e741a8339ae8 LINUX.X64_180000_db_home.zip database 18.3 SE,EE 29 | #2ef79c73660191b1b6d68a5380892b60 oracle-database-ee-18c-1.0-1.x86_64.rpm database 18.3 SE,EE 30 | 5a8aedbd343732b5f69967b1379b21b9 p6880880_180000_Linux-x86-64.zip opatch 18.3 6880880 31 | 41b4b4137a70105059d965c4e3ef55bc p34006614_180000_Linux-x86-64.zip patch 18.3 34006614 # RDBMS - DSTV38 UPDATE - TZDATA2022A 32 | # 33 | # 19c 34 | 1858bd0d281c60f4ddabd87b1c214a4f LINUX.X64_193000_db_home.zip database 19 SE,EE 35 | #1f86171d22137e31cc2086bf7af36e91 oracle-database-ee-19c-1.0-1.x86_64.rpm database 19 SE,EE 36 | 5a8aedbd343732b5f69967b1379b21b9 p6880880_190000_Linux-x86-64.zip opatch 19 6880880 37 | 2a06e8c7409b21de9be6d404d39febda p30557433_190000_Linux-x86-64.zip patch 19.6 30557433 38 | 0e0831a46cc3f8312a761212505ba5d1 p30565805_196000DBRU_Linux-x86-64.zip patch 19.6 30565805 39 | f949a2bc8c5b1e01fd24ebee8c7feebe p30869156_190000_Linux-x86-64.zip patch 19.7 30869156 40 | fef4c7b7f7c313847de69667258eb3cd p30565805_197000DBRU_Linux-x86-64.zip patch 19.7 30565805 41 | 2003566250018b0b5c53e6f98d5d6d80 p31281355_190000_Linux-x86-64.zip patch 19.8 31281355 42 | bd8060c43c60bd4337bb2a89471b1fba p30565805_198000DBRU_Linux-x86-64.zip patch 19.8 30565805 43 | 65c2d78b70ebba4ee66d9454af9bbbb8 p31771877_190000_Linux-x86-64.zip patch 19.9 31771877 44 | add92eb9abca0f67593ae08e128bc3d4 p32218454_190000_Linux-x86-64.zip patch 19.10 32218454 45 | e51e866dbe507ee8c2958ed8643e28bc p33195096_1910000DBRU_Linux-x86-64.zip patch 19.10 33195096 46 | d2b136a8eb13e2446b62752b4d55db2f p32545013_190000_Linux-x86-64.zip patch 19.11 32545013 47 | f61d7cee9f16b70069cabe9617abc3d1 p33457235_1911000DBRU_Linux-x86-64.zip patch 19.11 33457235 48 | 726b68f86c2060a63808836a6831cb3d p33153989_190000_Linux-x86-64.zip patch 19.11.2 33153989 49 | 317e43c72d6c60dc4105b0be19acc84e p33457235_1911200DBRUR_Linux-x86-64.zip patch 19.11.2 33457235 50 | d382bbd63c7230eb2aa46f98e7f90837 p32904851_190000_Linux-x86-64.zip patch 19.12 32904851 51 | 1a86167e157ede01b3f266ce6b0994df p33457235_1912000DBRU_Linux-x86-64.zip patch 19.12 33457235 52 | 51476858bed61c8c764e613a59822d6b p33195096_1912000DBRU_Linux-x86-64.zip patch 19.12 33195096 53 | 73133e0259a6fc39326001bc43976881 p33210889_190000_Linux-x86-64.zip patch 19.12.1 33210889 54 | 9d868fb8f273ef10338ee5ee15a7c336 p33457235_1912100DBRUR_Linux-x86-64.zip patch 19.12.1 33457235 55 | de60e587df931a96deac13c5119e4264 p33494256_190000_Linux-x86-64.zip patch 19.12.2 33494256 56 | 5b2f369f6c1f0397c656a5554bc864e6 p33192793_190000_Linux-x86-64.zip patch 19.13 33192793 57 | 680af566ae1ed41a9916dfb0a122565c p33457235_1913000DBRU_Linux-x86-64.zip patch 19.13 33457235 58 | d6ed864be92a8b6a0b17ae4881d592ad p33195096_1913000DBRU_Linux-x86-64.zip patch 19.13 33195096 59 | 30eb702fe0c1bee393bb80ff8f10afe9 p33516456_190000_Linux-x86-64.zip patch 19.13.1 33516456 60 | de8c41d94676479b9aa35d66ca11c96a p33457235_1913100DBRUR_Linux-x86-64.zip patch 19.13.1 33457235 61 | b0f065b8cb6e6b45ccb3558042a7edc5 p33783771_190000_Linux-x86-64.zip patch 19.13.2 33783771 62 | 2470d39d7013c8dddb9f46769aeee36e p33195096_1913200DBRUR_Linux-x86-64.zip patch 19.13.2 33195096 63 | 7bcfdcd0f3086531e232fd0237b7438f p33515361_190000_Linux-x86-64.zip patch 19.14 33515361 64 | 3d51419f3f820f1a610c1cb4af1c350e p33457235_1914000DBRU_Linux-x86-64.zip patch 19.14 33457235 65 | 84e8c009daca658ce32fb99a31bc3984 p33195096_1914000DBRU_Linux-x86-64.zip patch 19.14 33195096 66 | 9af8fefc1cd25cfbef611922091a81bc p33806138_190000_Linux-x86-64.zip patch 19.14.1 33806138 67 | 665b940107da7f51f611fcbbf27f0df3 p34110559_190000_Linux-x86-64.zip patch 19.14.2 34110559 68 | 8da9aac7168bd850521c23f0c7ea70d2 p33195096_1914200DBRUR_Linux-x86-64.zip patch 19.14.2 33195096 69 | 4b1ce8b287073994ddf72282a7d1e2e9 p33806152_190000_Linux-x86-64.zip patch 19.15 33806152 70 | ec7cc001b66271c6475b7dca7f6d0163 p33195096_1915000DBRU_Linux-x86-64.zip patch 19.15 33195096 71 | 5f7d0f8d72d425167a7f43dde54377de p34119532_190000_Linux-x86-64.zip patch 19.15.1 34119532 72 | 999ea5904579ff3d9920388db1b4cf70 p33195096_1915100DBRUR_Linux-x86-64.zip patch 19.15.1 33195096 73 | ebc61b15e15aa0d84131b61ae776ba41 p34429835_190000_Linux-x86-64.zip patch 19.15.2 34429835 74 | 12d5aadb52df3269ad0d995657660bb0 p34133642_190000_Linux-x86-64.zip patch 19.16 34133642 75 | b82e96e953f3da29987b8914c64b3c4e p33195096_1916000DBRU_Linux-x86-64.zip patch 19.16 33195096 76 | 42a6c3484a1bd7f6aa3ca3434d762fb7 p34444812_190000_Linux-x86-64.zip patch 19.16.1 34444812 77 | 5866e2e148a1cecc267b3b43e68b62c3 p34419443_190000_Linux-x86-64.zip patch 19.17 34419443 78 | ecf713d7b63f04415c942a6e181ff84c p34765931_190000_Linux-x86-64.zip patch 19.18 34765931 79 | # DATABASE PERL UPDATE IN 19C TO V5.32-1 (CVE-2022-23990 - LIBEXPAT UPDATE) 80 | # General for any version, must be applied after RU 81 | 60dbd6f92635fb98790a9d69e80d5dcf p33912872_190000_Linux-x86-64.zip patch 19 33912872 82 | 1948e198d83209e22be4653822448123 p34006614_190000_Linux-x86-64.zip patch 19 34006614 # RDBMS - DSTV38 UPDATE - TZDATA2022A 83 | # 84 | # 21c 85 | 83d2945ef61d2bb2e5945c1c10155134 LINUX.X64_211000_db_home.zip database 21.1 SE,EE 86 | 8ac915a800800ddf16a382506d3953db LINUX.X64_213000_db_home.zip database 21 SE,EE 87 | #be49680760d60089815cc0b4ae2e1805 oracle-database-ee-21c-1.0-1.ol7.x86_64.rpm database 21 SE,EE OEL7 88 | #db3d15b21e17a455a1c28861d5ce0a4f oracle-database-ee-21c-1.0-1.ol8.x86_64.rpm database 21 SE,EE OEL8 89 | b4d9da84ad17461a6e11c34a8461dd8d oracle-database-xe-21c-1.0-1.ol7.x86_64.rpm database 21 XE OEL7 90 | 6e795f0d868743050364c14517c1b641 oracle-database-xe-21c-1.0-1.ol8.x86_64.rpm database 21 XE OEL8 91 | 5a8aedbd343732b5f69967b1379b21b9 p6880880_210000_Linux-x86-64.zip opatch 21 6880880 92 | 458e5b20bb62b801da940000a5137fac p33516412_210000_Linux-x86-64.zip patch 21.5 33516412 93 | e8e5e81faafb730de225f111ede677f8 p33843745_210000_Linux-x86-64.zip patch 21.6 33843745 94 | 70cb6d33ea30aff9302a5bf0ac1e5348 p34160444_210000_Linux-x86-64.zip patch 21.7 34160444 95 | 9e2c9df0385b7c9cd96faeeff7c12558 p34527084_210000_Linux-x86-64.zip patch 21.8 34527084 96 | 55a24d77f6128f36c7e28ad08c122df2 p34839741_210000_Linux-x86-64.zip patch 21.9 34839741 97 | # DATABASE PERL UPDATE FOR 21C TO V5.32-1 (CVE-2022-23990 - LIBEXPAT UPDATE) 98 | # General for any version, must be applied after RU 99 | e7922edf762f751675e4d90a29627b52 p33928944_210000_Linux-x86-64.zip patch 21 33928944 100 | c42962f8e97b920286c2e07f256e57cd p34006614_210000_Linux-x86-64.zip patch 21 34006614 # RDBMS - DSTV38 UPDATE - TZDATA2022A 101 | # 102 | # 23c 103 | f3b8ed1a1e6cbb107eb906e0f2acf7ea LINUX.X64_231000_db_home.zip database 23 SE,EE 104 | #9a66f9ff5ccedf1a253820d2984a540b p6880880_230000_Linux-x86-64.zip opatch 23 6880880 105 | -------------------------------------------------------------------------------- /labs/farsync/create_compose.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Set variables for environment 3 | export BUILD_DIR="$PWD" 4 | export PORT_PREFIX=1000 5 | export YAML_FILE=docker-compose.yml 6 | export CONFIG_FILE=config-dataguard.lst 7 | 8 | # Set variables used by Docker, Compose: 9 | export COMPOSE_YAML="$BUILD_DIR"/"$YAML_FILE" 10 | export COMPOSE_CONFIG="$BUILD_DIR"/"$CONFIG_FILE" 11 | export TNS_FILE="$BUILD_DIR"/tnsnames.ora 12 | export SETUP_PRIMARY=dg_setup_primary 13 | export BROKER_SCRIPT=dg_broker.dgs 14 | export BROKER_CHECKS=dg_check.dgs 15 | export RMAN_DUPLICATE=rman_duplicate 16 | export SETUP_DIR=/docker 17 | export ORADATA=/u01/app/oracle/oradata 18 | export TNS_PORT=1521 19 | 20 | # Create a docker-compose file and dynamically build the tnsnames.ora file 21 | # Initialize the docker-compose file: 22 | printf "version: '3'\nservices:\n" > "$COMPOSE_YAML" 23 | 24 | # Initialize the TNS file: 25 | printf "# tnsnames.ora file for Data Guard\n" > "$TNS_FILE" 26 | 27 | # Initialize the Broker file: 28 | cat /dev/null > "$BUILD_DIR"/"$BROKER_SCRIPT" 29 | 30 | # Populate the docker-compose.yml file: 31 | egrep -v "^$|^#" "$COMPOSE_CONFIG" | sed -e 's/[[:space:]]//g' | while IFS='|' read CONTAINER_NAME CONTAINER_ID IMAGE_NAME ORACLE_SID DB_UNQNAME ORACLE_PWD PDB_COUNT PDB_NAME ROLE ROUTE_PRIORITY DG_TARGET SYNC_MODE MAXFAIL OPEN_MODE 32 | do 33 | # Write the Docker compose file entry: 34 | cat <<- EOF >> "$COMPOSE_YAML" 35 | ${CONTAINER_NAME}: 36 | image: ${IMAGE_NAME} 37 | container_name: ${CONTAINER_NAME} 38 | volumes: 39 | - FS_${CONTAINER_NAME}:${ORADATA} 40 | - ${BUILD_DIR}:${SETUP_DIR} 41 | environment: 42 | CONTAINER_NAME: ${CONTAINER_NAME} 43 | ORACLE_SID: ${ORACLE_SID} 44 | DB_UNQNAME: ${DB_UNQNAME} 45 | ORACLE_PWD: ${ORACLE_PWD} 46 | PDB_COUNT: ${PDB_COUNT} 47 | PDB_NAME: ${PDB_NAME} 48 | ROLE: ${ROLE} 49 | DG_TARGET: ${DG_TARGET} 50 | SETUP_DIR: ${SETUP_DIR} 51 | BROKER_SCRIPT: ${BROKER_SCRIPT} 52 | BROKER_CHECKS: ${BROKER_CHECKS} 53 | SETUP_PRIMARY: ${SETUP_PRIMARY} 54 | RMAN_DUPLICATE: ${RMAN_DUPLICATE} 55 | OPEN_MODE: ${OPEN_MODE} 56 | 57 | ports: 58 | - ${PORT_PREFIX}${CONTAINER_ID}:${TNS_PORT} 59 | 60 | EOF 61 | 62 | # Write a tnsnames.ora entry for each instance in the configuration file: 63 | cat <<- EOF >> "$TNS_FILE" 64 | ${DB_UNQNAME} = 65 | (DESCRIPTION = 66 | (ADDRESS = (PROTOCOL = TCP)(HOST = ${CONTAINER_NAME})(PORT = ${TNS_PORT})) 67 | (CONNECT_DATA = 68 | (SERVER = DEDICATED) 69 | (UR = A) 70 | (SERVICE_NAME = ${ORACLE_SID}) 71 | ) 72 | ) 73 | 74 | EOF 75 | 76 | member_type="database" 77 | redo_route="$DB_UNQNAME $SYNC_MODE" 78 | long_route="$redo_route PRIORITY=${ROUTE_PRIORITY}" 79 | connect_id="'${CONTAINER_NAME}:${TNS_PORT}/${DB_UNQNAME}'" 80 | 81 | if [ "$ROLE" = "PRIMARY" ] 82 | then printf "create configuration %s as primary database is %s connect identifier is %s;\n" "$ORACLE_SID" "$DB_UNQNAME" "$connect_id" >> "$BUILD_DIR"/"$BROKER_SCRIPT" 83 | printf "edit database %s set property RedoRoutes = '(local:(###PRIMARY_REDO###))';\n" "$DB_UNQNAME" >> "$BUILD_DIR"/"$BROKER_SCRIPT".end 84 | printf "sql \"alter system set log_archive_config='DG_CONFIG=(###DG_CONFIG###)' comment='For Far Sync' scope=both\";\n" >> "$BUILD_DIR"/"$BROKER_SCRIPT" 85 | unset redo_route 86 | unset long_route 87 | # Initialize the Data Guard setup script 88 | cat <<- EOF > "$BUILD_DIR"/"$SETUP_PRIMARY".sql 89 | spool /tmp/${SETUP_PRIMARY}.out 90 | alter system set adg_redirect_dml=TRUE comment='For Data Guard' scope=both; 91 | alter system set adg_account_info_tracking='GLOBAL' comment='For Data Guard' scope=spfile; 92 | alter system set db_create_file_dest='${ORADATA}' comment='For Data Guard' scope=both; 93 | alter system set db_create_online_log_dest_1='${ORADATA}' comment='For Data Guard' scope=both; 94 | alter system set db_recovery_file_dest_size=50g comment='For Data Guard' scope=both; 95 | alter system set db_recovery_file_dest='${ORADATA}' comment='For Data Guard' scope=both; 96 | alter system set dg_broker_config_file1='${ORADATA}/${DB_UNQNAME}/dr1${DB_UNQNAME}.dat' comment='For Data Guard' scope=both; 97 | alter system set dg_broker_config_file2='${ORADATA}/${DB_UNQNAME}/dr2${DB_UNQNAME}.dat' comment='For Data Guard' scope=both; 98 | alter system set dg_broker_start=true comment='For Data Guard' scope=both; 99 | alter system set fal_client='${ORACLE_SID}' comment='For Data Guard' scope=both; 100 | alter system set log_archive_format='%t_%s_%r.arc' comment='For Data Guard' scope=spfile; 101 | alter system set log_archive_max_processes=8 comment='For Data Guard' scope=both; 102 | alter system set remote_login_passwordfile='EXCLUSIVE' comment='For Data Guard' scope=spfile; 103 | alter system set standby_file_management='AUTO' comment='For Data Guard' scope=both; 104 | declare 105 | v_group v\$log.group#%TYPE; 106 | begin 107 | for l in ( 108 | select thread#, bytes, count(group#) groups 109 | from v\$log 110 | group by thread#, bytes 111 | order by thread#, bytes) 112 | loop 113 | select max(group#) + 1 114 | into v_group 115 | from v\$logfile; 116 | for s in 0..l.groups 117 | loop execute immediate('alter database add standby logfile thread ' || to_char(l.thread#) || ' group ' || to_char(v_group + s) || ' size ' || to_char(l.bytes)); 118 | end loop; 119 | end loop; 120 | end; 121 | / 122 | shutdown immediate 123 | startup mount; 124 | alter database archivelog; 125 | alter database open; 126 | alter database force logging; 127 | alter system switch logfile; 128 | alter database flashback on; 129 | EOF 130 | 131 | elif [ "$ROLE" = "STANDBY" ] 132 | then printf " add database %s as connect identifier is %s maintained as physical;\n" "$DB_UNQNAME" "$connect_id" >> "$BUILD_DIR"/"$BROKER_SCRIPT" 133 | printf "edit database %s set property StaticConnectIdentifier = %s;\n" "$DB_UNQNAME" "$connect_id" >> "$BUILD_DIR"/"$BROKER_SCRIPT" 134 | # Create a standby RMAN duplicate script 135 | cat <<- EOF > "$RMAN_DUPLICATE"."$DB_UNQNAME".rman 136 | connect auxiliary sys/${ORACLE_PWD}@${CONTAINER_NAME}:${TNS_PORT}/${DB_UNQNAME} 137 | duplicate target database 138 | for standby 139 | from active database 140 | dorecover 141 | spfile 142 | set db_file_name_convert='${ORACLE_SID}','${DB_UNQNAME}' comment 'For Data Guard' 143 | set db_unique_name='${DB_UNQNAME}' comment 'For Data Guard' 144 | set dg_broker_config_file1='${ORADATA}/${DB_UNQNAME}/dr1${DB_UNQNAME}.dat' comment 'For Data Guard' 145 | set dg_broker_config_file2='${ORADATA}/${DB_UNQNAME}/dr2${DB_UNQNAME}.dat' comment 'For Data Guard' 146 | set fal_client='${DB_UNQNAME}' comment 'For Data Guard' 147 | set fal_server='${ORACLE_SID}' comment 'For Data Guard' 148 | set log_file_name_convert='${ORACLE_SID}','${DB_UNQNAME}' comment 'For Data Guard' 149 | nofilenamecheck; 150 | EOF 151 | 152 | elif [ "$ROLE" = "FARSYNC" ] 153 | then printf " add far_sync %s as connect identifier is %s;\n" "$DB_UNQNAME" "$connect_id" >> "$BUILD_DIR"/"$BROKER_SCRIPT" 154 | member_type="far_sync" 155 | # Create a Far Sync RMAN duplicate script 156 | cat <<- EOF > "$RMAN_DUPLICATE"."$DB_UNQNAME".rman 157 | connect auxiliary sys/${ORACLE_PWD}@${CONTAINER_NAME}:${TNS_PORT}/${DB_UNQNAME} 158 | duplicate target database 159 | for farsync 160 | from active database 161 | spfile 162 | reset control_files 163 | set db_file_name_convert='${ORACLE_SID}','${DB_UNQNAME}' comment 'For Far Sync' 164 | set db_unique_name='${DB_UNQNAME}' comment 'For Far Sync' 165 | set dg_broker_config_file1='${ORADATA}/${DB_UNQNAME}/dr1${DB_UNQNAME}.dat' comment 'For Far Sync' 166 | set dg_broker_config_file2='${ORADATA}/${DB_UNQNAME}/dr2${DB_UNQNAME}.dat' comment 'For Far Sync' 167 | set dg_broker_start='TRUE' comment 'For Far Sync' 168 | set fal_client='${DB_UNQNAME}' comment 'For Far Sync' 169 | set fal_server='${ORACLE_SID}' comment 'For Far Sync' 170 | reset log_archive_dest_2 171 | reset log_archive_dest_3 172 | reset log_archive_dest_4 173 | reset log_archive_dest_5 174 | reset log_archive_dest_6 175 | reset log_archive_dest_7 176 | reset log_archive_dest_8 177 | reset log_archive_dest_9 178 | reset log_archive_dest_10 179 | set log_file_name_convert='${ORACLE_SID}','${DB_UNQNAME}' comment 'For Far Sync' 180 | set sga_target='600M' comment 'For Far Sync'; 181 | EOF 182 | 183 | fi 184 | 185 | printf "edit $member_type %s set property HostName = '%s';\n" "$DB_UNQNAME" "$CONTAINER_NAME" >> "$BUILD_DIR"/"$BROKER_SCRIPT" 186 | printf "edit $member_type %s set property LogXptMode = '%s';\n" "$DB_UNQNAME" "$SYNC_MODE" >> "$BUILD_DIR"/"$BROKER_SCRIPT" 187 | printf "edit $member_type %s set property MaxFailure = %s;\n" "$DB_UNQNAME" "$MAXFAIL" >> "$BUILD_DIR"/"$BROKER_SCRIPT" 188 | 189 | if [ -z "$dg_config" ] 190 | then export dg_config="$DB_UNQNAME" 191 | else export dg_config="$dg_config","$DB_UNQNAME" 192 | fi 193 | 194 | if [ -z "$redo_routes" ] 195 | then export redo_routes="$redo_route" 196 | export long_routes="$long_route" 197 | else 198 | if [ "$ROLE" != "FARSYNC" ] 199 | then export redo_routes="$redo_routes, $redo_route" 200 | export long_routes="$long_routes, $long_route" 201 | else export redo_routes="$redo_routes" 202 | export long_routes="$long_route, $long_routes" 203 | cat "$BUILD_DIR"/"$BROKER_SCRIPT".end >> "$BUILD_DIR"/"$BROKER_SCRIPT" 204 | rm "$BUILD_DIR"/"$BROKER_SCRIPT".end 205 | printf "edit far_sync %s set property RedoRoutes = '(%s: %s)';\n" "$DB_UNQNAME" "$ORACLE_SID" "$redo_routes" >> "$BUILD_DIR"/"$BROKER_SCRIPT" 206 | printf "enable far_sync %s;\n" "$DB_UNQNAME" >> "$BUILD_DIR"/"$BROKER_SCRIPT" 207 | sed -i -e "s/###PRIMARY_REDO###/${long_routes}/" -e "s/###DG_CONFIG###/${dg_config}/" "$BUILD_DIR"/"$BROKER_SCRIPT" 208 | fi 209 | fi 210 | 211 | if [ "$(expr "$PDB_COUNT" + 0)" -gt 0 ] 212 | then cat <<- EOF >> "$TNS_FILE" 213 | ${CONTAINER_NAME}${PDB_NAME} = 214 | (DESCRIPTION = 215 | (ADDRESS = (PROTOCOL = TCP)(HOST = ${CONTAINER_NAME})(PORT = ${TNS_PORT})) 216 | (CONNECT_DATA = 217 | (SERVER = DEDICATED) 218 | (SERVICE_NAME = ${PDB_NAME}) 219 | ) 220 | ) 221 | 222 | EOF 223 | fi 224 | 225 | done 226 | 227 | printf "volumes:\n" >> "$COMPOSE_YAML" 228 | printf "enable configuration;\n" >> "$BUILD_DIR"/"$BROKER_SCRIPT" 229 | printf "show configuration verbose;\n" > "$BUILD_DIR"/"$BROKER_CHECKS" 230 | 231 | egrep -v "^$|^#" "$COMPOSE_CONFIG" | sed -e 's/[[:space:]]//g' | while IFS='|' read CONTAINER_NAME CONTAINER_ID IMAGE_NAME ORACLE_SID DB_UNQNAME ORACLE_PWD PDB_COUNT PDB_NAME ROLE ROUTE_PRIORITY DG_TARGET SYNC_MODE MAXFAIL 232 | do printf " FS_%s:\n" "$CONTAINER_NAME" >> "$COMPOSE_YAML" 233 | member_type="database" 234 | if [ "$ROLE" = "FARSYNC" ]; then member_type="far_sync"; fi 235 | printf "show %s verbose %s;\n" "$member_type" "$DB_UNQNAME" >> "$BUILD_DIR"/"$BROKER_CHECKS" 236 | done 237 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Update 2 | May 5 2022: I'm in the process of updating the documentation to reflect changes to operation/architecture in this repo. Please bear with me as I make these changes! 3 | 4 | # docker-oracle 5 | A repository of Docker image builds for creating Oracle databases. This repo replaces the other Docker repos I maintain. 6 | 7 | Jump to a section: 8 | - [Build an image](#build-an-image) 9 | - [Build options and examples](#build-options-and-examples) 10 | - [Run a container](#run-a-container) 11 | - [Examples: Run Oracle Database containers](#run-options-and-examples) 12 | - [Directory structure](#directory-structure) 13 | - [Where to put files](#file-placement) 14 | - [Why this Repo](#why-this-repo) 15 | - [Features](#features) 16 | - [Errata](#errata) 17 | 18 | # Build an image 19 | One [reason behind this repo](#why-this-repo) was reducing duplication. I wanted one set of scripts (not one-per-version) and less maintenance. That created a need for more than one Dockerfile (one per version) because building 11g and 21c images is *mostly* boilerplate, but not entirely, and Dockerfiles don't take variables. This repo solves that by taking boilerplate Dockerfile templates, processing them to substitute variables, and using them for the build. Named Dockerfiles enable matching .dockerignore files to limit context. But, every version still needs a unique Dockerfile. Rather than polluting the directory with versioned Dockerfiles run directly with `docker build` I'm hiding the complexity with temporary files and a shell script. Version and edition information passed to the script generates temporary Dockerfile and .dockerignore files, runs `docker build`, then deletes the temporary file. 20 | 21 | This is a temporary workaround. Dockerfile 1.4 and Buildx v0.8+, introduced in May 2022, add control over build context. I'm working on integrating the new capability. Until then, `buildDBImage.sh` manages Dockerfiles and builds. 22 | 23 | ## Build options and examples 24 | To build a database image, run `buildDBImage.sh` and pass optional values for version, edition, tag, source, and repository name: 25 | ``` 26 | ./buildDBImage.sh [version] [edition] [tag] [source] [repository] 27 | ``` 28 | 29 | - `version`: The database version to build. The value must match a version in a manifest file. (Default: `19.14`) 30 | - `edition`: The edition to build. Acceptable values: 31 | - `EE`: Enterprise Edition 32 | - 'SE`: Standard Edition, Standard Edition 2 33 | - `XE`: Express Edition (Only for versions 11.2.0.2, 18.4) 34 | - `tag`: The base OEL version. Options are `7-slim` or `8-slim`. (Default: `7-slim`) 35 | - `source`: The OEL source. (Default: `oraclelinux`) 36 | - `repository`: The image repository name assignment. (Default: `oraclesean/db`) 37 | 38 | Images created by the script are named as: `[repository]:[version]-[edition]` 39 | It additionally creates a version-specific Linux image: `[source]-[tag]-[base_version]` where the base version is 11g, 12.1, 12.2, 18c, 19c, or 21c. This Linux image includes the database prerequisites for the given version and makes building multiple database images for the same database version faster. The majority of the build time is spent applying prerequisite RPMs. The build understands if a version-ready image is present and uses it. 40 | 41 | ## FORCE_PATCH and `.netrc` 42 | When a `'.netrc` file is present, the `FORCE_PATCH` build argument enables patch downloads from My Oracle Support. Patches are downloaded when: 43 | - patches listed in the manifest aren't present in the build context (not added to the `./database/patches` directory) 44 | - the checksum of a patch doesn't match the value in the manifest 45 | - the `FORCE_PATCH` argument matches the patch type 46 | - the `FORCE_PATCH` argument includes the numeric patch ID 47 | 48 | `FORCE_PATCH` may have multiple options, separated by commas: 49 | - `all`: Download all patches listed in the manifest. 50 | - `opatch`: Download the latest version of `opatch`. 51 | - `patch`: Download patches but not `opatch`. 52 | - Patch ID: The numeric patch ID of patches to download. 53 | 54 | Pass the FORCE_PATCH value to `docker build` as `--build-arg FORCE_PATCH=(,,)` 55 | 56 | The `.netrc` file is passed to the build process in an intermediate stage as a build secret. It is not copied to the final database image. 57 | 58 | ## TODO: 59 | - Replace positional options with flags 60 | - Expand customizations 61 | - Add flexibility to pass `--build-arg`s to the script/image 62 | - Add a "Create Dockerfile" option (don't run the build) 63 | - Add Dockerfile naming capability 64 | - Add a help menu and error dialogs 65 | - Integrate secrets 66 | - More... 67 | 68 | # Run a container 69 | Run database containers as you would normally, using `docker run [options] [image-name]`. 70 | 71 | ## Run options and examples 72 | Options are controlled by environment variables set via the `docker run -e` flag: 73 | - `PDB_COUNT`: Create non-container databases by setting this value to 0, or set the number of pluggable databases to be spawned. 74 | - `CREATE_CONTAINER`: Ture/false, an alternate method for creating a non-CDB database. 75 | - `ORACLE_PDB`: This is the prefix for the PDB's (when PDB_COUNT > 1) or the PDB_NAME (when PDB_COUNT=1, the default). 76 | - `DB_UNQNAME`: Set the database Unique Name. Default is ORACLE_SID; used mainly for creating containers used for Data Guard where the database and unique names are different, and avoids generating multiple diagnostic directory trees. 77 | - `PDB_LIST`: A comma-delimited list of PDB names. When present, overrides the PDB_COUNT and ORACLE_PDB values. 78 | - `ORACLE_CHARACTERSET` and `ORACLE_NLS_CHARACTERSET`: Set database character sets. 79 | - `INIT_PARAMS`: A list of parameters to set in the database at creation time. The default sets the DB_CREATE_FILE_DEST, DB_CREATE_ONLINE_LOG_DEST_1, and DB_RECOVERY_FILE_DEST to $ORADATA (enabling OMF) and turns off auditing. 80 | - `DEBUG="bash -x"`: Debug container creation. 81 | 82 | Create a non-container database: 83 | `docker run -d -e PDB_COUNT=0 IMG_NAME` 84 | 85 | Create a container database with custom SID and PDB name: 86 | `docker run -d -e ORACLE_SID=mysid -e ORACLE_PDB=mypdb IMG_NAME` 87 | 88 | Create a container database with a default SID and three PDB named mypdb[1,2,3]: 89 | `docker run -d -e PDB_COUNT=3 -e ORACLE_PDB=mypdb IMG_NAME` 90 | 91 | Create a container database with custom SID and named PDB: 92 | `docker run -d -e ORACLE_SID=mydb -e PDB_LIST="test,dev,prod" IMG_NAME` 93 | 94 | # Directory Structure 95 | Three subdirectories contain the majority of assets and configuration needed by images. 96 | 97 | ## `./config` 98 | Here you'll find version-specific files and configuration, including: 99 | - `dbca..rsp`: Every version of Oracle seems to introduce new options and features for Database Configuration Assistant (DBCA). Each version-specific file includes options with default and placeholder values. During database creation, the script replaces placeholders with values passed to the container at runtime via the `-e` option. 100 | - `inst..rsp`: The database install response files, like the DBCA response files, include default and placeholder values for customizing database installation for any version of Oracle. The script updates the placeholder values with those present in the Dockerfile or given to the build operation through a `--build-arg` option. 101 | - `manifest.`: The manifest file includes information for all database and/or patch versions: 102 | ``` 103 | # md5sum File name Type Version Other 104 | 1858bd0d281c60f4ddabd87b1c214a4f LINUX.X64_193000_db_home.zip database 19 SE,EE 105 | #1f86171d22137e31cc2086bf7af36e91 oracle-database-ee-19c-1.0-1.x86_64.rpm database 19 SE,EE 106 | b8e1367997544ab2790c5bcbe65ca805 p6880880_190000_Linux-x86-64.zip opatch 19 6880880 107 | 2a06e8c7409b21de9be6d404d39febda p30557433_190000_Linux-x86-64.zip patch 19.6 30557433 108 | 0e0831a46cc3f8312a761212505ba5d1 p30565805_196000DBRU_Linux-x86-64.zip patch 19.6 30565805 109 | ... 110 | 5b2f369f6c1f0397c656a5554bc864e6 p33192793_190000_Linux-x86-64.zip patch 19.13 33192793 111 | 680af566ae1ed41a9916dfb0a122565c p33457235_1913000DBRU_Linux-x86-64.zip patch 19.13 33457235 112 | 30eb702fe0c1bee393bb80ff8f10afe9 p33516456_190000_Linux-x86-64.zip patch 19.13.1 33516456 113 | de8c41d94676479b9aa35d66ca11c96a p33457235_1913100DBRUR_Linux-x86-64.zip patch 19.13.1 33457235 114 | 7bcfdcd0f3086531e232fd0237b7438f p33515361_190000_Linux-x86-64.zip patch 19.14 33515361 115 | fd96f9db3c1873dfee00efe8088186a4 p33912872_190000_Linux-x86-64.zip patch 19 33912872 116 | ``` 117 | 118 | Column layout: 119 | - md5sum: The md5sum used for verification/check. 120 | - File name: Asset file name. 121 | - Type: Identifies the type of file. Possible values: 122 | - `database`: A file for installing database software. May be a .zip or .rpm file. 123 | - `opatch`: The OPatch file for this database version. 124 | - `patch`: Individual (non-OPatch) patch files. 125 | - Version: The database version the file applies to. Possible values: 126 | - database, opatch: The "base version" (in this example, 19). 127 | - patch: The patch version (eg 19.13 or 19.13.1). When a patch (or version) has multiple files, enter files in apply order, first to last. 128 | - Other: 129 | - database: Indicates Edition support. 130 | - `SE`: Standard Edition, Standard Edition 2 131 | - `EE`: Enterprise Edition 132 | - `SE,EE`: All editions 133 | - `XE`: Express Edition 134 | - opatch, patch: The patch number. 135 | 136 | Lines beginning with a `#` are ignored as comments. 137 | 138 | In this example, the patch number `33457235` appears twice, once for 19.13 and agains for 19.13.1, but there are version-specific files/checksums. 139 | Patch 33912872 appears once, with a generic version. This patch is applicable to any release but must be applied after the RU. The build process evaluates patches in order, so it will apply this general patch last. 140 | 141 | Additional template files exist in this directory (I will eventually move them to the `template` directory for consistency). There are three categories: 142 | - TNS configurations. Templates for setting up listener and networking configurations. Customize as necessary. During initial database creation, the files are copied to their proper locations and variables interpreted from the environment. 143 | - `listener.ora.tmpl` 144 | - `sqlnet.ora.tmpl` 145 | - `tnsnames.ora.tmpl` 146 | 147 | - Database configuration. Templates used for specialized database creation outside the "normal" automation, currently only used in upgrade images. 148 | - `init.ora.tmpl` 149 | 150 | - Environment configurations. Used to set up the interactive environment in the container. Each has a specific function: 151 | - `env.tmpl`: Used to build `~oracle/.bashrc`. Pay attention to escaping (`\`) on variables, there to support multi-home and multi-SID environments. 152 | - `login.sql.tmpl`: Used to create a `login.sql` file under `$SQLPATH` that formats and customizes SQLPlus output. 153 | - `rlwrap.tmpl`: If `rlwrap` is present in the environment, adds aliases for `sqlplus`, `rman`, and dgmgrl` to the shell. 154 | 155 | - Credential files: 156 | - `.netrc`: MOS login credentials. See the netrc.example file in this directory for format. Adding a `netrc` file allows the build process to download patches from MOS. See the FORCE_PATCH build arguement for more information. 157 | 158 | ## `./database` and `./database/patches` 159 | **All** database and patch files go here. I redesigned the file structure of this repo in March 2022 to use a common directory for all software. Eliminating versioned subdirectories simplified file management and eliminated file duplication. 160 | 161 | I previously supported versioning at the directory and Dockerfile level. It required a 19.13 directory (or a 19c directory and a 19.13 subdirectory), a dedicated Dockerfile, `Dockerfile.19.13`, and a matching docker ignore file, `Dockerfile.19.13.dockerignore`. But all 19c versions use the same .zip/.rpm for installation. `docker build` reads everything in the current directory and its subdirectories into its context prior to performing the build. It doesn't support links. So, to build 19.13 meant I had to have a copy of the 19c base installation media in each subdirectory. Implementation of .dockerignore requires the Dockerfile and its ignore file to have matching names. So, to limit context (preventing `docker build` from reading _every_ file at/below the build directory) I had to have separate, identically-named Dockerfile/.dockerignore files for *every version* I wanted to build. 162 | 163 | That duplication was something I set out to to avoid. I switched instead to a dynamic build process that reads context from a common directory, using .dockerignore to narrow its scope. The advantage is having one directory and one copy for all software. 164 | 165 | Combining this design with a manifest file means I no longer need to move patches in and out of subdirectories to control the patch level of image builds, nor worry about placing them in numbered folders to manage the apply order. Add the file to the appropriate directory (`database` or `database/patch`) and include an entry in the version manifest. 166 | 167 | ## `./templates` 168 | Dynamic builds run from the Dockerfile templates in this directory and create two images: a database image and a database-ready Oracle Linux image. 169 | 170 | The Oracle Enterprise Linux image, tagged with the database version, includes all database version prerequisites (notably the database preinstall RPM). The same image works for any database version installed atop it, and installing the prereqs (at least on my system) takes longer than installing database software. Rather than duplicating that work, the build looks to see if the image is present and starts there. If not, it builds the OEL image. 171 | 172 | Do not be confused by output like this: 173 | ``` 174 | REPOSITORY TAG SIZE 175 | oraclelinux 7-slim-19c 442MB 176 | oraclelinux 7-slim 133MB 177 | oracle/db 19.13.1-EE 7.58GB 178 | ``` 179 | 180 | The total size of these images is not 442MB + 133MB + 7.58GB. Layers in the oraclelinux:7-slim are reused in the oraclelinux:7-slim-19c image, which are reused in the oracle/db:19.13.1-EE image. 181 | 182 | The buildDBImage.sh script reads these templates and creates temporary Dockerfiles and dockerignore files, using information in the manifest according to the version (and other information) passed to the script. 183 | 184 | # Why this Repo 185 | I build and run many Oracle databases in containers. There were things I didn't like about Oracle's build scripts. My goals for this repository are: 186 | - Build any version and any patch level 187 | - Code should be agnostic 188 | - Migrate version-specific actions to templates 189 | - Store versioned information as configurations and manifests 190 | - Eliminate duplicate assets 191 | - Flatten and simplify the directory tree 192 | - Streamline builds and reduce image build times 193 | - Allow build- and run-time customization 194 | - Avoid unnecessary environment settings 195 | - Follow Oracle recommendations and best practices 196 | - Support for archive and RPM-based installations 197 | - Leverage buildx/BuildKit capabilities 198 | - Support advanced features and customization: 199 | - Read-Only Homes 200 | - CDB and non-CDB database creation 201 | - For CDB databases, control the number/naming of PDBs 202 | - Data Guard, Sharding, RAC, GoldenGate, upgrades, etc. 203 | 204 | # Legacy README: 205 | There is one script to handle all operations, for all editions and versions. This adds some complexity to the script (it has to accommodate peculiarities of every version and edition) but: 206 | - _For the most part_ these operations are identical across the board 207 | - One script in the root directory does everything and only one script needs maintenance 208 | - Version differences are all in one place vs. hidden in multiple files in parallel directories 209 | 210 | The `/opt/scripts/manageOracle.sh` script manages all Oracle/Docker operations, from build through installation: 211 | - Configures the environment 212 | - Installs RPM 213 | - Installs the database 214 | - Creates the database 215 | - Starts and stops the database 216 | - Performs health checks 217 | 218 | ## Flexible Image Creation 219 | Each Dockerfile uses a set of common ARG values. Defaults are set in each Dockerfile but can be overridden by passing `--build-arg` values to `docker build`. This allows a single Dockerfile to accommodate a wide range of build options without changes to any files, including: 220 | - Removing specific components (APEX, SQL Developer, help files, etc) to minimize image size without editing scripts. It's easier to build images to include components that are normally be deleted. This is particularly useful for building images for testing 19c upgrades. APEX is included in the seed database but older APEX schemas have to be removed prior to a 19c upgrade. Where's the removal script? In the APEX directory, among those commonly removed to trim image size! 221 | - Add programs/binaries at build time as variables, rather than in a script. Hey, sometimes you want editors or `strace` or `git`, sometimes you don't. Set the defaults to your preferred set of binaries. Override them at build time as necessary, again without having to edit/revert any files. 222 | - Some database versions may require special RPM. Rather than maintaining that in scripts, it's in the Dockerfile (configuration). 223 | - Add supplemental RPMs. Some RPM have dependencies (such as `rlwrap`) that require a second execution of `rpm install`. All builds treat this the same way. 224 | - The RPM list includes tools for interactive use of containers. 225 | - Remove `git`, `less`, `strace`, `tree`, `vi`, `which`, and `bash-completion` for non-interactive environments 226 | - `sudo` is used to run installations from the `manageOracle.sh` script 227 | - All builds are multi-stage with identical steps, users and operations. Differences are handled by the management script by reading configuration information from the Dockerfile, discovered in the file structure, or set in the environment. 228 | - Customizing the directories for `ORACLE_BASE`, `ORACLE_HOME`, `oraInventory`, and the `oradata` directory. 229 | - Specify Read-Only Oracle Home (ROOH). Set `ROOH=ENABLE` in the Dockerfile, or pass `--build-arg ROOH=ENABLE` during build. 230 | 231 | ## Install Oracle from Archive (ZIP) or RPM 232 | RPM builds operate a little differently. They have a dependency on `root` because database configuration and startup is managed through `/etc/init.d`. The configuration is in `/etc/sysconfig`. If left at their default (I have a repo for building default RPM-based Oracle installations elsewhere) they need `root` and pose a security risk. I experimented with workarounds (adding `oracle` to `sudoers`, changing the `/etc/init.d` script group to `oinstall`, etc) but RPM-created databases still ran differently. 233 | 234 | I use the RPM to create the Oracle software home, then discard what's in `/etc/init.d` and `/etc/sysconfig` and create and start the database "normally" using DBCA and SQLPlus. 235 | 236 | This allows additional options for RPM-based installations, including changing the directory structure (for non-18c XE installs—the 18c XE home does not include libraries needed to recompile) and managing configuration through the same mechanism as "traditional" installations, meaning anything that can be applied to a "normal" install can be set in a RPM-based installation, without editing a different set of files in `/etc/sysconfig` and `ORACLE_HOME`. Express Edition on 18c (18.4) can be extended to use: 237 | - Custom SID (not stuck with XE) 238 | - Container or non-container 239 | - Custom PDB name(s) 240 | - Multiple PDB 241 | 242 | ## Flexible Container Creation 243 | I wanted images capable of running highly customizable database environments out of the gate, that mimic what's seen in real deployments. This includes running non-CDB databases, multiple pluggable databases, case-sensitive SID and PDB names, and custom PDB naming (to name a few). Database creation is controlled and customized by passing environment variables to `docker run` via `-e VARIABLE=VALUE`. Notable options include: 244 | - `PDB_COUNT`: Create non-container databases by setting this value to 0, or set the number of pluggable databases to be spawned. 245 | - `CREATE_CONTAINER`: Ture/false, an alternate method for creating a non-CDB database. 246 | - `ORACLE_PDB`: This is the prefix for the PDB's (when PDB_COUNT > 1) or the PDB_NAME (when PDB_COUNT=1, the default). 247 | - `DB_UNQNAME`: Set the database Unique Name. Default is ORACLE_SID; used mainly for creating containers used for Data Guard where the database and unique names are different, and avoids generating multiple diagnostic directory trees. 248 | - `PDB_LIST`: A comma-delimited list of PDB names. When present, overrides the PDB_COUNT and ORACLE_PDB values. 249 | - `ORACLE_CHARACTERSET` and `ORACLE_NLS_CHARACTERSET`: Set database character sets. 250 | - `INIT_PARAMS`: A list of parameters to set in the database at creation time. The default sets the DB_CREATE_FILE_DEST, DB_CREATE_ONLINE_LOG_DEST_1, and DB_RECOVERY_FILE_DEST to $ORADATA (enabling OMF) and turns off auditing. 251 | 252 | ## DEBUG mode 253 | Debug image builds, container creation, or container operation. 254 | - Use `--build-arg DEBUG="bash -x"` to debug image builds 255 | - Use `-e DEBUG="bash -x"` to debug container creation 256 | - Use `export DEBUG="bash -x"` to turn on debugging output in a running container 257 | - Use `unset DEBUG` to turn debugging off in a running container 258 | 259 | # Examples 260 | Create a non-container database: 261 | `docker run -d -e PDB_COUNT=0 IMG_NAME` 262 | Create a container database with custom SID and PDB name: 263 | `docker run -d -e ORACLE_SID=mysid -e ORACLE_PDB=mypdb IMG_NAME` 264 | Create a container database with a default SID and three PDB named mypdb[1,2,3]: 265 | `docker run -d -e PDB_COUNT=3 -e ORACLE_PDB=mypdb IMG_NAME` 266 | Create a container database with custom SID and named PDB: 267 | `docker run -d -e ORACLE_SID=mydb -e PDB_LIST="test,dev,prod" IMG_NAME` 268 | 269 | # Errata 270 | 271 | ## ORACLE_PDB Behavior in Containers 272 | There are multiple mechanisms that set the ORACLE_PDB variable in a container. It is set explicitly by passing a value (e.g. `-e ORACLE_PDB=value`) during `docker run`. This is the preferred way of doing things since it correctly sets the environment. 273 | The value may be set implicitly four ways: 274 | - If ORACLE_PDB is not set and the database version requires a PDB (20c and later), the value of ORACLE_PDB is inherited from the image. 275 | - If ORACLE_PDB is not set and PDB_COUNT is non-zero, PDB_COUNT PDBs are implied. The value of ORACLE_PDB is inherited from the image. 276 | - If both ORACLE_PDB and PDB_COUNT are set, ORACLE_PDB is assumed to be a prefix. PDB_COUNT pluggable databases are created as ${ORACLE_PDB}1 through ${ORACLE_PDB}${PDB_COUNT}. ORACLE_PDB in this case is not an actual pluggable database but a prefix. 277 | - If ORACLE_PDB is not set and PDB_LIST contains one or more values, ORACLE_PDB is inherited from the image. 278 | In each case the ORACLE_PDB environment variable is added to the `oracle` user's login scripts. Run that request more than one PDB (PDB_LIST, PDB_COUNT > 1) set the default value to the first PDB in the list/${ORACLE_PDB}1. 279 | In these latter cases, the ORACLE_PDB for interactive sessions is set by login but non-interactive sessions *DO NOT* get the local value. They inherit the value from the container's native environment. 280 | Take the following examples: 281 | - `docker run ... -e ORACLE_PDB=PDB ...`: The interactive and non-interactive values of ORACLE_PDB match. 282 | - 'docker run ... -e PDB_COUNT=n ...`: The interactive value of ORACLE_PDB is ORCLPDB1. The non-interactive value is ORCLPDB. This happens because the inherited value, ORCLPDB is used for non-interactive sessions. 283 | - `docker run ... -e PDB_LIST=PDB1,MYPDB ...`: The interactive value of ORACLE_PDB is PDB1. The non-interactive value is ORCLPDB (see above). 284 | - `docker run ... ` a 21c database: The interactive value of ORACLE_PDB is set in the DBCA scripts as ORCLPDB. The non-interactive value equals whatever is set in the Dockerfile. 285 | This can cause confusion when calling scripts. For example: 286 | ``` 287 | docker exec -it CON_NAME bash 288 | env | grep ORACLE_PDB 289 | exit 290 | ``` 291 | ...will show the correct, expected value. However: 292 | ``` 293 | docker exec -it CON_NAME bash -c "env | grep ORACLE_PDB" 294 | ``` 295 | ...may show a different value. This is expected (and intended and desirable—it's necessary for statelessness and idempotency) but may lead to confusion. 296 | I recommend handling this as follows: 297 | - Set ORACLE_PDB explicitly in `docker run` even when using PDB_LIST. PDB_LIST is evaluated first so setting ORACLE_PDB sets the environment and PDB_LIST creates multiple pluggable databases. The default PDB should be first in the list and match ORACLE_PDB. 298 | - If you need multiple PDBs, use PDB_LIST instead of PDB_COUNT, and set ORACLE_PDB to the "default" PDB. Otherwise, the ORACLE_PDB value in non-interactive shells is the prefix and not a full/valid PDB name. 299 | 300 | # TODO 301 | - Remove sudo option for building containers. It's only used during software installation and isn't required in final images. 302 | 303 | # Glossary 304 | - APEX: Oracle Application Express, a low-code web development tool. 305 | - CDB: Container Database - Introduced in 12c, container databases introduce capacity and security enhancements. Each CDB consists of a root container plus one or more Pluggable Databases, or PDBs. 306 | - DBCA: Oracle Database Configuration Assistant - a tool for creating databases. 307 | - EE: Oracle Enterprise Edition - A licensed, more robust version of Oracle that can be extended through addition of add-ons like Advanced Compression, Partitioning, etc. 308 | - ORACLE_BASE: The base directory for Oracle software installation. 309 | - ORACLE_HOME: The directory path containing an Oracle database software installation. 310 | - ORACLE_INVENTORY, Oracle Inventory: Metadata of Oracle database installations on a host. 311 | - PDB: Pluggable Database - One or more PDBs "plug in" to a container database. 312 | - RPM: RedHat Package Manager - package files for installing software on Linux. 313 | - runInstall: Performs Oracle database software installation. 314 | - SE, SE2: Oracle Standard Edition/Oracle Standard Edition 2 - A licensed version of Oracle with limited features. Not all features are available, licensed, or extensive in SE/SE2. For example, partitioning is not available in SE/SE2, and RAC is limited to specific node/core counts. 315 | - XE: Oracle Express Edition - A limited version of the Oracle database that is free to use. 316 | --------------------------------------------------------------------------------