Run Oracle Database 23c Free Developer Release with Podman

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.

Leave a Reply

Create a website or blog at WordPress.com

Up ↑

Discover more from Ron Ekins' - Oracle Technology, DevOps and Kubernetes Blog

Subscribe now to keep reading and get access to the full archive.

Continue reading