Your kernel parameters need modifying.
Edit /etc/sysctl.conf
and ensure the following lines are present:
kernel.shmall = 18350080
kernel.shmmax = 75161927680
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
Then reboot the machine.
So, with thanks to @YasirArsanukaev for the time he put in, I have found a solution which works, but which I can't really explain.
Riffing on the LOCAL_LISTENER
thought, I was reading this other answer where it said:
The database uses the LOCAL_LISTENER parameter to identify the listener it should register with. By default that is null, which according to the documentation is equivalent to hostname:1521.
So I tried to ping my own hostname and couldn't - it looks like some IPv6 problem, receiving a general failure message.
So I took the advice from that answer
SQL> alter system set LOCAL_LISTENER='(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))' scope=both;
SQL> alter system register;
and it now works, presumably because it can resolve the localhost reference, where it was failing the resolve the actual hostname.
Best Answer
How to Install Oracle Database 18c Express Edition on Oracle Cloud Free Tier (for life) | Centos 7
Credits : 1 2
STEP 1 - Download Oracle Required Software
oracle-database-preinstall-18c-1.0-1.el7.x86_64.rpm
oracle-database-xe-18c-1.0-1.x86_64.rpm
STEP 2 - Change RPM To Avoid Issue 1 :
( Issue 1 : This system has 971 MB of RAM and does not meet minimum requirements )
STEP 3 - Change Config File Before Database Configuration To Avoid Issue 2 :
( Issue 2 : sga_target 296M is too small )
STEP 4 - Run Database Configuration :
( This may take up to 30 mins )