Sign inSign up

limslee/oracle-database-ee

By limslee

•Updated about 4 years ago

Oracle Database Enterprise Edition Docker Image

Image
Databases & storage
0

573

limslee/oracle-database-ee repository overview

⁠Build parameters
./buildContainerImage.sh -v 21.3.0 -e -t limslee/oracle-database-ee:21.3.0
./buildContainerImage.sh -v 19.3.0 -e -t limslee/oracle-database-ee:19.3.0

For more information about Oracle Database container please visit https://github.com/oracle/docker-images/tree/main/OracleDatabase/SingleInstance⁠



⁠Running Oracle Database in a container
⁠Running Oracle Database Enterprise and Standard Edition 2 in a container

To run your Oracle Database image use the docker run command as follows:

docker run --name <container name> \
-p <host port>:1521 -p <host port>:5500 \
-e ORACLE_SID=<your SID> \
-e ORACLE_PDB=<your PDB name> \
-e ORACLE_PWD=<your database passwords> \
-e INIT_SGA_SIZE=<your database SGA memory in MB> \
-e INIT_PGA_SIZE=<your database PGA memory in MB> \
-e ORACLE_EDITION=<your database edition> \
-e ORACLE_CHARACTERSET=<your character set> \
-e ENABLE_ARCHIVELOG=true \
-v [<host mount point>:]/opt/oracle/oradata \
limslee/oracle-database-ee[:<version 21.3.0 or 19.3.0>]

Parameters:
   --name:        The name of the container (default: auto generated).
   -p:            The port mapping of the host port to the container port.
                  Two ports are exposed: 1521 (Oracle Listener), 5500 (OEM Express).
   -e ORACLE_SID: The Oracle Database SID that should be used (default: ORCLCDB).
   -e ORACLE_PDB: The Oracle Database PDB name that should be used (default: ORCLPDB1).
   -e ORACLE_PWD: The Oracle Database SYS, SYSTEM and PDB_ADMIN password (default: auto generated).
   -e INIT_SGA_SIZE:
                  The total memory in MB that should be used for all SGA components (optional).
                  Supported 19.3 onwards.
   -e INIT_PGA_SIZE:
                  The target aggregate PGA memory in MB that should be used for all server processes attached to the instance (optional).
                  Supported 19.3 onwards.
   -e AUTO_MEM_CALCULATION:
                  To enable auto calculation of the DBCA total memory limit during the database creation, based on
                  the available memory of the container, which can be constrained using the `docker run --memory`
                  option. If set to 'false', the total memory will be set as 2GB (default: true).
                  Note that this parameter is not taken into account if the `-e INIT_SGA_SIZE` or `-e INIT_PGA_SIZE`
                  are set.
                  Supported 19.3 onwards.
   -e ORACLE_EDITION:
                  The Oracle Database Edition (enterprise/standard).
                  Supported 19.3 onwards.
   -e ORACLE_CHARACTERSET:
                  The character set to use when creating the database (default: AL32UTF8).
   -e ENABLE_ARCHIVELOG:
                  To enable archive log mode when creating the database (default: false).
                  Supported 19.3 onwards.
   -v /opt/oracle/oradata
                  The data volume to use for the database.
                  Has to be writable by the Unix "oracle" (uid: 54321) user inside the container!
                  If omitted the database will not be persisted over container recreation.
   -v /opt/oracle/scripts/startup | /docker-entrypoint-initdb.d/startup
                  Optional: A volume with custom scripts to be run after database startup.
                  For further details see the "Running scripts after setup and on startup" section below.
   -v /opt/oracle/scripts/setup | /docker-entrypoint-initdb.d/setup
                  Optional: A volume with custom scripts to be run after database setup.
                  For further details see the "Running scripts after setup and on startup" section below.

Once the container has been started and the database created you can connect to it just like to any other database:

sqlplus sys/<your password>@//localhost:1521/<your SID> as sysdba
sqlplus system/<your password>@//localhost:1521/<your SID>
sqlplus pdbadmin/<your password>@//localhost:1521/<Your PDB name>

The Oracle Database inside the container also has Oracle Enterprise Manager Express configured. To access OEM Express, start your browser and follow the URL:

https://localhost:5500/em/

NOTE: Oracle Database bypasses file system level caching for some of the files by using the O_DIRECT flag. It is not advised to run the container on a file system that does not support the O_DIRECT flag.

⁠Securely specifying the password when using Podman (Supported from 19.3.0 onwards)

Podman secret is supported if the user uses the podman runtime and needs to specify the password to the container securely. The user needs to create a secret first with the name oracle_pwd, and then run the container image after specifying the secret in the run command. The example commands are as follows:

    # Creating podman secret
    echo "<Your Password>" | podman secret create oracle_pwd -

    # Running the Oracle Database 21c image with the secret
    podman run -d --name=<container_name> --secret=oracle_pwd limslee/oracle-database-ee:21.3.0
⁠Selecting the Edition (Supported from 19.3.0 release)

The edition of the database can be changed during runtime by passing the ORACLE_EDITION parameter to the docker run command. Therefore, an enterprise container image can be used to run standard edition database and vice-versa. You can find the edition of the running database in the output line:

ORACLE EDITION:

This parameter modifies the software home binaries but it doesn't have any effect on the datafiles. So, if existing datafiles are reused to bring up the database, the same ORACLE_EDITION must be passed as the one used to create the datafiles for the first time.

⁠Setting the SGA and PGA memory (Supported from 19.3.0 release)

The SGA and PGA memory can be set during the first time when database is created by passing the INIT_SGA_SIZE and INIT_PGA_SIZE parameters respectively to the docker run command. The user must provide the values in MB and without any units appended to the values (For example: -e INIT_SGA_SIZE=1536). These parameters are optional and dbca calculates these values if they aren't provided.

In case these parameters are passed to the docker run command while reusing existing datafiles, even though these values would be visible in the container environment, they would not be set inside the database. The values used at the time of database creation will be used.

⁠Changing the admin accounts passwords

On the first startup of the container, a random password will be generated for the database if not provided. The user has to mandatorily change the password after the database is created and the corresponding container is healthy.

The password for those accounts can be changed via the docker exec command. Note, the container has to be running:

docker exec <container name> ./setPassword.sh <your password>

This new password will be used afterwards.

⁠Enabling archive log mode while creating the database

Archive mode can be enabled during the first time when database is created by setting ENABLE_ARCHIVELOG to true and passing it to docker run command. Archive logs are stored at the directory location: /opt/oracle/oradata/$ORACLE_SID/archive_logs inside the container.

In case this parameter is set true and passed to docker run command while reusing existing datafiles, even though this parameter would be visible as set to true in the container environment, this would not be set inside the database. The value used at the time of database creation will be used.

Tag summary

Content type

Image

Digest

sha256:27e37efa7…

Size

3.1 GB

Last updated

about 4 years ago

docker pull limslee/oracle-database-ee