Oracle 23ai on ARM [ Release 23.0.0.0.0 - Develop, Learn, and Run for Free ]
{ Abhilash Kumar Bhattaram : Follow on LinkedIn } Oracle 23ai - the FREE edition As of date Oracle 23ai is not yet released for On Prem , however the FREE edition is available and is perfect for POC's and testing purposes. If you are looking at nudgning your applications to 23ai , this would a good place to start , especially if you are looking to make best use of ARM processors which is probably a good place to start to develop and power AI powered databases. Where do we start ? If you have Oracle VirtualBox , this is a good starting point. To understand more about ARM , read by older blog here Pre-requisites The Free tier installs will install the Oracle 23ai in /opt/oracle, ensure sufficient space is available , I suggest to create a 50GB mount point so you have enough space to play around when a new database is created. [root@machine1 ~]# df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 7.2G 0 7.2G 0% /dev tmpfs 7.3G 0 7.3G 0% /dev/shm tmpfs 7.3G 9.1M 7.3G 1% /run tmpfs 7.3G 0 7.3G 0% /sys/fs/cgroup /dev/mapper/ol-root 19G 12G 7.2G 62% / /dev/mapper/ol-u01 431G 17G 414G 4% /u01 /dev/sda2 1.8G 633M 1.2G 36% /boot /dev/sda1 1.9G 7.2M 1.9G 1% /boot/efi tmpfs 1.5G 16K 1.5G 1% /run/user/42 tmpfs 1.5G 4.0K 1.5G 1% /run/user/0 /dev/mapper/optoracle-optoracle_lv 47G 24K 45G 1% /opt/oracle.
![Oracle 23ai on ARM [ Release 23.0.0.0.0 - Develop, Learn, and Run for Free ]](https://media2.dev.to/dynamic/image/width%3D1000,height%3D500,fit%3Dcover,gravity%3Dauto,format%3Dauto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fusxsb9j32kk2td3uvt5s.png)
{ Abhilash Kumar Bhattaram : Follow on LinkedIn }
Oracle 23ai - the FREE edition
As of date Oracle 23ai is not yet released for On Prem , however the FREE edition is available and is perfect for POC's and testing purposes. If you are looking at nudgning your applications to 23ai , this would a good place to start , especially if you are looking to make best use of ARM processors which is probably a good place to start to develop and power AI powered databases.
Where do we start ?
If you have Oracle VirtualBox , this is a good starting point. To understand more about ARM , read by older blog here
Pre-requisites
The Free tier installs will install the Oracle 23ai in /opt/oracle, ensure sufficient space is available , I suggest to create a 50GB mount point so you have enough space to play around when a new database is created.
[root@machine1 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 7.2G 0 7.2G 0% /dev
tmpfs 7.3G 0 7.3G 0% /dev/shm
tmpfs 7.3G 9.1M 7.3G 1% /run
tmpfs 7.3G 0 7.3G 0% /sys/fs/cgroup
/dev/mapper/ol-root 19G 12G 7.2G 62% /
/dev/mapper/ol-u01 431G 17G 414G 4% /u01
/dev/sda2 1.8G 633M 1.2G 36% /boot
/dev/sda1 1.9G 7.2M 1.9G 1% /boot/efi
tmpfs 1.5G 16K 1.5G 1% /run/user/42
tmpfs 1.5G 4.0K 1.5G 1% /run/user/0
/dev/mapper/optoracle-optoracle_lv 47G 24K 45G 1% /opt/oracle. <<<<<-- Ensure sufficient space in /opt/oracle
RPM Downloads
The Free RPM downloads can be downloaded here
[root@machine1 oracle]# ls -ltrh *.rpm
-rw-r--r--. 1 oracle oinstall 31K Apr 26 15:52 oracle-database-preinstall-23ai-1.0-4.el8.aarch64.rpm
-rw-r--r--. 1 oracle oinstall 1.2G Apr 26 16:13 oracle-database-free-23ai-1.0-1.el8.aarch64.rpm
Install methods
Installation is straight forward with dnf installs
[root@machine1 oracle]# dnf -y install oracle-database-preinstall-23ai-1.0-4.el8.aarch64.rpm
Oracle Linux 8 BaseOS Latest (aarch64) 55 kB/s | 4.3 kB 00:00
Oracle Linux 8 BaseOS Latest (aarch64) 21 MB/s | 131 MB 00:06
Oracle Linux 8 Application Stream (aarch64) 171 kB/s | 4.5 kB 00:00
Oracle Linux 8 Application Stream (aarch64) 21 MB/s | 62 MB 00:02
Oracle Linux 8 CodeReady Builder (aarch64) - Unsupported 91 kB/s | 3.8 kB 00:00
Oracle Linux 8 CodeReady Builder (aarch64) - Unsupported 2.3 MB/s | 9.5 MB 00:04
Oracle Linux 8 Distro Builder (aarch64) - Unsupported 160 kB/s | 3.8 kB 00:00
Oracle Linux 8.2 BaseOS (aarch64) 187 kB/s | 4.2 kB 00:00
Oracle Linux 8.3 BaseOS (aarch64) 181 kB/s | 4.2 kB 00:00
Oracle Linux 8.4 BaseOS (aarch64) 181 kB/s | 4.2 kB 00:00
Oracle Linux 8.5 BaseOS (aarch64) 169 kB/s | 4.2 kB 00:00
Oracle Linux 8.6 BaseOS (aarch64) 187 kB/s | 4.2 kB 00:00
Oracle Linux 8.7 BaseOS (aarch64) 193 kB/s | 4.2 kB 00:00
Oracle Linux 8.8 BaseOS (aarch64) 200 kB/s | 4.2 kB 00:00
Oracle Linux 8.9 BaseOS (aarch64) 110 kB/s | 4.2 kB 00:00
Oracle Linux 8.10 BaseOS (aarch64) 190 kB/s | 4.2 kB 00:00
Oracle Linux 8 Addons (aarch64) 81 kB/s | 3.5 kB 00:00
Oracle Linux 8 Addons (aarch64) 18 MB/s | 31 MB 00:01
Oracle Linux 8 Update 4 (aarch64) Security Validations 2.9 kB/s | 3.5 kB 00:01
Oracle Linux 8 Update 4 (aarch64) Security Validations 461 kB/s | 1.1 MB 00:02
Latest Unbreakable Enterprise Kernel Release 7 for Oracle Linux 8 (aarch64) 159 kB/s | 3.5 kB 00:00
Latest Unbreakable Enterprise Kernel Release 7 for Oracle Linux 8 (aarch64) 21 MB/s | 59 MB 00:02
Package oracle-database-preinstall-23ai-1.0-4.el8.aarch64 is already installed.
Dependencies resolved.
Nothing to do.
Complete!
[root@machine1 oracle]#
This will create a /etc/init.d./oracle-database-preinstall-19c-firstboot which we will not use for now.
[root@machine1 oracle]# ls -l /etc/init.d/
total 28
-rw-r--r--. 1 root root 1161 Mar 11 17:31 README
-rw-r--r--. 1 root root 18434 Aug 10 2022 functions
-rwx------. 1 root root 1303 Jun 13 2023 oracle-database-preinstall-19c-firstboot
We will now install the free tier as below
[root@machine1 oracle]# dnf -y install oracle-database-free-23ai-1.0-1.el8.aarch64.rpm
Last metadata expiration check: 0:22:58 ago on Sat 26 Apr 2025 05:08:19 PM IST.
Dependencies resolved.
==============================================================================================================================================================================================================================================================
Package Architecture Version Repository Size
==============================================================================================================================================================================================================================================================
Installing:
oracle-database-free-23ai aarch64 1.0-1 @commandline 1.2 G
Transaction Summary
==============================================================================================================================================================================================================================================================
Install 1 Package
Total size: 1.2 G
Installed size: 3.0 G
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Running scriptlet: oracle-database-free-23ai-1.0-1.aarch64 1/1
Installing : oracle-database-free-23ai-1.0-1.aarch64 1/1
Running scriptlet: oracle-database-free-23ai-1.0-1.aarch64 1/1
[INFO] Executing post installation scripts...
[INFO] Oracle home installed successfully and ready to be configured.
To configure Oracle Database Free, optionally modify the parameters in '/etc/sysconfig/oracle-free-23ai.conf' and then run '/etc/init.d/oracle-free-23ai configure' as root.
Verifying : oracle-database-free-23ai-1.0-1.aarch64 1/1
Installed:
oracle-database-free-23ai-1.0-1.aarch64
Complete!
[root@machine1 oracle]#
At this point a file called /etc/init.d/oracle-free-23ai is created , this will be used the configure the free tier database.
[root@machine1 oracle]# ls -l /etc/init.d/oracle-free-23ai
-r-xr-xr-x. 1 root root 20518 Feb 28 08:32 /etc/init.d/oracle-free-23ai
Configuring the FREE tier database
A simple command /etc/init.d/oracle-free-23ai configure is needed , Oracle recommends that your password should be at least 8 characters in length, contain at least 1 upper case character, 1 lower case character, and 1 digit [0-9].
[root@machine1 oracle]# /etc/init.d/oracle-free-23ai configure
Specify a password to be used for database accounts. Oracle recommends that the password entered should be at least 8 characters in length, contain at least 1 uppercase character, 1 lower case character and 1 digit [0-9]. Note that the same password will be used for SYS, SYSTEM and PDBADMIN accounts:
Confirm the password:
Configuring Oracle Listener.
Listener configuration succeeded.
Configuring Oracle Database FREE.
Enter SYS user password:
****************
Enter SYSTEM user password:
***************
Enter PDBADMIN User Password:
******************
Prepare for db operation
7% complete
Copying database files
29% complete
Creating and starting Oracle instance
30% complete
33% complete
36% complete
39% complete
43% complete
Completing Database Creation
47% complete
49% complete
50% complete
Creating Pluggable Databases
54% complete
71% complete
Executing Post Configuration Actions
93% complete
Running Custom Scripts
100% complete
Database creation complete. For details check the logfiles at:
/opt/oracle/cfgtoollogs/dbca/FREE.
Database Information:
Global Database Name:FREE
System Identifier(SID):FREE
Look at the log file "/opt/oracle/cfgtoollogs/dbca/FREE/FREE.log" for further details.
Connect to Oracle Database using one of the connect strings:
Pluggable database: machine1.nabhaas.com/FREEPDB1
Multitenant container database: machine1.nabhaas.com
[root@machine1 oracle]#
Now I see my 23ai is created
[root@machine1 oracle]# ps -ef|grep pmon
oracle 5563 1 0 17:38 ? 00:00:00 db_pmon_FREE
root 6007 2297 0 17:41 pts/0 00:00:00 grep --color=auto pmon
[root@machine1 oracle]# su - oracle
Peeping around on what my 23ai is about
The forst thing I would like to see what version is installed , it clearly self explanatory , It's Develop, Learn, and Run for Free
FREE> select banner from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 23ai Free Release 23.0.0.0.0 - Develop, Learn, and Run for Free
Elapsed: 00:00:00.00
FREE>
My basic database details
18:19:01 SQL> select instance_name, status, host_name, version, startup_time from gv$instance;
INSTANCE_NAME |STATUS |HOST_NAME |VERSION |STARTUP_TIME
----------------|---------------|----------------------------------------------------------------|-----------------|--------------------
FREE |OPEN |machine1.nabhaas.com |23.0.0.0.0 |26-APR-2025 17:38:50
18:19:01 SQL> select dbid, name, db_unique_name,flashback_on,force_logging,log_mode, open_mode, database_role, sysdate from gv$database;
DBID|NAME |DB_UNIQUE_NAME |FLASHBACK_ON |FORCE_LOGGING |LOG_MODE |OPEN_MODE |DATABASE_ROLE |SYSDATE
----------|---------|------------------------------|---------------|---------------|---------------|--------------------|--------------------|--------------------
1471524940|FREE |FREE |NO |NO |NOARCHIVELOG |READ WRITE |PRIMARY |26-APR-2025 18:19:01
Checking DIagnostic Details
18:19:01 SQL> show parameter control_management_pack_access
NAME |TYPE |VALUE
------------------------------------|-----------|------------------------------
control_management_pack_access |string |DIAGNOSTIC+TUNING
18:19:01 SQL> show parameter diag
NAME |TYPE |VALUE
------------------------------------|-----------|------------------------------
diagnostic_dest |string |/opt/oracle
diagnostics_control |string |IGNORE
18:19:01 SQL> show parameter background
NAME |TYPE |VALUE
------------------------------------|-----------|------------------------------
background_core_dump |string |partial
background_dump_dest |string |/opt/oracle/product/23ai/dbhom
| |eFree/rdbms/log
Checking Recovery related parameter details
18:19:01 SQL> show parameter reco
NAME |TYPE |VALUE
------------------------------------|-----------|------------------------------
allow_legacy_reco_protocol |boolean |TRUE
control_file_record_keep_time |integer |7
db_recovery_auto_rekey |string |ON
db_recovery_file_dest |string |
db_recovery_file_dest_size |big integer|0
db_unrecoverable_scn_tracking |boolean |TRUE
recovery_parallelism |integer |0
remote_recovery_file_dest |string |
transaction_recovery |string |ENABLED
18:19:01 SQL> set lines 200 pages 200
18:19:01 SQL> col db_link format a40
18:19:01 SQL> select inst_id,resource_name, current_utilization, max_utilization from gv$resource_limit where resource_name in ('processes','sessions');
INST_ID|RESOURCE_N|CURRENT_UTILIZATION|MAX_UTILIZATION
----------|----------|-------------------|---------------
1|processes | 71| 76
1|sessions | 90| 96
Now I am starting to see the new features , I see a new parameter called resource_manager_cpu_scope , it's only for Exadata Systems apparently , more documentation anout it is here
INST_ID|NAME |DEFAULT_VALUE |VALUE
-------|----------------------------------------|------------------------------|------------------------------
1|cpu_count |0 |2
1|cpu_min_count | |2
1|parallel_threads_per_cpu |1 |1
1|resource_manager_cpu_scope |INSTANCE_ONLY |INSTANCE_ONLY
1|resource_manager_cpu_allocation |0 |0
| | |------------------------------
There are several more things to play around in 23ai , this is the first of my many 23ai blogs. More to come. !!!