In this short post I will share how to run the latest Oracle Database 23c Free Developer Release with Podman on MacOS.
For this post I am using Podman version 4.5.1 running on macOS 13.1, which I installed using brew install podman, brew upgrade podman.
We can use podman -v or podman version to check version of podman, for example.
rekins@rekins--MacBookPro15 ~ % podman -v podman version 4.5.1 rekins@rekins--MacBookPro15 ~ % podman version Client: Podman Engine Version: 4.5.1 API Version: 4.5.1 Go Version: go1.20.4 Git Commit: 9eef30051c83f62816a1772a743e5f1271b196d7 Built: Fri May 26 16:10:12 2023 OS/Arch: darwin/amd64 Server: Podman Engine Version: 4.5.0 API Version: 4.5.0 Go Version: go1.20.2 Built: Fri Apr 14 16:42:22 2023 OS/Arch: linux/amd64 rekins@rekins--MacBookPro15 ~ % sw_vers -ProductVersion 13.1
We can also see the version and other details with podman machine info.
rekins@rekins--MacBookPro15 ~ % podman machine info Host: Arch: amd64 CurrentMachine: podman-machine-default DefaultMachine: podman-machine-default EventsDir: /var/folders/j9/4bx2rgz54ljbky31tzp7m46w0000gn/T/podman-run--1/podman MachineConfigDir: /Users/rekins/.config/containers/podman/machine/qemu MachineImageDir: /Users/rekins/.local/share/containers/podman/machine/qemu MachineState: Running NumberOfMachines: 1 OS: darwin VMType: qemu Version: APIVersion: 4.5.1 Built: 1685113812 BuiltTime: Fri May 26 16:10:12 2023 GitCommit: 9eef30051c83f62816a1772a743e5f1271b196d7 GoVersion: go1.20.4 Os: darwin OsArch: darwin/amd64 Version: 4.5.1
Before we start let’s increase the memory available of our podman machine to 4GB.
rekins@rekins--MacBookPro15 ~ % podman machine set --memory 4096 rekins@rekins--MacBookPro15 ~ % podman machine list NAME VM TYPE CREATED LAST UP CPUS MEMORY DISK SIZE podman-machine-default* qemu 3 weeks ago 12 days ago 1 4.295GB 107.4GB
Pull the Podman Image from the Oracle Container Registry using podman pull or docker pull, if you try both you may notice that the output from docker pull differs slightly to podman pull.
Note, as we are using the forever FREE Developer release there is no requirement to sign into the Oracle Container Registry and accept the licence terms.
rekins@rekins--MacBookPro15 ~ % podman pull container-registry.oracle.com/database/free:latest Trying to pull container-registry.oracle.com/database/free:latest... Getting image source signatures Copying blob sha256:480f5079c729cba2bf0d7924a0a1e768ddd1c928aa5023bcef66b25d8b18b0f8 Copying blob sha256:def8df68f6e53ff120e828fd0e94e49afbc4ccde950ef6a3896116e066c69472 Copying blob sha256:4f739c56798864b29e27f32ddc1e19c3e788990b8de1a6a19c291fd409afb7c2 Copying blob sha256:579d0ff24aa5ba5b2f2749880bc82bc03943586b1889a2c3468da916fec999a8 Copying config sha256:7c64410c08d5afc711a9da0cc7cfa6e4e66bc7ec4456c3ba5867823c8e40ef57 Writing manifest to image destination Storing signatures 7c64410c08d5afc711a9da0cc7cfa6e4e66bc7ec4456c3ba5867823c8e40ef57 rekins@rekins--MacBookPro15 ~ % docker pull container-registry.oracle.com/database/free:latest 480f5079c729: Download complete def8df68f6e5: Download complete 4f739c567988: Download complete 579d0ff24aa5: Download complete 7c64410c08d5: Download complete container-registry.oracle.com/database/free:latest
We can confirm the Oracle Database 23c Free Developer release has been pulled successfully with podman images.
rekins@rekins--MacBookPro15 ~ % podman images REPOSITORY TAG IMAGE ID CREATED SIZE quay.io/podman/hello latest 6778b046de90 9 days ago 82 kB container-registry.oracle.com/database/free latest 7c64410c08d5 7 weeks ago 10.3 GB
Now we have our Oracle Container Image we can create our Oracle Database 23c container.
Let’s start by creating a local volume on my Mac called oradata with a label called version with a value of 23c.
rekins@rekins--MacBookPro15 ~ % podman volume create --label version=23c oradata oradata rekins@rekins--MacBookPro15 ~ % podman volume inspect oradata [ { "Name": "oradata", "Driver": "local", "Mountpoint": "/var/home/core/.local/share/containers/storage/volumes/oradata/_data", "CreatedAt": "2023-06-01T10:51:39.176801095+01:00", "Labels": { "version": "23c" }, "Scope": "local", "Options": {}, "MountCount": 0, "NeedsCopyUp": true, "NeedsChown": true } ]
And a podman secret for our database.
rekins@rekins--MacBookPro15 ~ % echo "Welcome1" | podman secret create oracle_pwd - d190e92a24c614d1c3370ed4b
Start Oracle Database 23c
Start the Oracle database 23c container with podman run, and wait a few minutes for the container to report healthy.
rekins@rekins--MacBookPro15 ~ % podman run -d --name oracle23c --secret=oracle_pwd -p 1521:1521 -v oradata:/opt/oracle/oradata container-registry.oracle.com/database/free:latest 447da37690e26be8b90cd28b0cee0670dfc2537d61f64c82121213e0311f2749 rekins@rekins--MacBookPro15 ~ % podman ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 447da37690e2 container-registry.oracle.com/database/free:latest /bin/sh -c exec $... About a minute ago Up 39 seconds (starting) 0.0.0.0:1521->1521/tcp oracle23c rekins@rekins--MacBookPro15 ~ % podman ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 447da37690e2 container-registry.oracle.com/database/free:latest /bin/sh -c exec $... 2 minutes ago Up About a minute (healthy) 0.0.0.0:1521->1521/tcp oracle23c
Podman Logs
Use podman logs <container name> to see database container log file, for example.
rekins@rekins--MacBookPro15 ~ % podman logs oracle23c Starting Oracle Net Listener. Oracle Net Listener started. Starting Oracle Database instance FREE. Oracle Database instance FREE started. The Oracle base remains unchanged with value /opt/oracle SQL*Plus: Release 23.0.0.0.0 - Developer-Release on Thu Jun 1 09:54:25 2023 Version 23.2.0.0.0 Copyright (c) 1982, 2023, Oracle. All rights reserved. Connected to: Oracle Database 23c Free, Release 23.0.0.0.0 - Developer-Release Version 23.2.0.0.0 SQL> User altered. SQL> User altered. SQL> Session altered. SQL> User altered. SQL> Disconnected from Oracle Database 23c Free, Release 23.0.0.0.0 - Developer-Release Version 23.2.0.0.0 The Oracle base remains unchanged with value /opt/oracle ######################### DATABASE IS READY TO USE! ######################### The following output is now a tail of the alert.log: FREEPDB1(3):Undo initialization recovery: Parallel FPTR failed: start:1032811 end:1032817 diff:6 ms (0.0 seconds) FREEPDB1(3):[176] Successfully onlined Undo Tablespace 2. 2023-06-01T09:54:23.900764+00:00 FREEPDB1(3):SUPLOG: Set PDB SUPLOG SGA at PDB OPEN, old 0x18, new 0x0 (no suplog) 2023-06-01T09:54:24.551818+00:00 FREEPDB1(3):Opening pdb with Resource Manager plan: DEFAULT_PLAN Completed: Pluggable database FREEPDB1 opened read write Completed: ALTER DATABASE OPEN 2023-06-01T09:54:26.460055+00:00 FREEPDB1(3):TABLE AUDSYS.AUD$UNIFIED: ADDED INTERVAL PARTITION SYS_P411 (3258) VALUES LESS THAN (TIMESTAMP' 2023-06-02 00:00:00') 2023-06-01T09:54:27.177161+00:00 =========================================================== Dumping current patch information =========================================================== No patches have been applied =========================================================== 2023-06-01T09:54:27.680913+00:00 FREEPDB1(3):Resize operation completed for file# 13, fname /opt/oracle/oradata/FREE/FREEPDB1/sysaux01.dbf, old size 317440K, new size 337920K
Podman Port
Use podman port <conainer name> to determine port mapping for the database listener.
rekins@rekins--MacBookPro15 ~ % podman port oracle23c 1521/tcp -> 0.0.0.0:1521
Connect to 23c Database
Now let’s connect to the Database using sqlcl and check the container name, database version and pluggable database names.
rekins@rekins--MacBookPro15 ~ % sql sys/Welcome1@//localhost:1521/FREE as sysdba SQLcl: Release 21.3 Production on Thu Jun 01 10:58:10 2023 Copyright (c) 1982, 2023, Oracle. All rights reserved. Connected to: Oracle Database 23c Free, Release 23.0.0.0.0 - Developer-Release Version 23.2.0.0.0 SQL> select instance_name, con_id, version from v$instance; INSTANCE_NAME CON_ID VERSION ________________ _________ _____________ FREE 0 23.0.0.0.0 SQL> select dbid, con_id, name from v$pdbs; DBID CON_ID NAME _____________ _________ ___________ 871956951 2 PDB$SEED 1511376183 3 FREEPDB1 SQL> select sysdate; SYSDATE ____________ 1-JUN-23
Stop Oracle 23c Database
To stop the Oracle Database 23c Free container use podman stop.
rekins@rekins--MacBookPro15 ~ % podman stop oracle23c oracle23c rekins@rekins--MacBookPro15 ~ % podman ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
Remove Oracle Database 23c
And to remove the Oracle Database 23c Free container use podman rm.
rekins@rekins--MacBookPro15 ~ % podman rm
Remove Oracle Database 23c Container Image
If you no longer require the container image, simply remove it with podman image rm container-registry.oracle.com/database/free
rekins@rekins--MacBookPro15 ~ % podman image rm container-registry.oracle.com/database/free Untagged: container-registry.oracle.com/database/free:latest Deleted: 7c64410c08d5afc711a9da0cc7cfa6e4e66bc7ec4456c3ba5867823c8e40ef57
Summary
In this short post I have shared how we can pull the Oracle Database 23c Free Developer Release from the Oracle Container Registry, start, connect, shutdown and remove an Oracle 23c database using podman on a Mac.