DEV Community

Valentin ROBU
Valentin ROBU

Posted on • Edited on

Run Oracle Database 19c (19.19) on Raspberry Pi 5

Oracle Corp. has released some time ago an installation kit of Oracle 19c (version 19.19) that supports ARM-based devices. This package can be successfully used to install the database on a Raspberry Pi 5.

Currently, Oracle Linux (both version 8 and 9) is not installable on the Raspberry Pi 5. However, future releases of Oracle Linux are expected to address this limitation.

I tried on RPI4 couple of years ago and failed to find a solution then after some long investigations I gave up once I found that it is a problem of CPU — not yet prepared for Oracle Db code.

The idea of running a functional database on the Raspberry Pi has always stayed with me. Therefore, after reading on several blogs that the Raspberry Pi 5 features an improved processor, I decided it was worth attempting the setup once again. I bought an RPI5 - 16GB version, although even the smaller version (8GB) should be fine.

Since Oracle Linux 8 and 9 cannot be reliably installed on ARM — failing with an error on first reboot — I opted for AlmaLinux 8.10, which is fully compatible with the Raspberry Pi 5’s CPU architecture.

NOTE: This tutorial is intended for test environments only, as the complete stack is not officially certified. It should be treated as experimental, though it provides a solid foundation. In the future, once Oracle releases a fully compatible version of Oracle Linux (OL) for the Raspberry Pi 5, you may consider transitioning to a production setup. However, be aware that Oracle does not certify its database for use on Raspberry Pi hardware.

You can check if yours RPI5 hardware is capable to run an Oracle database executing lscpu command. A complete output on my RPI5 SoC is listed below.


#############
###  RPI5 ###
#############

[root@rpi5 ~]# lscpu
Architecture:        aarch64
Byte Order:          Little Endian
CPU(s):              4
On-line CPU(s) list: 0-3
Thread(s) per core:  1
Core(s) per cluster: 4
Socket(s):           -
Cluster(s):          1
NUMA node(s):        8
Vendor ID:           ARM
Model:               1
Model name:          Cortex-A76
Stepping:            r4p1
CPU max MHz:         2400.0000
CPU min MHz:         1500.0000
BogoMIPS:            108.00
L1d cache:           64K
L1i cache:           64K
L2 cache:            512K
L3 cache:            2048K
NUMA node0 CPU(s):   0-3
NUMA node1 CPU(s):   
NUMA node2 CPU(s):   
NUMA node3 CPU(s):   
NUMA node4 CPU(s):   
NUMA node5 CPU(s):   
NUMA node6 CPU(s):   
NUMA node7 CPU(s):   
Flags:               fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp

Enter fullscreen mode Exit fullscreen mode

Same command executed on an RPI4:


#############
###  RPI4 ###
#############

root@rpi:~# lscpu
Architecture:             aarch64
  CPU op-mode(s):         32-bit, 64-bit
  Byte Order:             Little Endian
CPU(s):                   4
  On-line CPU(s) list:    0-3
Vendor ID:                ARM
  Model name:             Cortex-A72
    Model:                3
    Thread(s) per core:   1
    Core(s) per cluster:  4
    Socket(s):            -
    Cluster(s):           1
    Stepping:             r0p3
    CPU(s) scaling MHz:   40%
    CPU max MHz:          1500.0000
    CPU min MHz:          600.0000
    BogoMIPS:             108.00
    Flags:                fp asimd evtstrm crc32 cpuid
Caches (sum of all):      
  L1d:                    128 KiB (4 instances)
  L1i:                    192 KiB (4 instances)
  L2:                     1 MiB (1 instance)
NUMA:                     
  NUMA node(s):           2
  NUMA node0 CPU(s):      0-3
  NUMA node1 CPU(s):      0-3
Vulnerabilities:          
  Gather data sampling:   Not affected
  Itlb multihit:          Not affected
  L1tf:                   Not affected
  Mds:                    Not affected
  Meltdown:               Not affected
  Mmio stale data:        Not affected
  Reg file data sampling: Not affected
  Retbleed:               Not affected
  Spec rstack overflow:   Not affected
  Spec store bypass:      Vulnerable
  Spectre v1:             Mitigation; __user pointer sanitization
  Spectre v2:             Vulnerable
  Srbds:                  Not affected
  Tsx async abort:        Not affected

Enter fullscreen mode Exit fullscreen mode

NOTE: Due to architectural limitations, the ARM CPU used in earlier Raspberry Pi models (such as the Raspberry Pi 4) does not support database creation, even though the Oracle 19.19 version can still be installed as an ORACLE_HOME. Such a setup is suitable if you need an Oracle client on a Raspberry Pi 4, but database creation and listener startup will result in errors.

1. Prolegomena

As already mentioned, there is no available version of Oracle Linux 8 or 9 for Raspberry Pi 5. As a consequence, I used a closely related distribution — AlmaLinux, which is derived from Red Hat.

Oracle Corp. mentions within installation manuals the prerequisites required for an 19c database. Complete details are to be found here: https://docs.oracle.com/en/database/oracle/oracle-database/19/ladbi/operating-system-checklist-for-oracle-database-installation-on-linux.html

However, since we cant use yet an Oracle Linux, AlmaLinux is a viable (though not “certified”) alternative.

Bear in mind that Oracle Database requires space for two kinds of “storage”:

  • ORACLE_HOME — approx. 6 GB of free space at minimum
  • Database files — depends on user data to populate the database, minimum is about 4 GB.

For OS we also need space to install it along with swapfile. As Oracle DB requires (imposes in fact) a minimum swapfile of 16GB it is obvious that OS ISO cannot be burned on a 16 GB SD card. Even 32 GB is small (at limit), hence I recommend you get an 64 GB SD card at least.

For my tests, I used for Oracle files (ORACLE HOME files and DB file) an external SSD connected on USB.

Complete hardware list as per my testing case is:

  • Raspberry Pi 5
  • An 256 GB SD card
  • An 128 GB SSD device mounted and made available once OS was installed, to store Oracle related files
  • A Raspberry Pi 5 aluminum heatsink case with dual fans (https://www.waveshare.com/pi5-case-c.htm)

My hardware looks as below:

RPI5 fully equiped

2. Download AlmaLinux 8.10 ISO for ARM

Navigate to version 8.10 (latest available for now) version of AlmaLinux certified with RPI5: https://repo.almalinux.org/rpi/images/

Image description

Chose latest ISO available. I used GNOME version, aka https://repo.almalinux.org/rpi/images/AlmaLinux-8-RaspberryPi-GNOME-latest.aarch64.raw.xz

Download it locally on your desktop/laptop.

3. Burn AlmaLinux OS on a SD card

For burning the ISO on SR card I used Raspberry Pi Imager (for macOS, isntall the version for your OS (https://downloads.raspberrypi.org/imager/imager_latest.dmg)

For Raspberry Pi Device chose RPI5, chose also storage (SD card). For operating system, select ALmaLinux ISO file downloaded previously.

Image description

Image description

The main advantage of the Raspberry Pi Imager is that it allows you to customize the operating system installation right from the start — including settings such as username, password, hostname, SSH keys, and more. If you’ve previously noted the MAC address of your Raspberry Pi 5, you can assign a static IP address to it through your router’s interface. In this case, you won’t even need a monitor for the initial setup of AlmaLinux on the Raspberry Pi 5.

Image description

Image description

Alternatively, you can use BalenaEtcher — slightly less polished in appearance, but still fully functional (https://etcher.balena.io/#download-etcher).

4. Insert the SD card into the RPI5 and wake up the beast

It will take a while since RPI5 power on until you can connect with ssh. I usually open a ssh terminal and pinged until I got response from RPI5 (I also know IP address which wil be allocated by router).

Image description

Once RPI5 starts to reply, connect with ssh client (tabby in my case) to RPI5 using either password or the SSH key entered while OS was burned from ISO.

Image description

6. Initial configuration

NOTE: during this tutorial, hash (#) sign means the command is executed as root, while dollar sign ($) means a regular indicated user (oracle in most cases).

6.1 Enable RPI fans (if exists)

Since I have a heatsink case with dual fans, I want to activate them since AlmaLinux does not do this automatically.

Connect as your OS defined user then sudo to root. Edit (create if does not exist) file /boot/config.txt adding below content:

dtparam=fan_temp0=35000
dtparam=fan_temp0_hyst=5000
dtparam=fan_temp0_speed=175
Enter fullscreen mode Exit fullscreen mode

6.2 Reboot RPI5

Once rebooted, check if fans are spinning !

  • 6.3 Set hostname
# hostnamectl set-hostname rpi5
Enter fullscreen mode Exit fullscreen mode

6.4 Adjust (if the case) hosts file

My RPI5 /etc/hosts contains the following (automatically configured):

# The following lines are desirable for IPv4 capable hosts
127.0.0.1 192.168.5.5 rpi5
127.0.0.1 localhost.localdomain localhost
127.0.0.1 localhost4.localdomain4 localhost4

# The following lines are desirable for IPv6 capable hosts
::1 192.168.5.5 rpi5
::1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
Enter fullscreen mode Exit fullscreen mode

Pay attention to message in /etc/hosts:

# Your system has configured 'manage_etc_hosts' as True.
# As a result, if you wish for changes to this file to
# persist then you will need to either
# a.) make changes to the master file in
# /etc/cloud/templates/hosts.redhat.tmpl
# b.) change or remove the value of 'manage_etc_hosts' in
# /etc/cloud/cloud.cfg or cloud-config from user-data
#
Enter fullscreen mode Exit fullscreen mode

In case you intend to change the file, do it as recommended!

6.5 Disable SELinux

Edit /etc/selinux/config file, changing:

SELINUX=enforcing
Enter fullscreen mode Exit fullscreen mode

to

SELINUX=disabled
Enter fullscreen mode Exit fullscreen mode

6.6 Secure RPI5

Edit ssh daemon config file adding/changind values of below parameters as indicated:

# vi /etc/ssh/sshd_config

PermitRootLogin no
PermitEmptyPasswords no
PasswordAuthentication no
UsePAM no
UseDNS no
Enter fullscreen mode Exit fullscreen mode

Optional, you can disable ssh connections as oracle user (avoid hacking attempts is RPI5 will be visible in internet), adding to same file the lines:

DenyUsers oracle
AllowUsers <your_os_user>
Enter fullscreen mode Exit fullscreen mode

Restart SSH daemon:

# systemctl restart sshd
Enter fullscreen mode Exit fullscreen mode

6.7 Update AlmaLinux OS on RPI5

As root:

# dnf update -y
# dnf upgrade -y
# dnf group install -y "Server with GUI"
Enter fullscreen mode Exit fullscreen mode

6.8 Configure TigerVNC for RPI5

This step is optional. If you don’t need/want a GUI then you can pass over. However, if you want to perform Oracle software installation in graphical mode you either need a keyboard, a mouse and a monitor or TigerVNC (or other VNC solution).

As root:

# dnf install -y tigervnc-server tigervnc-server-module
Enter fullscreen mode Exit fullscreen mode

As your OS user:

$ vncpasswd
Enter fullscreen mode Exit fullscreen mode

Add entries for your OS user and oracle user (will create oracle OS user a bit later):

# vi /etc/tigervnc/vncserver.users


:1=oracle
:2=<your_os_user>
Enter fullscreen mode Exit fullscreen mode

As root, validate if vncserver for your_os_user works:

# systemctl enable -now vncserver@:2
# systemctl start vncserver@:2
# systemctl status vncserver@:2
Enter fullscreen mode Exit fullscreen mode

NOTE: VNC for oracle user cannot be started yet as the user does not exist. You can enable and start it once oracle user was created.

6.9 Disable firewall or add rules for TigerVNC in firewall

I chose to disable firewall completely.

# systemctl stop firewalld
# systemctl disable firewalld
Enter fullscreen mode Exit fullscreen mode

6.10 Adjust sudoers

Add oracle user in sudoers:

# visudo


oracle ALL=(ALL) NOPASSWD: ALL
Enter fullscreen mode Exit fullscreen mode

7. Configure oracle user (owner of database)

First, let's configure oracle repository.

# dnf install dnf-utils -y
# wget https://yum.oracle.com/RPM-GPG-KEY-oracle-ol8 -O /etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
# gpg - import - import-options show-only /etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
Enter fullscreen mode Exit fullscreen mode

Create a repository file with below content:

# cd /etc/yum.repos.d/
# vi ol8.repo


[ol8_baseos_latest]
name=Oracle Linux 8 BaseOS Latest ($basearch)
baseurl=https://yum.oracle.com/repo/OracleLinux/OL8/baseos/latest/$basearch/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
gpgcheck=1
enabled=1
Enter fullscreen mode Exit fullscreen mode

Install new repository:

# dnf install oraclelinux-release-el8 -y
# dnf install oracle-database-preinstall-19c -y
Enter fullscreen mode Exit fullscreen mode

NOTE: last command above creates the oracle OS user and installs the required packages plus adjusts the kernel paraemters required by oracle database.

Change oracle OS user’s password and VNC password:

# passwd oracle
# su - oracle
$ vncpasswd
Enter fullscreen mode Exit fullscreen mode

Validate oracle OS user, you should get an output similar to the below one:

# id oracle

[root@rpi5 yum.repos.d]# id oracle
uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),54322(dba),54323(oper),54324(backupdba),54325(dgdba),54326(kmdba),54330(racdba)
Enter fullscreen mode Exit fullscreen mode

Enable and start TigerVNC for oracle user:

# systemctl enable - now vncserver@:1
# systemctl start vncserver@:1
# systemctl status vncserver@:1
Enter fullscreen mode Exit fullscreen mode

8. Create mandatory file /etc/oracle-release

Create oracle-release file with below content. This step is crucial, without this file installation will fail.

# vi /etc/oracle-release


Oracle Linux Server release 8.10
Enter fullscreen mode Exit fullscreen mode

Create directory on which will mount later additional storage:

# sudo mkdir /oracle
# chown -R oracle.oinstall /oracle
Enter fullscreen mode Exit fullscreen mode

9. Install EPEL and additional packages

This step is optional. However, very helpful to have option to rerun command from history very handy, using rlwrap. Install also nmon (performance monitoring) and other packages useful for troubleshooting.

# dnf install epel-release -y
# dnf install screen telnet rlwrap nmon mc -y
Enter fullscreen mode Exit fullscreen mode

10. Create a larger swap file

Oracle Database installation requires a swap space of at least 16 GB. In the example below, I’ll create a swap file, but a dedicated swap partition is also acceptable — as long as it is 16 GB or larger.

I named this file swap (the name swapfile is already taken by default in AlmaLinux). If you want use same name like default swapfile then you execute below procedure twice and perform a reboot in between (create swap file, restart, create swapfile then restart again).

Be patient, this step will take a while …

# fallocate -l 16G /swap
# dd if=/dev/zero of=/swap bs=1G count=16
# chmod 600 /swap
# mkswap /swap
# swapon /swap
Enter fullscreen mode Exit fullscreen mode

Edit /etc/fstab file adding (or changing) as below:

/swap none swap defaults 0 0
Enter fullscreen mode Exit fullscreen mode

As root, reboot RPI5 then after restart, delete the old swapfile:

# reboot

...

# ls -al /swapfile
# rm -f swapfile
Enter fullscreen mode Exit fullscreen mode

Validate new swapping settings:

# swapon -v

[root@rpi5 ~]# swapon -v
NAME TYPE SIZE USED PRIO
/swap file 16G 0B -2
Enter fullscreen mode Exit fullscreen mode

11. Add additional space to RPI5 to store Oracle database and binaries

In my test I used an external SSD (128 GB size) which will be mounted on RPI5.

# fdisk -l
Enter fullscreen mode Exit fullscreen mode

Output (truncated):

Disk /dev/sda: 119.2 GiB, 128035676160 bytes, 250069680 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0x00000000
Device Boot Start End Sectors Size Id Type
/dev/sda1 2048 250069679 250067632 119.2G 83 Linux
Enter fullscreen mode Exit fullscreen mode

Device sda1 was already formatted as ext4. Adjust /etc/fstab and mount the new filesystem. First, get the UUID of the storage:

# ls -al /dev/disk/by-uuid/

[root@rpi5 ~]# ls -al /dev/disk/by-uuid/
total 0
drwxr-xr-x. 2 root root 100 May 9 21:26 .
drwxr-xr-x. 7 root root 140 May 9 21:26 ..
lrwxrwxrwx. 1 root root 10 May 9 21:57 7b9561e8–772d-4d2d-8024-dbb75378c3ad -> ../../sda1
lrwxrwxrwx. 1 root root 15 May 9 21:57 8985f0c5–9d60–440d-97a3–7c8638ae2c69 -> ../../mmcblk0p2
lrwxrwxrwx. 1 root root 15 May 9 21:57 89B6–0C82 -> ../../mmcblk0p1
Enter fullscreen mode Exit fullscreen mode

Edit once more /etc/fstab file. At the end will look like below:

UUID=8985f0c5-9d60-440d-97a3-7c8638ae2c69       /               ext4    defaults,noatime 0 0
UUID=89B6-0C82                                  /boot           vfat    defaults,noatime 0 0
/swap                                           none            swap    defaults         0 0
UUID=7b9561e8-772d-4d2d-8024-dbb75378c3ad       /oracle         ext4    defaults,noatime 0 0
Enter fullscreen mode Exit fullscreen mode

Put RPI in text mode (once installed VNC there’s no need to consume resource with Gnome interface).

# systemctl set-default multi-user.target
Enter fullscreen mode Exit fullscreen mode

Perform one more update of OS packages.

# dnf update -y
# dnf upgrade -y
Enter fullscreen mode Exit fullscreen mode

12. Reboot RPI5. Once restarted, validate the mount point for Oracle DB

[root@rpi5 ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root        29G   22G  7.5G  75% /
devtmpfs        7.8G     0  7.8G   0% /dev
tmpfs           7.9G     0  7.9G   0% /dev/shm
tmpfs           7.9G  9.2M  7.9G   1% /run
tmpfs           7.9G     0  7.9G   0% /sys/fs/cgroup
/dev/mmcblk0p1  477M  261M  217M  55% /boot
/dev/sda1       117G  8.0K  111G   1% /oracle
tmpfs           1.6G   16K  1.6G   1% /run/user/42
tmpfs           1.6G     0  1.6G   0% /run/user/0
Enter fullscreen mode Exit fullscreen mode

Validate swap as well:

# swapon -v

[root@rpi5 ~]# swapon -v
NAME  TYPE SIZE USED PRIO
/swap file  16G   0B   -2
Enter fullscreen mode Exit fullscreen mode

13. Create ORACLE_HOME directory

As root create directories:

# mkdir -p /oracle/u01/app/oracle/product/19.0.0/dbhome_1
# chown -R oracle.oinstall /oracle
Enter fullscreen mode Exit fullscreen mode

14. Prepare ORACLE_HOME installation

Download Oracle 19c KIT for RPI.

Navigate to: https://www.oracle.com/database/technologies/oracle19c-linux-arm64-downloads.html and download file LINUX.ARM64_1919000_db_home.zip

Copy installation kit to RPI5.

Once copied, validate file consistency using sha256sum. Correct value (if download and transfer was ok) as per Oracle site, is:

sha256sum - 44e9fa1b5ca84781bb496fe200b9bd648438819f053b4227b74e5622d959f125
Enter fullscreen mode Exit fullscreen mode

Unzip kit (once has been copied to /oracle) specifying destination directory (-d parameter):

# su - oracle
$ cd /oracle
$ unzip -d /oracle/u01/app/oracle/product/19.0.0/dbhome_1 LINUX.ARM64_1919000_db_home.zip
Enter fullscreen mode Exit fullscreen mode
  1. Adjust oracle’s user .bash_profile file adding required variables

Add below lines into oracle’s user .bash_profile:

ORA_VERSION=19.0.0
ORACLE_BASE=/oracle/u01/app/oracle
ORACLE_HOME=${ORACLE_BASE}/product/${ORA_VERSION}/dbhome_1
ORACLE_SID=ora193c
TNS_ADMIN=${ORACLE_BASE}/product/${ORA_VERSION}/dbhome_1/network/admin
LD_LIBRARY_PATH=${ORACLE_HOME}/lib
echo "ORACLE_SID=$ORACLE_SID : RDBMS_19.3.0.0 LINUX"
db_name=$(/bin/cat \
        ${ORACLE_HOME}/dbs/init${ORACLE_SID}.ora|
        /bin/grep db_name|/bin/grep -v ^#\
        |/bin/sed 's/=/ /g'|/bin/awk -F\' '{ printf("%s",tolower( $2)); }')
alias udump='cd /oracle/u01/app/oracle/diag/rdbms/$db_name/$ORACLE_SID/trace'
alias bdump='cd /oracle/u01/app/oracle/diag/rdbms/$db_name/$ORACLE_SID/trace'
alias cdump='cd /oracle/u01/app/oracle/diag/rdbms/$db_name/$ORACLE_SID/cdump'
alias alert='tail -100f /oracle/u01/app/oracle/diag/rdbms/$db_name/$ORACLE_SID/trace/alert_$ORACLE_SID.log'

export ORACLE_HOME LD_LIBRARY_PATH ORACLE_SID TMPDIR PATH TNS_ADMIN
export PATH=$PATH:$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:.

alias sql='rlwrap ${ORACLE_HOME}/bin/sqlplus "/ as sysdba"'
alias rmn='rlwrap ${ORACLE_HOME}/bin/rman " target /"'
alias OH='cd $ORACLE_HOME'
alias tnsalias="cat $ORACLE_HOME/network/admin/tnsnames.ora |grep WORLD|awk  '{ print \$1 }'"
cd $ORACLE_HOME
Enter fullscreen mode Exit fullscreen mode

16. Install Software (ORACLE_HOME)

In this tutorial I chose installation using GUI, hence connect to RPI5 using Tiger VNC client and open a terminal session.

As oracle user (either reconnect or source environment in order to read the cahnged .bash_profile) and run installer script from ORACLE_HOME:

$ su - oracle
$ cd $ORACLE_HOME
$ ./runInstaller
Enter fullscreen mode Exit fullscreen mode

Chose a software only installation at step 1, single instance installation at step 2, Enterrpise Edition at step 3, etc.

Be aware to execute as root, at final stage of installation the required scripts:

Image description

17. Create the database

As oracle user, run database configuration assistant to create the database. I named my database ora193c and set as data directory to /oracle/u02/oradata. Database will be of type CDB (container) with a pluggable database pdba193.

$ cd $ORACLE_HOME
$ dbca
Enter fullscreen mode Exit fullscreen mode

See below captions of screens used during database creation:

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description

18. Validate installation

Once installation is finished, check status of database and listener service.

Validate listener status:

# su - oracle
$ lsnrctl status


[oracle@rpi5 dbhome_1]$ lsnrctl status
LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 10-MAY-2025 22:06:58
Copyright © 1991, 2023, Oracle. All rights reserved.
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
 - - - - - - - - - - - - 
Alias LISTENER
Version TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Start Date 10-MAY-2025 21:40:20
Uptime 0 days 0 hr. 26 min. 38 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Log File /oracle/u01/app/oracle/diag/tnslsnr/rpi5/listener/alert/log.xml
Listening Endpoints Summary…
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.5.5)(PORT=1521)))
Services Summary…
Service "34cdbbcca80e1ba9e065000000000001" has 1 instance(s).
Instance "ora193c", status READY, has 1 handler(s) for this service…
Service "fda797ffd7307dfde053bc2a4664b2b0" has 1 instance(s).
Instance "ora193c", status READY, has 1 handler(s) for this service…
Service "ora193c" has 1 instance(s).
Instance "ora193c", status READY, has 1 handler(s) for this service…
Service "ora193cXDB" has 1 instance(s).
Instance "ora193c", status READY, has 1 handler(s) for this service…
Service "pdba193" has 1 instance(s).
Instance "ora193c", status READY, has 1 handler(s) for this service…
The command completed successfully
Enter fullscreen mode Exit fullscreen mode

Validate database status using sqlplus (or sql alias created within .bash_profile):

# su - oracle
$ sqlplus / as sysdba
SQL> select open_mode, database_role from v$database;
[oracle@rpi5 dbhome_1]$ sql
SQL*Plus: Release 19.0.0.0.0 - Production on Sun May 11 09:55:24 2025
Version 19.19.0.0.0
Copyright © 1982, 2023, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.19.0.0.0
SQL> select open_mode, database_role from v$database;
OPEN_MODE DATABASE_ROLE
 - - - - - - - - - - - - - - - - - - 
READ WRITE PRIMARY
Enter fullscreen mode Exit fullscreen mode

Validate /etc/oratab file. If you want the database to be started automatically (along with a properly configured script) on PRI start/reboot, change last parameter to value “Y”.

$ cat /etc/oratab


[oracle@rpi5 dbhome_1]$ cat /etc/oratab
#
# This file is used by ORACLE utilities. It is created by root.sh
# and updated by either Database Configuration Assistant while creating
# a database or ASM Configuration Assistant while creating ASM instance.
# A colon, ':', is used as the field terminator. A new line terminates
# the entry. Lines beginning with a pound sign, '#', are comments.
#
# Entries are of the form:
# $ORACLE_SID:$ORACLE_HOME:<N|Y>:
#
# The first and second fields are the system identifier and home
# directory of the database respectively. The third field indicates
# to the dbstart utility that the database should , "Y", or should not,
# "N", be brought up at system boot time.
#
# Multiple entries with the same $ORACLE_SID are not allowed.
#
#
ora193c:/oracle/u01/app/oracle/product/19.0.0/dbhome_1:N

Enter fullscreen mode Exit fullscreen mode

Validate remote connection, in this case I’ll connect from my machine.

my-mac:~ myuser$ sqlcl/bin/sql /nolog
SQLcl: Release 23.1 Production on Sun May 11 10:03:47 2025
Copyright © 1982, 2025, Oracle. All rights reserved.
SQL> conn system/sys@rpi5:1521/ora193c
Connected.
SQL> exit
Enter fullscreen mode Exit fullscreen mode

All validation are done, RPI5 and ora193c database are up and running, ready to be used.

Have fun !

Top comments (0)