Created
November 14, 2016 20:47
-
-
Save dbernheisel/85ad468661e24e79584a2711c0b7745b to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| -- https://github.com/rsim/oracle-enhanced/blob/master/RUNNING_TESTS.md | |
| GRANT unlimited tablespace, create session, create table, create sequence, create procedure, create trigger, create view, create materialized view, create database link, create synonym, create type, ctxapp TO test IDENTIFIED BY test; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/bin/bash | |
| source $ORACLE_BASE/startup-functions.sh | |
| # Remove database config files | |
| rm -f $ORACLE_HOME/dbs/spfile$ORACLE_SID.ora | |
| rm -f $ORACLE_HOME/dbs/orapw$ORACLE_SID | |
| rm -f $ORACLE_HOME/network/admin/tnsnames.ora | |
| createDB; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # unmodified | |
| # LICENSE CDDL 1.0 + GPL 2.0 | |
| # | |
| # Copyright (c) 1982-2016 Oracle and/or its affiliates. All rights reserved. | |
| # | |
| # ORACLE DOCKERFILES PROJECT | |
| # -------------------------- | |
| # This is the Dockerfile for Oracle Database 12c Release 1 Enterprise Edition | |
| # | |
| # REQUIRED FILES TO BUILD THIS IMAGE | |
| # ---------------------------------- | |
| # (1) linuxamd64_12102_database_1of2.zip | |
| # linuxamd64_12102_database_2of2.zip | |
| # Download Oracle Database 12c Release 1 Enterprise Edition for Linux x64 | |
| # from http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html | |
| # | |
| # HOW TO BUILD THIS IMAGE | |
| # ----------------------- | |
| # Put all downloaded files in the same directory as this Dockerfile | |
| # Run: | |
| # $ docker build -t oracle/database:12.1.0.2-ee . | |
| # | |
| # Pull base image | |
| # --------------- | |
| FROM oraclelinux:latest | |
| # Maintainer | |
| # ---------- | |
| MAINTAINER Gerald Venzl <gerald.venzl@oracle.com> | |
| # Environment variables required for this build (do NOT change) | |
| # ------------------------------------------------------------- | |
| ENV ORACLE_BASE=/opt/oracle \ | |
| ORACLE_HOME=/opt/oracle/product/12.1.0.2/dbhome_1 \ | |
| INSTALL_FILE_1="linuxamd64_12102_database_1of2.zip" \ | |
| INSTALL_FILE_2="linuxamd64_12102_database_2of2.zip" \ | |
| INSTALL_RSP="db_inst.rsp" \ | |
| CONFIG_RSP="dbca.rsp.tmpl" \ | |
| PWD_FILE="setPassword.sh" \ | |
| PERL_INSTALL_FILE="installPerl.sh" \ | |
| RUN_FILE="runOracle.sh" | |
| # Use second ENV so that variable get substituted | |
| ENV INSTALL_DIR=$ORACLE_BASE/install \ | |
| PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch/:/usr/sbin:$PATH \ | |
| LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib \ | |
| CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib | |
| # Copy binaries | |
| # ------------- | |
| COPY $INSTALL_FILE_1 $INSTALL_FILE_2 $INSTALL_RSP $PERL_INSTALL_FILE $INSTALL_DIR/ | |
| COPY $RUN_FILE $CONFIG_RSP $PWD_FILE $ORACLE_BASE/ | |
| # Setup filesystem and oracle user | |
| # Adjust file permissions, go to /opt/oracle as user 'oracle' to proceed with Oracle installation | |
| # ------------------------------------------------------------ | |
| RUN mkdir -p $ORACLE_BASE/oradata && \ | |
| chmod ug+x $ORACLE_BASE/$PWD_FILE && \ | |
| chmod ug+x $ORACLE_BASE/$RUN_FILE && \ | |
| groupadd -g 500 dba && \ | |
| groupadd -g 501 oinstall && \ | |
| useradd -d /home/oracle -g dba -G oinstall,dba -m -s /bin/bash oracle && \ | |
| echo oracle:oracle | chpasswd && \ | |
| yum -y install oracle-rdbms-server-12cR1-preinstall unzip wget tar openssl && \ | |
| yum clean all && \ | |
| chown -R oracle:dba $ORACLE_BASE | |
| # Replace place holders | |
| # --------------------- | |
| RUN sed -i -e "s|###ORACLE_EDITION###|EE|g" $INSTALL_DIR/$INSTALL_RSP && \ | |
| sed -i -e "s|###ORACLE_BASE###|$ORACLE_BASE|g" $INSTALL_DIR/$INSTALL_RSP && \ | |
| sed -i -e "s|###ORACLE_HOME###|$ORACLE_HOME|g" $INSTALL_DIR/$INSTALL_RSP | |
| # Start installation | |
| # ------------------- | |
| USER oracle | |
| RUN cd $INSTALL_DIR && \ | |
| unzip $INSTALL_FILE_1 && \ | |
| rm $INSTALL_FILE_1 && \ | |
| unzip $INSTALL_FILE_2 && \ | |
| rm $INSTALL_FILE_2 && \ | |
| $INSTALL_DIR/database/runInstaller -silent -force -waitforcompletion -responsefile $INSTALL_DIR/$INSTALL_RSP -ignoresysprereqs -ignoreprereq && \ | |
| rm -rf $INSTALL_DIR/database && \ | |
| ln -s $ORACLE_BASE/$PWD_FILE $HOME/ && \ | |
| echo "DEDICATED_THROUGH_BROKER_LISTENER=ON" >> $ORACLE_HOME/network/admin/listener.ora && \ | |
| echo "DIAG_ADR_ENABLED = off" >> $ORACLE_HOME/network/admin/listener.ora; | |
| # Check whether Perl is working | |
| RUN chmod u+x $INSTALL_DIR/installPerl.sh && \ | |
| $ORACLE_HOME/perl/bin/perl -v || \ | |
| $INSTALL_DIR/installPerl.sh | |
| USER root | |
| RUN $ORACLE_BASE/oraInventory/orainstRoot.sh && \ | |
| $ORACLE_HOME/root.sh && \ | |
| rm -rf $INSTALL_DIR | |
| USER oracle | |
| WORKDIR /home/oracle | |
| # VOLUME ["$ORACLE_BASE/oradata"] | |
| EXPOSE 1521 5500 | |
| # Define default command to start Oracle Database. | |
| CMD $ORACLE_BASE/$RUN_FILE |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| FROM oracle/database:12.1.0.2-ee | |
| MAINTAINER David Bernheisel <david.bernheisel@scimedsolutions.com> | |
| ENV ORACLE_BASE=/opt/oracle \ | |
| ORACLE_HOME=/opt/oracle/product/12.1.0.2/dbhome_1 \ | |
| ORACLE_SID="ORCLCDB" \ | |
| ORACLE_PDB="ORCLPDB1" \ | |
| ORACLE_PWD="oracle" | |
| # Use second ENV so that variable get substituted | |
| ENV INSTALL_DIR=$ORACLE_BASE/install \ | |
| PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch/:/usr/sbin:$PATH \ | |
| LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib \ | |
| CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib | |
| USER root | |
| COPY startup-functions.sh createDB.sh startDB.sh $ORACLE_BASE/ | |
| RUN chmod ug+x $ORACLE_BASE/startDB.sh $ORACLE_BASE/createDB.sh $ORACLE_BASE/startup-functions.sh&&\ | |
| chown oracle:dba $ORACLE_BASE/startDB.sh $ORACLE_BASE/createDB.sh $ORACLE_BASE/startup-functions.sh | |
| USER oracle | |
| WORKDIR /home/oracle | |
| RUN bash $ORACLE_BASE/createDB.sh | |
| COPY create_test_user.sql /home/oracle/ | |
| RUN bash $ORACLE_BASE/startDB.sh &&\ | |
| sqlplus sys/$ORACLE_PWD@//localhost:1521/$ORACLE_SID as sysdba @create_test_user.sql | |
| CMD $ORACLE_BASE/startDB.sh |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/bin/bash | |
| ########### Move DB files ############ | |
| function moveFiles { | |
| if [ ! -d $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID ]; then | |
| mkdir -p $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/ | |
| fi; | |
| mv $ORACLE_HOME/dbs/spfile$ORACLE_SID.ora $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/ | |
| mv $ORACLE_HOME/dbs/orapw$ORACLE_SID $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/ | |
| mv $ORACLE_HOME/network/admin/tnsnames.ora $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/ | |
| # oracle user does not have permissions in /etc, hence cp and not mv | |
| cp /etc/oratab $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/ | |
| symLinkFiles; | |
| } | |
| ########### Symbolic link DB files ############ | |
| function symLinkFiles { | |
| if [ ! -L $ORACLE_HOME/dbs/spfile$ORACLE_SID.ora ]; then | |
| ln -s $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/spfile$ORACLE_SID.ora $ORACLE_HOME/dbs/spfile$ORACLE_SID.ora | |
| fi; | |
| if [ ! -L $ORACLE_HOME/dbs/orapw$ORACLE_SID ]; then | |
| ln -s $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/orapw$ORACLE_SID $ORACLE_HOME/dbs/orapw$ORACLE_SID | |
| fi; | |
| if [ ! -L $ORACLE_HOME/network/admin/tnsnames.ora ]; then | |
| ln -s $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/tnsnames.ora $ORACLE_HOME/network/admin/tnsnames.ora | |
| fi; | |
| # oracle user does not have permissions in /etc, hence cp and not ln | |
| cp $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/oratab /etc/oratab | |
| } | |
| ########### SIGINT handler ############ | |
| function _int() { | |
| echo "Stopping container." | |
| echo "SIGINT received, shutting down database!" | |
| sqlplus / as sysdba <<EOF | |
| shutdown immediate; | |
| EOF | |
| lsnrctl stop | |
| } | |
| ########### SIGTERM handler ############ | |
| function _term() { | |
| echo "Stopping container." | |
| echo "SIGTERM received, shutting down database!" | |
| sqlplus / as sysdba <<EOF | |
| shutdown immediate; | |
| EOF | |
| lsnrctl stop | |
| } | |
| ########### SIGKILL handler ############ | |
| function _kill() { | |
| echo "SIGKILL received, shutting down database!" | |
| sqlplus / as sysdba <<EOF | |
| shutdown abort; | |
| EOF | |
| lsnrctl stop | |
| } | |
| ############# Create DB ################ | |
| function createDB { | |
| # Auto generate ORACLE PWD | |
| ORACLE_PWD=`openssl rand -base64 8` | |
| echo "ORACLE AUTO GENERATED PASSWORD FOR SYS, SYSTEM AND PDBAMIN: $ORACLE_PWD"; | |
| cp $ORACLE_BASE/$CONFIG_RSP $ORACLE_BASE/dbca.rsp | |
| sed -i -e "s|###ORACLE_SID###|$ORACLE_SID|g" $ORACLE_BASE/dbca.rsp | |
| sed -i -e "s|###ORACLE_PDB###|$ORACLE_PDB|g" $ORACLE_BASE/dbca.rsp | |
| sed -i -e "s|###ORACLE_PWD###|$ORACLE_PWD|g" $ORACLE_BASE/dbca.rsp | |
| mkdir -p $ORACLE_HOME/network/admin | |
| echo "NAME.DIRECTORY_PATH= {TNSNAMES, EZCONNECT, HOSTNAME}" > $ORACLE_HOME/network/admin/sqlnet.ora | |
| # Listener.ora | |
| echo "LISTENER = | |
| (DESCRIPTION_LIST = | |
| (DESCRIPTION = | |
| (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1)) | |
| (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521)) | |
| ) | |
| ) | |
| " > $ORACLE_HOME/network/admin/listener.ora | |
| # Start LISTENER and run DBCA | |
| lsnrctl start && | |
| dbca -silent -responseFile $ORACLE_BASE/dbca.rsp || | |
| cat /opt/oracle/cfgtoollogs/dbca/$ORACLE_SID/$ORACLE_SID.log | |
| echo "$ORACLE_SID=localhost:1521/$ORACLE_SID" >> $ORACLE_HOME/network/admin/tnsnames.ora | |
| echo "$ORACLE_PDB= | |
| (DESCRIPTION = | |
| (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521)) | |
| (CONNECT_DATA = | |
| (SERVER = DEDICATED) | |
| (SERVICE_NAME = $ORACLE_PDB) | |
| ) | |
| )" >> $ORACLE_HOME/network/admin/tnsnames.ora | |
| sqlplus / as sysdba << EOF | |
| ALTER SYSTEM SET control_files='$ORACLE_BASE/oradata/$ORACLE_SID/control01.ctl' scope=spfile; | |
| ALTER PLUGGABLE DATABASE $ORACLE_PDB SAVE STATE; | |
| EOF | |
| rm $ORACLE_BASE/dbca.rsp | |
| # Move database operational files to oradata | |
| moveFiles; | |
| } | |
| ############# Start DB ################ | |
| function startDB { | |
| # Make sure audit file destination exists | |
| if [ ! -d $ORACLE_BASE/admin/$ORACLE_SID/adump ]; then | |
| mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/adump | |
| fi; | |
| lsnrctl start | |
| sqlplus / as sysdba << EOF | |
| STARTUP; | |
| EOF | |
| } | |
| ############# MAIN ################ | |
| # Check whether container has enough memory | |
| if [ `cat /sys/fs/cgroup/memory/memory.limit_in_bytes` -lt 2147483648 ]; then | |
| echo "Error: The container doesn't have enough memory allocated." | |
| echo "A database container needs at least 2 GB of memory." | |
| echo "You currently only have $((`cat /sys/fs/cgroup/memory/memory.limit_in_bytes`/1024/1024/1024)) GB allocated to the container." | |
| exit 1; | |
| fi; | |
| # Set SIGINT handler | |
| trap _int SIGINT | |
| # Set SIGTERM handler | |
| trap _term SIGTERM | |
| # Set SIGKILL handler | |
| trap _kill SIGKILL | |
| # Default for ORACLE SID | |
| if [ "$ORACLE_SID" == "" ]; then | |
| export ORACLE_SID=ORCLCDB | |
| fi; | |
| # Default for ORACLE PDB | |
| if [ "$ORACLE_PDB" == "" ]; then | |
| export ORACLE_PDB=ORCLPDB1 | |
| fi; | |
| # Check whether database already exists | |
| if [ -d $ORACLE_BASE/oradata/$ORACLE_SID ]; then | |
| symLinkFiles; | |
| startDB; | |
| else | |
| # Remove database config files, if they exist | |
| rm -f $ORACLE_HOME/dbs/spfile$ORACLE_SID.ora | |
| rm -f $ORACLE_HOME/dbs/orapw$ORACLE_SID | |
| rm -f $ORACLE_HOME/network/admin/tnsnames.ora | |
| createDB; | |
| fi; | |
| echo "#########################" | |
| echo "DATABASE IS READY TO USE!" | |
| echo "#########################" | |
| tail -f $ORACLE_BASE/diag/rdbms/*/*/trace/alert*.log & | |
| childPID=$! | |
| wait $childPID |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/bin/bash | |
| source $ORACLE_BASE/startup-functions.sh | |
| # symLinkFiles; | |
| startDB; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/bin/bash | |
| ############# Start DB ################ | |
| function startDB { | |
| # Make sure audit file destination exists | |
| if [ ! -d $ORACLE_BASE/admin/$ORACLE_SID/adump ]; then | |
| mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/adump | |
| fi; | |
| lsnrctl start | |
| sqlplus / as sysdba << EOF | |
| STARTUP; | |
| EOF | |
| } | |
| ########### Symbolic link DB files ############ | |
| # function symLinkFiles { | |
| # if [ ! -L $ORACLE_HOME/dbs/spfile$ORACLE_SID.ora ]; then | |
| # ln -s $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/spfile$ORACLE_SID.ora $ORACLE_HOME/dbs/spfile$ORACLE_SID.ora | |
| # fi; | |
| # if [ ! -L $ORACLE_HOME/dbs/orapw$ORACLE_SID ]; then | |
| # ln -s $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/orapw$ORACLE_SID $ORACLE_HOME/dbs/orapw$ORACLE_SID | |
| # fi; | |
| # if [ ! -L $ORACLE_HOME/network/admin/tnsnames.ora ]; then | |
| # ln -s $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/tnsnames.ora $ORACLE_HOME/network/admin/tnsnames.ora | |
| # fi; | |
| # # oracle user does not have permissions in /etc, hence cp and not ln | |
| # cp $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/oratab /etc/oratab | |
| # } | |
| ########### Move DB files ############ | |
| function moveFiles { | |
| if [ ! -d $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID ]; then | |
| mkdir -p $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/ | |
| fi; | |
| mv $ORACLE_HOME/dbs/spfile$ORACLE_SID.ora $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/ | |
| mv $ORACLE_HOME/dbs/orapw$ORACLE_SID $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/ | |
| mv $ORACLE_HOME/network/admin/tnsnames.ora $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/ | |
| # oracle user does not have permissions in /etc, hence cp and not mv | |
| cp /etc/oratab $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/ | |
| # symLinkFiles; | |
| } | |
| ############# Create DB ################ | |
| function createDB { | |
| echo "ORACLE AUTO GENERATED PASSWORD FOR SYS, SYSTEM AND PDBAMIN: $ORACLE_PWD"; | |
| cp $ORACLE_BASE/$CONFIG_RSP $ORACLE_BASE/dbca.rsp | |
| sed -i -e "s|###ORACLE_SID###|$ORACLE_SID|g" $ORACLE_BASE/dbca.rsp | |
| sed -i -e "s|###ORACLE_PDB###|$ORACLE_PDB|g" $ORACLE_BASE/dbca.rsp | |
| sed -i -e "s|###ORACLE_PWD###|$ORACLE_PWD|g" $ORACLE_BASE/dbca.rsp | |
| mkdir -p $ORACLE_HOME/network/admin | |
| echo "NAME.DIRECTORY_PATH= {TNSNAMES, EZCONNECT, HOSTNAME}" > $ORACLE_HOME/network/admin/sqlnet.ora | |
| # Listener.ora | |
| echo "LISTENER = | |
| (DESCRIPTION_LIST = | |
| (DESCRIPTION = | |
| (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1)) | |
| (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521)) | |
| ) | |
| ) | |
| " > $ORACLE_HOME/network/admin/listener.ora | |
| # Start LISTENER and run DBCA | |
| lsnrctl start && | |
| dbca -silent -responseFile $ORACLE_BASE/dbca.rsp || | |
| cat /opt/oracle/cfgtoollogs/dbca/$ORACLE_SID/$ORACLE_SID.log | |
| echo "$ORACLE_SID=localhost:1521/$ORACLE_SID" >> $ORACLE_HOME/network/admin/tnsnames.ora | |
| echo "$ORACLE_PDB= | |
| (DESCRIPTION = | |
| (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521)) | |
| (CONNECT_DATA = | |
| (SERVER = DEDICATED) | |
| (SERVICE_NAME = $ORACLE_PDB) | |
| ) | |
| )" >> $ORACLE_HOME/network/admin/tnsnames.ora | |
| sqlplus / as sysdba << EOF | |
| ALTER SYSTEM SET control_files='$ORACLE_BASE/oradata/$ORACLE_SID/control01.ctl' scope=spfile; | |
| ALTER PLUGGABLE DATABASE $ORACLE_PDB SAVE STATE; | |
| EOF | |
| rm $ORACLE_BASE/dbca.rsp | |
| # Move database operational files to oradata | |
| # moveFiles; | |
| } | |
| # Default for ORACLE SID | |
| if [ "$ORACLE_SID" == "" ]; then | |
| export ORACLE_SID=ORCLCDB | |
| fi; | |
| # Default for ORACLE PDB | |
| if [ "$ORACLE_PDB" == "" ]; then | |
| export ORACLE_PDB=ORCLPDB1 | |
| fi; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment