The new version of the free Oracle Database edition, Oracle Database 18c Express Edition, just got released for Linux 64-bit. Getting started is really simple on Oracle Linux, basically a three step process of downloading the RPM file, installing it and then configuring the database. On other Red Hat compatible Linux distributions you will also have to download the Oracle Database Preinstall RPM alongside the XE RPM file. Here is a quick guide on how to setup Oracle Database 18c XE.
UPDATE: see here for how to install Oracle XE on Linux 8!
tl;dr
Oracle Linux
- Download the RPM file from Oracle Technology Network
- Run “
yum -y localinstall oracle-database*18c*
“ - Run “
/etc/init.d/oracle-xe-18c configure
“
Other Red Hat compatible Linux distribution
- Download the RPM file from Oracle Technology Network
- Download the Oracle Database Preinstall RPM via “
curl -O https://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/oracle-database-preinstall-18c-1.0-1.el7.x86_64.rpm
“ - Run “
yum -y localinstall oracle-database*18c*
“ - Run “
/etc/init.d/oracle-xe-18c configure
“
[youtube https://www.youtube.com/watch?v=XB1ZakqiTa8&w=560&h=315]
[youtube https://www.youtube.com/watch?v=fg2i0IEc1WU&w=560&h=315]
Downloading the RPM file
The download is straight forward as usual. Just head over to https://www.oracle.com/technetwork/database/database-technologies/express-edition/downloads/index.html, accept the license agreement after reading it, and download the RPM file.
Downloading the Oracle Database Preinstall RPM file
If you run on Oracle Linux, you can skip this step! The Oracle Database Preinstall RPM file will be pulled automatically by the yum
command.
Download the Oracle Database Preinstall RPM by executing:
1curl -o oracle-database-preinstall-18c-1.0-1.el7.x86_64.rpm https:
//yum
.oracle.com
/repo/OracleLinux/OL7/latest/x86_64/getPackage/oracle-database-preinstall-18c-1
.0-1.el7.x86_64.rpm
If you happen to be behind a firewall and need to specify a proxy, you can do so by running “
export https_proxy=[proxy_host]:[proxy_port]; export http_proxy=[proxy_host]:[proxy_port]
” beforehand, for example:
123export
https_proxy=proxy.example.com:80
export
http_proxy=proxy.example.com.80
curl -o oracle-database-preinstall-18c-1.0-1.el7.x86_64.rpm https:
//yum
.oracle.com
/repo/OracleLinux/OL7/latest/x86_64/getPackage/oracle-database-preinstall-18c-1
.0-1.el7.x86_64.rpm
Installing the RPM file
In order to install the RPM file(s) you will have to have
root
privileges. This means that you either have to have access to theroot
user or havesudo
permissions. To install the Oracle Database 18c XE binaries, execute:
1yum –y localinstall oracle-database*18c*
Note that the rpm file has to be in the working directory where you execute
yum
. Onceyum
is running, you will see a similar output to this:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140[root@localhost gerald]
# yum -y localinstall oracle-database-xe-18c-1.0-1.x86_64.rpm
Loaded plugins: langpacks, ulninfo
Examining oracle-database-xe-18c-1.0-1.x86_64.rpm: oracle-database-xe-18c-1.0-1.x86_64
Marking oracle-database-xe-18c-1.0-1.x86_64.rpm to be installed
Resolving Dependencies
--> Running transaction check
---> Package oracle-database-xe-18c.x86_64 0:1.0-1 will be installed
--> Processing Dependency: oracle-database-preinstall-18c
for
package: oracle-database-xe-18c-1.0-1.x86_64
ol7_UEKR4 | 1.2 kB 00:00:00
ol7_latest | 1.4 kB 00:00:00
(1
/4
): ol7_UEKR4
/x86_64/updateinfo
| 80 kB 00:00:00
(2
/4
): ol7_latest
/x86_64/updateinfo
| 568 kB 00:00:00
(3
/4
): ol7_UEKR4
/x86_64/primary
| 2.5 MB 00:00:00
(4
/4
): ol7_latest
/x86_64/primary
| 7.8 MB 00:00:01
ol7_UEKR4 110
/110
ol7_latest 8768
/8768
--> Running transaction check
---> Package oracle-database-preinstall-18c.x86_64 0:1.0-1.el7 will be installed
--> Processing Dependency: compat-libcap1
for
package: oracle-database-preinstall-18c-1.0-1.el7.x86_64
--> Processing Dependency: ksh
for
package: oracle-database-preinstall-18c-1.0-1.el7.x86_64
--> Processing Dependency: libaio-devel
for
package: oracle-database-preinstall-18c-1.0-1.el7.x86_64
--> Processing Dependency: glibc-devel
for
package: oracle-database-preinstall-18c-1.0-1.el7.x86_64
--> Processing Dependency: compat-libstdc++-33
for
package: oracle-database-preinstall-18c-1.0-1.el7.x86_64
--> Processing Dependency: libstdc++-devel
for
package: oracle-database-preinstall-18c-1.0-1.el7.x86_64
--> Running transaction check
---> Package compat-libcap1.x86_64 0:1.10-7.el7 will be installed
---> Package compat-libstdc++-33.x86_64 0:3.2.3-72.el7 will be installed
---> Package glibc-devel.x86_64 0:2.17-222.0.7.el7 will be installed
--> Processing Dependency: glibc-headers = 2.17-222.0.7.el7
for
package: glibc-devel-2.17-222.0.7.el7.x86_64
--> Processing Dependency: glibc = 2.17-222.0.7.el7
for
package: glibc-devel-2.17-222.0.7.el7.x86_64
--> Processing Dependency: glibc-headers
for
package: glibc-devel-2.17-222.0.7.el7.x86_64
---> Package ksh.x86_64 0:20120801-137.0.1.el7 will be installed
---> Package libaio-devel.x86_64 0:0.3.109-13.el7 will be installed
---> Package libstdc++-devel.x86_64 0:4.8.5-28.0.1.el7_5.1 will be installed
--> Running transaction check
---> Package glibc.x86_64 0:2.17-222.el7 will be updated
--> Processing Dependency: glibc = 2.17-222.el7
for
package: glibc-common-2.17-222.el7.x86_64
---> Package glibc.x86_64 0:2.17-222.0.7.el7 will be an update
---> Package glibc-headers.x86_64 0:2.17-222.0.7.el7 will be installed
--> Processing Dependency: kernel-headers >= 2.2.1
for
package: glibc-headers-2.17-222.0.7.el7.x86_64
--> Processing Dependency: kernel-headers
for
package: glibc-headers-2.17-222.0.7.el7.x86_64
--> Running transaction check
---> Package glibc-common.x86_64 0:2.17-222.el7 will be updated
---> Package glibc-common.x86_64 0:2.17-222.0.7.el7 will be an update
---> Package kernel-headers.x86_64 0:3.10.0-862.14.4.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
=====================================================================================================================================
Package Arch Version Repository Size
=====================================================================================================================================
Installing:
oracle-database-xe-18c x86_64 1.0-1
/oracle-database-xe-18c-1
.0-1.x86_64 5.2 G
Installing
for
dependencies:
compat-libcap1 x86_64 1.10-7.el7 ol7_latest 17 k
compat-libstdc++-33 x86_64 3.2.3-72.el7 ol7_latest 190 k
glibc-devel x86_64 2.17-222.0.7.el7 ol7_latest 1.1 M
glibc-headers x86_64 2.17-222.0.7.el7 ol7_latest 679 k
kernel-headers x86_64 3.10.0-862.14.4.el7 ol7_latest 7.1 M
ksh x86_64 20120801-137.0.1.el7 ol7_latest 881 k
libaio-devel x86_64 0.3.109-13.el7 ol7_latest 12 k
libstdc++-devel x86_64 4.8.5-28.0.1.el7_5.1 ol7_latest 1.5 M
oracle-database-preinstall-18c x86_64 1.0-1.el7 ol7_latest 18 k
Updating
for
dependencies:
glibc x86_64 2.17-222.0.7.el7 ol7_latest 3.6 M
glibc-common x86_64 2.17-222.0.7.el7 ol7_latest 11 M
Transaction Summary
=====================================================================================================================================
Install 1 Package (+9 Dependent packages)
Upgrade ( 2 Dependent packages)
Total size: 5.2 G
Total download size: 27 M
Downloading packages:
No Presto metadata available
for
ol7_latest
(1
/11
): compat-libcap1-1.10-7.el7.x86_64.rpm | 17 kB 00:00:00
(2
/11
): compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm | 190 kB 00:00:00
(3
/11
): glibc-2.17-222.0.7.el7.x86_64.rpm | 3.6 MB 00:00:01
(4
/11
): glibc-devel-2.17-222.0.7.el7.x86_64.rpm | 1.1 MB 00:00:00
(5
/11
): glibc-headers-2.17-222.0.7.el7.x86_64.rpm | 679 kB 00:00:00
(6
/11
): glibc-common-2.17-222.0.7.el7.x86_64.rpm | 11 MB 00:00:03
(7
/11
): ksh-20120801-137.0.1.el7.x86_64.rpm | 881 kB 00:00:00
(8
/11
): kernel-headers-3.10.0-862.14.4.el7.x86_64.rpm | 7.1 MB 00:00:01
(9
/11
): libaio-devel-0.3.109-13.el7.x86_64.rpm | 12 kB 00:00:00
(10
/11
): oracle-database-preinstall-18c-1.0-1.el7.x86_64.rpm | 18 kB 00:00:00
(11
/11
): libstdc++-devel-4.8.5-28.0.1.el7_5.1.x86_64.rpm | 1.5 MB 00:00:00
-------------------------------------------------------------------------------------------------------------------------------------
Total 6.1 MB
/s
| 27 MB 00:00:04
Running transaction check
Running transaction
test
Transaction
test
succeeded
Running transaction
Updating : glibc-common-2.17-222.0.7.el7.x86_64 1
/14
Updating : glibc-2.17-222.0.7.el7.x86_64 2
/14
Installing : compat-libcap1-1.10-7.el7.x86_64 3
/14
Installing : compat-libstdc++-33-3.2.3-72.el7.x86_64 4
/14
Installing : ksh-20120801-137.0.1.el7.x86_64 5
/14
Installing : libstdc++-devel-4.8.5-28.0.1.el7_5.1.x86_64 6
/14
Installing : libaio-devel-0.3.109-13.el7.x86_64 7
/14
Installing : kernel-headers-3.10.0-862.14.4.el7.x86_64 8
/14
Installing : glibc-headers-2.17-222.0.7.el7.x86_64 9
/14
Installing : glibc-devel-2.17-222.0.7.el7.x86_64 10
/14
Installing : oracle-database-preinstall-18c-1.0-1.el7.x86_64 11
/14
Installing : oracle-database-xe-18c-1.0-1.x86_64 12
/14
[INFO] Executing post installation scripts...
[INFO] Oracle home installed successfully and ready to be configured.
To configure Oracle Database XE, optionally modify the parameters
in
'/etc/sysconfig/oracle-xe-18c.conf'
and
then
execute
'/etc/init.d/oracle-xe-18c configure'
as root.
Cleanup : glibc-common-2.17-222.el7.x86_64 13
/14
Cleanup : glibc-2.17-222.el7.x86_64 14
/14
Verifying : glibc-2.17-222.0.7.el7.x86_64 1
/14
Verifying : kernel-headers-3.10.0-862.14.4.el7.x86_64 2
/14
Verifying : glibc-common-2.17-222.0.7.el7.x86_64 3
/14
Verifying : oracle-database-preinstall-18c-1.0-1.el7.x86_64 4
/14
Verifying : glibc-headers-2.17-222.0.7.el7.x86_64 5
/14
Verifying : compat-libcap1-1.10-7.el7.x86_64 6
/14
Verifying : compat-libstdc++-33-3.2.3-72.el7.x86_64 7
/14
Verifying : glibc-devel-2.17-222.0.7.el7.x86_64 8
/14
Verifying : libaio-devel-0.3.109-13.el7.x86_64 9
/14
Verifying : libstdc++-devel-4.8.5-28.0.1.el7_5.1.x86_64 10
/14
Verifying : oracle-database-xe-18c-1.0-1.x86_64 11
/14
Verifying : ksh-20120801-137.0.1.el7.x86_64 12
/14
Verifying : glibc-common-2.17-222.el7.x86_64 13
/14
Verifying : glibc-2.17-222.el7.x86_64 14
/14
Installed:
oracle-database-xe-18c.x86_64 0:1.0-1
Dependency Installed:
compat-libcap1.x86_64 0:1.10-7.el7 compat-libstdc++-33.x86_64 0:3.2.3-72.el7
glibc-devel.x86_64 0:2.17-222.0.7.el7 glibc-headers.x86_64 0:2.17-222.0.7.el7
kernel-headers.x86_64 0:3.10.0-862.14.4.el7 ksh.x86_64 0:20120801-137.0.1.el7
libaio-devel.x86_64 0:0.3.109-13.el7 libstdc++-devel.x86_64 0:4.8.5-28.0.1.el7_5.1
oracle-database-preinstall-18c.x86_64 0:1.0-1.el7
Dependency Updated:
glibc.x86_64 0:2.17-222.0.7.el7 glibc-common.x86_64 0:2.17-222.0.7.el7
Complete!
Once
yum
executed successfully, the Oracle Database 18c Express Edition binaries are installed. Next and last step is to configure the database itself.Configuring the database
To configure the XE database you need to run
/etc/init.d/oracle-xe-18c configure
, once again, as eitherroot
or withroot
privileges.
123456[root@localhost gerald]
# /etc/init.d/oracle-xe-18c 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:
Type in and confirm the password for the administrative accounts,
SYS
,SYSTEM
andPDBADMIN
, and hit Enter.
123456789101112131415161718192021222324252627282930313233343536373839404142Configuring Oracle Listener.
Listener configuration succeeded.
Configuring Oracle Database XE.
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
31% complete
34% complete
38% complete
41% complete
43% complete
Completing Database Creation
47% 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/XE
.
Database Information:
Global Database Name:XE
System Identifier(SID):XE
Look at the log
file
"/opt/oracle/cfgtoollogs/dbca/XE/XE.log"
for
further details.
Connect to Oracle Database using one of the connect
strings
:
Pluggable database: localhost.localdomain
/XEPDB1
Multitenant container database: localhost.localdomain
Use https:
//localhost
:5500
/em
to access Oracle Enterprise Manager
for
Oracle Database XE
[root@localhost gerald]
#
After the command has finished, the Oracle Database 18c XE is fully configured and ready to use.
Connecting to Oracle Database 18c XE
To fire up the SQL prompt for your user, you will have to make sure that
$ORACLE_HOME
is set and$ORACLE_HOME/bin
in your$PATH
. There is a utility script calledoraenv
, that will configure that and more for your. All you have to do is to call it for your local shell (note the.
before the script name below) and pass on the$ORACLE_SID
, which isXE
:
1234567[gerald@localhost ~]$ . oraenv
ORACLE_SID = [gerald] ? XE
ORACLE_BASE environment variable is not being
set
since this
information is not available
for
the current user ID gerald.
You can
set
ORACLE_BASE manually
if
it is required.
Resetting ORACLE_BASE to its previous value or ORACLE_HOME
The Oracle base has been
set
to
/opt/oracle/product/18c/dbhomeXE
Once you have done that you can connect via the SQL prompt. The format for the connect string is:
[user]/[password]@//[hostname]:[port]/[DB name] [AS [role]]
1234567891011121314151617181920[gerald@localhost ~]$ sqlplus sys
/GetStarted18c
@
//localhost
:1521
/XE
as sysdba
SQL*Plus: Release 18.0.0.0.0 - Production on Fri Oct 19 09:05:41 2018
Version 18.4.0.0.0
Copyright (c) 1982, 2018, Oracle. All rights reserved.
Connected to:
Oracle Database 18c Express Edition Release 18.0.0.0.0 - Production
Version 18.4.0.0.0
SQL> SELECT
'Hello World!'
FROM dual;
'HELLOWORLD!
------------
Hello World!
SQL>
exit
Disconnected from Oracle Database 18c Express Edition Release 18.0.0.0.0 - Production
Version 18.4.0.0.0
More information
Hi! What kind of “Red Hat compatible Linux distribution” you used? If it is CentOS what version?
I tried the newest 7.5.1804 (Minimal-ISO) and everything is fine until the db configuration (Listener configuration failed). It seems not to be the only one with the problem – I found these (unanswered) posts: https://community.oracle.com/thread/4180595
Any ideas?
Hi Carlos,
There is only one kind of Red Hat compatible OS, which are those that support the RedHat Package Manager (RPM) and the same libraries.
The issue in the community post is that the underlying Java VM crashes when executing a Java program. Do you have the same issue?
You might want to post your issue in the community forum as well.
Thx,
Yes. I have exactly the same problem. For me it’s interesting that it doesn’t work “out of the box” although I downloaded a fresh centos without modifying nothing (except updates and the oracle presinstall package). It seems to be a very specific problem with – you’re right – the underlying JAVA VM. You don’t had this issue when you install 18c XE on the “red hat compatible OS”? Can you post what distribution and kernel version you used for your test (the video)? And what JAVA (java -version) is installed? OpenJDK or Oracles Java (8 or 9)?
And yes… I will post in the forum too. Hoped that the issue (4180595) solved earlier…
Hey Carlos,
The versions for Oracle Linux I have XE running, is:
[gerald@localhost ~]$ cat /etc/oracle-release
Oracle Linux Server release 7.5
[gerald@localhost ~]$ uname -a
Linux localhost.localdomain 4.1.12-124.19.7.el7uek.x86_64 #2 SMP Sat Sep 29 17:29:22 PDT 2018 x86_64 x86_64 x86_64 GNU/Linux
The Java version used for netca gets shipped with the installation. When you look at $ORACLE_HOME/bin/netca you will find the following lines:
99 # External Directory Variables set by the Installer
100 JRE_DIR=/opt/oracle/product/18c/dbhomeXE/jdk/jre
101 JLIB_DIR=/opt/oracle/product/18c/dbhomeXE/jlib
102
103
104 # JRE Executable and Class File Variables
105 JRE=$JRE_DIR/bin/java
That Java version itself will be the same as for you:
-bash-4.2$ /opt/oracle/product/18c/dbhomeXE/jdk/jre/bin/java -version
java version “1.8.0_171”
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)
On the Red Hat compatible OS I also used CentOS:
[gerald@localhost ~]$ cat /etc/centos-release
CentOS Linux release 7.5.1804 (Core)
[gerald@localhost ~]$ uname -a
Linux localhost.localdomain 3.10.0-862.14.4.el7.x86_64 #1 SMP Wed Sep 26 15:12:11 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
[oracle@localhost ~]$ /opt/oracle/product/18c/dbhomeXE/jdk/jre/bin/java -version
java version “1.8.0_171”
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)
Carlos,
I’ve found that re-running the configuration after it fails the first time works for me, so I’m using the following command:
# /etc/init.d/oracle-xe-18c configure 2>&1 || \
> cat /opt/oracle/cfgtoollogs/netca/netca_configure_out.log && \
> /etc/init.d/oracle-xe-18c configure 2>&1
Hey David,
thanks for you answer – but it didn’t work for me! I’ve tried it several times in different states of my virtual environment but always failed.
You’ve executed all these commands as root user? Or as oracle user with root privileges (sudo)? You used the minimal ISO (no GUI) from CentOS? Did you update the system after configuring? You used VirtualBox too?
Found the solution: don’t update your fresh centos installation. Then there are no problems…
(don’t ask me why – but it works)
Hey Gerald!
Thanks for everything you are doing for the XE community!
I have a very tricky question for you about the
oraenv
script. In the ‘Administering Oracle Database’ documentation (https://docs.oracle.com/en/database/oracle/oracle-database/18/unxar/administering-oracle-database.html) it is said thatoraenv
script should use theoratab
contents in order to determine the ORACLE_SID and ORACLE_HOME environment variables. If it fails, then it asks the user to specify them.But I checked the script contents and never found utilizing of the
oratab
file, although I have it under/etc
directory in my system and there’s a row containing all the needed information:XE:/opt/oracle/product/18c/dbhomeXE:N
.At the moment, to be able to run the
oraenv
script in the non-interactive regime (as a part of/etc/profile.d
scripts, to set up the environment by default for all new sessions), I first set theORACLE_SID
andORAENV_ASK
environment variables to the corresponding values and only then run the script, which is not quite convinient. Indeed, the sctipt didn’t have to ask me to provide the values, it could use myoratab
contents instead.The question is – is there a bug or was all this done on any purpose that the script don’t quite reflect the facts written in the official docs?
You can check out my workaround here: https://dsavenko.me/oracledb-apex-ords-tomcat-httpd-centos7-all-in-one-guide-part-two/#settingupenvironment
Hi Denis,
Thank you very much!
I will have to check and see what it does. It should retrieve the values from /etc/oratab, otherwise how would it get to the ORACLE_HOME.
What actually happens when you run
. oraenv
and pass onORACLE_SID=XE
? Does it set the ORACLE_HOME and PATH correctly?Btw, that is the only thing that
oraenv
does. You can just happily set ORACLE_HOME, ORACLE_SID, and PATH yourself and don’t even need to invokeoraenv
Thx,
Hi Gerald!
Well, I had a look at the script contents before worked out my solution.
So, basically yes, it does set the ORACLE_HOME and PATH env variables when you provide it with the ORACLE_SID env variable value and set the ORAENV_ASK variable value to NO. Otherwise, despite the fact that ORACLE_SID is already set, it asks for its value from keyboard, however the default value is changed from the OS user name (‘root’ in my case) to ‘XE’.
I haven’t found any usage of /etc/oratab inside the script, which I have with my 18c XE distribution. Although, I didn’t look into the ‘dbhome.sh’ script, which is executed inside ‘oraenv.sh’.
Hey Denis,
It is indeed in
dbhome
that the/etc/oratab
is read:[gerald@localhost ~]$
export
ORACLE_TRACE=T
[gerald@localhost ~]$ . oraenv
++ N=
++ C=
++
grep
--color=auto c
++
echo
'\c'
++ N=-n
++
'['
/opt/oracle/product/18c/dbhomeXE
= 0
']'
++ OLDHOME=
/opt/oracle/product/18c/dbhomeXE
++
case
${ORAENV_ASK:-""}
in
++
case
"$ORACLE_SID"
in
++ ORASID=XE
++
echo
-n
'ORACLE_SID = [XE] ? '
ORACLE_SID = [XE] ? ++
read
NEWSID
XE
++
case
"$NEWSID"
in
++ ORACLE_SID=XE
++
export
ORACLE_SID
+++ dbhome XE
++++
trap
''
1
++++ RET=0
++++ ORAHOME=
++++ ORASID=XE
++++ ORASID=XE
++++ ORATAB=
/etc/oratab
++++ PASSWD=
/etc/passwd
++++ PASSWD_MAP=
passwd
.byname
++++
case
"$ORASID"
in
++++
test
-f
/etc/oratab
++++
case
"$ORASID"
in
+++++
awk
-F:
'{if ($1 == "XE") {print $2; exit}}'
/etc/oratab
++++ ORAHOME=
/opt/oracle/product/18c/dbhomeXE
++++
case
"$ORAHOME"
in
++++
echo
/opt/oracle/product/18c/dbhomeXE
++++
exit
0
++ ORAHOME=
/opt/oracle/product/18c/dbhomeXE
++
case
$?
in
++ ORACLE_HOME=
/opt/oracle/product/18c/dbhomeXE
++
export
ORACLE_HOME
++
case
${LD_LIBRARY_PATH:-""}
in
+++
echo
/opt/oracle/product/18c/dbhomeXE/lib
+++
sed
's;/opt/oracle/product/18c/dbhomeXE/lib;/opt/oracle/product/18c/dbhomeXE/lib;g'
++ LD_LIBRARY_PATH=
/opt/oracle/product/18c/dbhomeXE/lib
++
export
LD_LIBRARY_PATH
++
case
"$OLDHOME"
in
++
case
"$PATH"
in
+++
echo
/usr/local/bin
:
/usr/bin
:
/usr/local/sbin
:
/usr/sbin
:
/home/gerald/
.
local
/bin
:
/home/gerald/bin
:
/opt/oracle/product/18c/dbhomeXE/bin
+++
sed
's;/opt/oracle/product/18c/dbhomeXE/bin;/opt/oracle/product/18c/dbhomeXE/bin;g'
++ PATH=
/usr/local/bin
:
/usr/bin
:
/usr/local/sbin
:
/usr/sbin
:
/home/gerald/
.
local
/bin
:
/home/gerald/bin
:
/opt/oracle/product/18c/dbhomeXE/bin
++
export
PATH
+++ LANG=C
+++
ulimit
++ ULIMIT=unlimited
++
'['
0 = 0 -a unlimited
'!='
unlimited
']'
++ ORABASE_EXEC=
/opt/oracle/product/18c/dbhomeXE/bin/orabase
++
'['
/opt/oracle/product/18c/dbhomeXE
'!='
x
']'
++ OLD_ORACLE_BASE=
/opt/oracle/product/18c/dbhomeXE
++
unset
ORACLE_BASE
++
export
ORACLE_BASE
++
'['
-r
/opt/oracle/product/18c/dbhomeXE/install/orabasetab
']'
++
'['
''
'!='
true
']'
++
echo
'ORACLE_BASE environment variable is not being set since this'
ORACLE_BASE environment variable is not being
set
since this
++
echo
'information is not available for the current user ID gerald.'
information is not available
for
the current user ID gerald.
++
echo
'You can set ORACLE_BASE manually if it is required.'
You can
set
ORACLE_BASE manually
if
it is required.
++
'['
x = x
']'
++
'['
''
'!='
true
']'
++
echo
'Resetting ORACLE_BASE to its previous value or ORACLE_HOME'
Resetting ORACLE_BASE to its previous value or ORACLE_HOME
++
'['
/opt/oracle/product/18c/dbhomeXE
'!='
''
']'
++ ORACLE_BASE=
/opt/oracle/product/18c/dbhomeXE
++
'['
''
'!='
true
']'
++
echo
'The Oracle base remains unchanged with value /opt/oracle/product/18c/dbhomeXE'
The Oracle base remains unchanged with value
/opt/oracle/product/18c/dbhomeXE
++
export
ORACLE_BASE
++
printf
'\033]0;%s@%s:%s\007'
gerald localhost
'~'
See:
ORACLE_SID = [XE] ? ++ read NEWSID
XE
++ case "$NEWSID" in
++ ORACLE_SID=XE
++ export ORACLE_SID
+++ dbhome XE
++++ trap '' 1
++++ RET=0
++++ ORAHOME=
++++ ORASID=XE
++++ ORASID=XE
++++ ORATAB=/etc/oratab
++++ PASSWD=/etc/passwd
++++ PASSWD_MAP=passwd.byname
++++ case "$ORASID" in
++++ test -f /etc/oratab
++++ case "$ORASID" in
+++++ awk -F: '{if ($1 == "XE") {print $2; exit}}' /etc/oratab
++++ ORAHOME=/opt/oracle/product/18c/dbhomeXE
Right. Now I understnad that by reading
oratab
filedbhome
script determines which to use if there are several of them, and it does it by the SID given to the script.Ok, but the issue is in the different place. The thing is that
oraenv
script does not have any defaults in 18c and does not take SID as an argument (asdbhome
does).This means it always expect SID already set in the environment along with ORAENV_ASK set to
NO
. Otherwise it demands it from keyboard, which is very inconvinient if a user like me wants to set the environment by default. Ok, there is a workaround (which I demonstrated), but maybe it would be nicer if the script read ORACLE_SID value as an argument? Like. oraenv XE
– and in this case it would respect the given value and would not ask the user to specify one.Just a kind suggestion.
Hi Denis,
That is the standard way of
oraenv
across all editions and since many versions. If you want it non-interactive you will have to setORAENV_ASK=NO
first.As you said, the reason why
/etc/oratab
is scanned is for differentORACLE_SID
s, which is not the case for XE but then again, it’s the very same script as with the other editions and versions.Is setting these two environment variables really that much of a big deal?
Mostly people just have
export ORACLE_HOME=
export PATH=$ORACLE_HOME:$PATH
export ORALCE_SID=
in their bash_profile and continue like that. Of course you can also always use
dbhome
directly if you want as well.Thx,
Hi Gerald,
If this is an official way recommended by Oracle, then I am quite ok with it. And I suppose I’ll stay with it for future. In fact, I wasn’t complaining, I just tried to make a suggestion, because, as I know, you’re one of those people who has power to influence things.
Thanks again for your elaborate answers!
Hi Denis,
Not a problem at all. I just wanted to understand whether there was something that couldn’t be addressed via the 2 env variables way.
As said, this is standard for many, many years now and seems to work quite well, hopefully also for your use case
Thx,
Hi Gerald,
I am having an error installing Database on Oracle Linux. I am doing that in the virtual box. I have Oracle Linux in my virtual box and I am using the terminal inside to pass on command: “yum localinstall /home/holuser/varun/oracle-database-xe-18c-1.0-1.x86_64.rpm”
I downloaded the installation file and kept in a folder ‘varun’ in the home directory (In Linux) and gave that path in the above command. On running that command it gives me a message saying dependancy for pre-install file. I downloaded that too and kept in the same folder and ran again. did not work.
Could you please help?
Thanks so much!
Varun
Hi Varun,
Can you please post this issue and the output of the commands you ran on the XE forum under: https://community.oracle.com/community/groundbreakers/database/developer-tools/oracle_database_express_edition_xe/overview
Thank you!
Pingback: Installing and Configuring Oracle 18cXE on CentOS | The Anti-Kyte
“DB name” is “DB service name”
…:[port]/[DB service name] [AS SYSDBA]
https://www.oracle.com/database/technologies/appdev/xe/quickstart.html
[DB name] is [DB service name]
https://www.oracle.com/database/technologies/appdev/xe/quickstart.html
Pingback: Other Databases - Building a LAMP Server (2019) | Supreme Ruler of Earth
Pingback: PHP - Building a LAMP Server (2019) | Supreme Ruler of Earth
Pingback: How to install Oracle Database 18c XE on Windows – Gerald on IT
Many thanks for this. I was in a hurry to install XE on Centos and didn’t really have time to think it through.
Thanks so much for the above amazing detailed and very interesting guide/tutorial – written and video!
But I have a problem (maybe with something I didn’t understand correctly).
Personally I just want to install APEX.
So first I install and configure “Oracle Database Express Edition (XE)” with the below commands :
rpm -ivh oracle-database-xe-18c-1.0-1.x86_64.rpm
/etc/init.d/oracle-xe-18c configure
But in the end as you show, a page is running (I think it’s not APEX there) :
https://localhost:5500/em
to which I have no access, because my browser says: https://imgur.com/a/L42WA3M
In an previous version when I just installing oracle-xe also have apex, is it no longer installed automatically?
So, I wanted to ask you, what should i have to do to install APEX ?
Do I need to download the compressed file from here : https://www.oracle.com/tools/downloads/apex-v191-downloads.html ?
Thank you very much!
Hi Orser,
APEX is no longer shipped and installed with Oracle XE. APEX releases every 3 months and we have learned with 11g XE that people never upgrade it and then run on very old APEX installations. Hence why it’s no longer shipped with the database and will have to be installed separately. Please have a look at the APEX Getting Started page and the APEX Installation Guide for more information.
Thx,
Hi Gerald,
Many thanks for a great tutorial. I have hit a rather frustrating snag in that after installing Oracle 18c I have been unable to successfully create a user and then connect to it. More precisely I can create the user but the connection keeps failing. The commands I’m using are below along with the failed connection attempt. If you have any suggestions it would be greatly appreciated.
I first connect to Oracle as root and then connect to the container XEPDB1
SQL>sqlplus system/password
SQL>ALTER SESSION SET CONTAINER = XEPDB1;
I then do the following to create a user.
SQL>create user paul identified by Guardium111;
SQL>grant connect to paul;
SQL>grant create session to paul;
SQL>alter user paul default role all;
Everything above works without error. When I try to connect to user paul I get the following. I’m tearing what little is left of my hair out trying to understand what the issue is.
SQL> conn paul
Enter password:
ERROR:
ORA-01017: invalid username/password; logon denied
Warning: You are no longer connected to ORACLE.
Hi Gerald,
Problem solved. I need to connect as follows.
sqlplus SYS/guardium@XEPDB1 AS SYSDBA
sqlplus paul/guardium@XEPDB1
or
conn paul/guardium@XEPDB1
Gerald,
Thanks for a wonderful blog.
There is an issue with Oracle 18cXE on Oracle Linux 7.7 , something to do with Firewall. It does not allows connection external connections for example SQL Developer. Raised this issue in Oracle Forum as well.
https://cloudcustomerconnect.oracle.com/posts/21f7a38448
Could you please advise.
Best Regards
Asheesh
Good evening everyone. I’m trying to install Oracle XE 18c on Oracle Linux 8.3 but it always gives this error: Can someone help me?
Problem: conflicting requests
– nothing provides oracle-database-preinstall-18c needed by oracle-database-xe-18c-1.0-1.x86_64
(try to add ‘–skip-broken’ to skip uninstallable packages or ‘–nobest’ to use not only best candidate packages)
Hi CALIXTO RODRIGUES MACEDO,
Oracle Linux 8 doesn’t ship the
oracle-database-preinstall-18c
package in the yum repository. Instead one has to install the rpm viarpm --nodeps
and make sure that all required Linux 8 dependencies are also present. That’s probably worth a new blog post, so let me draft that one up now.Thx,
Hello Gerald
Thank you very much for your reply.
I’m a new user Linux, I don’t know much. I’m going to try again, and if I need any help, I’ll write it here.
Hey CALIXTO RODRIGUES MACEDO,
Please see here: https://geraldonit.com/2021/05/04/how-to-install-oracle-database-18c-xe-on-linux-8/
That hopefully gives you all you need.
Thx,