DB Containers: Free Oracle Database for Developers


You don’t have an Oracle Cloud Account?!!!
What? Not even a free one? Ok, ok, let me catch my breadth and settle down …
How are you going to ride the hype on Oracle without access to Oracle’s cloud or the much touted Autonomous Database and Database release 23ai?
Release 23ai was announced back in back in 2023 and GA in 2024, along with a long list of capabilities extended the 21 release, many of which targeted at developers.
If you want to get started and still have a 0 network requirement, then you should explore Oracle’s Free Container Database Images.
About this Post
In my role, I support Oracle Database related technologies, including APEX, DevOps for the Oracle Database, and recently Globally Distributed Database & the Oracle Database Operator.
The later is the basis of this article as I begin to explore options that automate the Oracle database life-cycle, many based on the use of container images.
The Autonomous Database (ADB) Free Container Image is on my current testing list, though most of my work with ADB is in the Oracle Cloud Infrastructure (OCI) or simply the Oracle Cloud.
The Oracle Container Registry
Oracle provides several container images in its registry for its various databases, middleware and a few application related ones. These images can be run with Docker or Podman, and many in Kubernetes with some tested with RedHat OpenShift as well. (on my list of test cases!)
The registry contains several images and release versions but simplifies upgrading/updating to the latest release.
There are several images that can be used for free that can be deployed as many times as I want, allowing me to perform tests for the database and CI/CD projects.
The database containers allow for name, port, workload and release selection, so several images can be run side-by-side, without conflict.
The last and main point is that these images are maintained and updated regularly, so I can get the most current database patches in a matter of minutes without any installation.
About the ADB Free Container Image
The ADB-FREE image provides a working Oracle database with its support for Warehouse and Transaction Processing Workloads, pre-installed set of components, like APEX and the Mongo API, that are normally reserved for Oracle’s premium hardware running in the Cloud or on-premise, Exadata, Cloud@Customer or Mutli-Cloud platforms.
The container image and all of the software that it contains is licensed under Oracle Free Use Terms and Conditions that are provided in the container image.
For me, as a developer, technology explorer, I can develop, test, demo and run applications without any fees.
I also get access to a full featured Oracle database that does not require any network connectivity.
What about the Autonomous Database Features?
The image provides the basic ADB environment. Many of the features when deployed in OCI are limited to OCI or Cloud at Customer deployment options. The docs highlight the restrictions, such as the 4 CPUs, 20GB of total storage or 30 maximum simultaneous database sessions.
To note, this is an 8GB and 2 CPU upgrade over the XE version.
The recommendations and restrictions cover all that will not be included, such as Graph, Oracle Machine Learning, Backups, or even the sample Schemas.
Outside of Graph and Machine Learning, when deployed all the features supported by the release version are supported. All of the many 23ai New Features including the ability to import ONNX AI Models, Vearch Search, JSON Relational Duality, JavaScript Stored Procedures, Azure AD OAuth2 Integration and more.
About the Oracle Database Free Container Image
If Autonomous is not your thing but you still what access to the latest release and GA builds of the Oracle Database, then the Oracle Database Free container image may suite your needs.
This image comes in two flavors, Full or Lite. The Lite image has a 80% smaller footprint but reduced set of database features. Check the Features Not Supported section for a complete list.
The Lite image is recommended for CI/CD scenarios, testing deployments without the advanced database features.
The Downside for Me
Actually, I’ve not found any downsides and for the current test scenarios I have only found one.
As of this post the container ADB-FREE image is not supported by the Oracle Database Operator.
I am not aware how many of us are exploring or using the Oracle Database Operator, so this may just just something for me and my teammates but we all have access to OCI and multiple instances of Autonomous Databases for our prototyping & demonstrations.
The Upside
Since there are no real downsides, I will be transitioning to using this instance more.
It supports persistent storage, so all of my projects will be there after a re-start
I can re-deploy it without any major problems.
Keep up to date with the latest builds & release versions
Deploy where I need it, locally, on compute, in a Kubernetes
Deployment
The container registry provide steps for deployment with Podman which are very clear, I will not copy & paste that here but it will vary somewhat for Docker/Podman or deployment into your K8S cluster of choice.
I am running the ADB-FREE image on my Macbook M1, and things are running smoothly.
My recommendations for Mac Silicon users
Install Podman with the Podman installer directly from Podman.io
Install MacFuse to have better Overlay FS support, for Linux then check out Fuse OverlayFS which can be installed using Brew
Initialise Podman machine as per the instructions and make note of the FAQ link for ARM support. I did not have to install colima on my system, nor did I have any issues related to x86_64 arch
Set up a persistent volume to be able to keep the image data between restarts or for migrations. The name of the volume is referenced when running the pod and is configured by the default command provided.
-- Podman create volume podman volume create adb_container_volume -- Docker create volume docker volume create adb_container_volume
Use Podman to run the image, I saved the command as a script that I can pass the name, wallet, and admin password in as parameters
podman run -d \ -p 1521:1522 \ -p 1522:1522 \ -p 8443:8443 \ -p 27017:27017 \ -e WORKLOAD_TYPE='ATP' \ -e WALLET_PASSWORD=$2 \ -e ADMIN_PASSWORD=$3 \ --cap-add SYS_ADMIN \ --device /dev/fuse \ --name $1 \ --volume adb_container_volume:/u01/data \ container-registry.oracle.com/database/adb-free:latest-23ai
Check the status of the pod. Be patient, the pod does require some time to startup
podman ps -a
When it is healthy or unhealthy ( 😀 ), connect from your browser to https://localhost:8443/ords or use your SQL tool of choice to connect directly to the database on port 1522
Download the database wallet to your local machine for direct SQL connections
podman cp adb-free:/u01/app/oracle/wallets/tls_wallet /my_wallet_dir/adb-free
If you prefer to update your local trust store then download and import the certificate image as a trusted CA. I trust Oracle but ….😏
Connect to the instance and create your schema user, grant it some basic roles and you will be good to go.
CREATE USER APP_USER IDENTIFIED BY "<my_app_user_password>" QUOTA UNLIMITED ON DATA; -- ADD ROLES GRANT CONNECT TO APP_USER; GRANT RESOURCE TO APP_USER; GRANT CONSOLE_DEVELOPER TO APP_USER; -- ADB & DB23ai ROLES GRANT DWROLE TO APP_USER; GRANT DB_DEVELOPER_ROLE TO APP_USER; ALTER USER APP_USER DEFAULT ROLE DB_DEVELOPER_ROLE,DWROLE;
The database, APEX and ORDS are all pre-configured with the ADB-FREE, so you will have most of everything you need.
Conclusion
Install the Oracle database as a container or even other Oracle software and configurations is greatly simplified. Installing, patching, upgrading will be a thing of the past, along with long conversations with DBAs, I.T. managers or Operations teams on why you can’t have a dedicated or new instance.
Even with the quote on quote long start up time of 5 minutes, and however long it took for the image to download over my internet connection, it is pretty fast.
The pods provide a feature rich database development environment that will allow developers, working in enterprise environments, create applications that will be 100% compatible the licensed version of the database, as they are available in both the current longterm release 19c and long awaited release 23ai.
Are you using the Oracle Container Registry or the Oracle Database Operator?
If so, what has your experience been like?
Subscribe to my newsletter
Read articles from Sydney Nurse directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by

Sydney Nurse
Sydney Nurse
I work with software but it does not define me and my constant is change and I live a life of evolution. Learning, adapting, forgetting, re-learning, repeating I am not a Developer, I simply use software tools to solve interesting challenges and implement different use cases.