Install Oracle Database 19c On Oracle Linux 8
Install Oracle Database 19c On Oracle Linux 8
For example:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
192.168.30.5 ol8-19.localdomain ol8-19
Automatic Setup
Perform either the Automatic Setup or the Manual Setup to complete the basic prerequisites. The Additional
Setup is required for all installations.
If you plan to use the "oracle-database-preinstall-19c" package to perform all your prerequisite setup, issue
the following command.
dnf install -y oracle-database-preinstall-19c
It is probably worth doing a full update as well, but this is not strictly speaking necessary.
yum update -y
Manual Setup
If you have not used the "oracle-database-preinstall-19c" package to perform all prerequisites, you will need
to manually perform the following setup tasks.
Add the following lines to the "/etc/sysctl.conf" file, or in a file called "/etc/sysctl.d/98-oracle.conf".
fs.file-max = 6815744
kernel.sem = 250 32000 100 128
kernel.shmmni = 4096
kernel.shmall = 1073741824
kernel.shmmax = 4398046511104
kernel.panic_on_oops = 1
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
net.ipv4.conf.all.rp_filter = 2
net.ipv4.conf.default.rp_filter = 2
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 9000 65500
Run one of the following commands to change the current kernel parameters, depending on which file you
edited.
/sbin/sysctl -p
Or
/sbin/sysctl -p /etc/sysctl.d/98-oracle.conf
The following packages are listed as required. Don't worry if some don't install. It won't prevent the
installation.
sudo dnf install -y bc binutils compat-libcap1 compat-libstdc++-33 dtrace-modules
dtrace-modules-headers dtrace-modules-provider-headers dtrace-utils elfutils-libelf
elfutils-libelf-devel libXrender libXrender-devel libX11 libXau libXi libXtst libgcc
librdmacm-devel libstdc++ libstdc++-devel libxcb make net-tools nfs-utils python
python-configshell python-rtslib python-six targetcli smartmontools sysstat unixODBC libnsl
libnsl.i686 libnsl2 libnsl2.i686
Additional Setup
Set the password for the "oracle" user.
sudo passwd oracle
Set secure Linux to permissive by editing the "/etc/selinux/config" file, making sure the SELINUX flag is set
as follows.
SELINUX=permissive
Once the change is complete, restart the server or run the following command.
sudo setenforce Permissive
If you have the Linux firewall enabled, you will need to disable or configure it, as shown here <TBA>. To
disable it, do the following.
sudo systemctl stop firewalld
sudo systemctl disable firewalld
If you are not using Oracle Linux and UEK, you will need to manually.
Unless you are working from the console, or using SSH tunnelling, login as root and issue the following
command.
Edit the ~/.bash_profile for the oracle user and following to bottom of it:
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_SID=oradb; export ORACLE_SID
ORACLE_HOME=$ORACLE_BASE/product/19.0.0/db_1; export ORACLE_HOME
NLS_DATE_FORMAT="DD-MON-YYYY HH24:MI:SS"; export NLS_DATE_FORMAT
TNS_ADMIN=$ORACLE_HOME/network/admin; export TNS_ADMIN
PATH=$PATH:$HOME/.local/bin:$HOME/bin
PATH=${PATH}:/usr/bin:/bin:/usr/local/bin
PATH=.:${PATH}:$ORACLE_HOME/bin
export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib
export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE
CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib
CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib
CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib
export CLASSPATH
export TEMP=/tmp
export TMPDIR=/tmp
umask 022
Create a "start_all.sh" and "stop_all.sh" script that can be called from a startup/shutdown service. Make sure
the ownership and permissions are correct.
sudo vi /home/oracle/scripts/start_all.sh <<EOF
#!/bin/bash
. /home/oracle/scripts/setEnv.sh
export ORAENV_ASK=NO
. oraenv
export ORAENV_ASK=YES
dbstart \$ORACLE_HOME
export ORAENV_ASK=NO
. oraenv
export ORAENV_ASK=YES
dbshut \$ORACLE_HOME
Once the installation is complete and you've edited the "/etc/oratab", you should be able to start/stop the
database with the following scripts run from the "oracle" user.
~/scripts/start_all.sh
~/scripts/stop_all.sh
You can see how to create a Linux service to automatically start/stop the database here <TBA>
Installation
Log into the oracle user. If you are using X emulation then set the DISPLAY environmental variable.
DISPLAY=<machine-name>:0.0; export DISPLAY
Switch to the ORACLE_HOME directory, unzip the software directly into this path and start the Oracle Universal
Installer (OUI) by issuing one of the following commands in the ORACLE_HOME directory. The interactive mode
will display GUI installer screens to allow user input, while the silent mode will install the software without
displaying any screens, as all required options are already specified on the command line.
# Unzip software.
cd $ORACLE_HOME
unzip -oq /path/to/software/LINUX.X64_193000_db_home.zip
# Interactive mode.
./runInstaller
# Silent mode.
./runInstaller -ignorePrereq -waitforcompletion -silent \
-responseFile ${ORACLE_HOME}/install/response/db_install.rsp \
oracle.install.option=INSTALL_DB_SWONLY \
ORACLE_HOSTNAME=${ORACLE_HOSTNAME} \
UNIX_GROUP_NAME=oinstall \
INVENTORY_LOCATION=${ORA_INVENTORY} \
SELECTED_LANGUAGES=en,en_GB \
ORACLE_HOME=${ORACLE_HOME} \
ORACLE_BASE=${ORACLE_BASE} \
oracle.install.db.InstallEdition=EE \
oracle.install.db.OSDBA_GROUP=dba \
oracle.install.db.OSBACKUPDBA_GROUP=dba \
oracle.install.db.OSDGDBA_GROUP=dba \
oracle.install.db.OSKMDBA_GROUP=dba \
oracle.install.db.OSRACDBA_GROUP=dba \
SECURITY_UPDATES_VIA_MYORACLESUPPORT=false \
DECLINE_SECURITY_UPDATES=true
You are now ready to create a database, but it's better to patch the installation first if you have access to
Oracle Support.
Patch Installation
The installation of 19.3 will work without applying the patches. If you don't have access to the patches and
are just doing the installation for a test system, you can proceed without this step.
For the installation to be supported you need to be on patch level 19.7 (April 2020) or later. To get the
patches you need to have a valid Oracle Support CSI so you can download them from Oracle Support. This is
an example of applying the 19.7 patch to a clean standalone installation without ASM and before a database
is created.
export SOFTWARE_DIR=/u01/software
export PATH=${ORACLE_HOME}/OPatch:${PATH}
export OPATCH_FILE="p6880880_190000_Linux-x86-64.zip"
export PATCH_FILE="p30783543_190000_Linux-x86-64.zip"
export PATCH_TOP=${SOFTWARE_DIR}/30783543
export PATCH_PATH1=${PATCH_TOP}/30869156
export PATCH_PATH2=${PATCH_TOP}/30805684
# Prepare opatch.
cd ${ORACLE_HOME}
unzip -oq ${SOFTWARE_DIR}/${OPATCH_FILE}
# Unzip software.
cd ${SOFTWARE_DIR}
unzip -oq ${PATCH_FILE}
cd ${PATCH_PATH1}
opatch prereq CheckConflictAgainstOHWithDetail -ph ./
opatch apply -silent
cd ${PATCH_PATH2}
opatch prereq CheckConflictAgainstOHWithDetail -ph ./
opatch apply -silent
Database Creation
You create a database using the Database Configuration Assistant (DBCA). The interactive mode will
display GUI screens to allow user input, while the silent mode will create the database without displaying
any screens, as all required options are already specified on the command line.
# Start the listener.
lsnrctl start
# Interactive mode.
dbca
# Silent mode.
dbca -silent -createDatabase \
-templateName General_Purpose.dbc \
-gdbname ${ORACLE_SID} -sid ${ORACLE_SID} -responseFile NO_VALUE \
-characterSet AL32UTF8 \
-sysPassword SysPassword1 \
-systemPassword SysPassword1 \
-createAsContainerDatabase true \
-numberOfPDBs 1 \
-pdbName ${PDB_NAME} \
-pdbAdminPassword PdbPassword1 \
-databaseType MULTIPURPOSE \
-memoryMgmtType auto_sga \
-totalMemory 2000 \
-storageType FS \
-datafileDestination "${DATA_DIR}" \
-redoLogFileSize 50 \
-emConfiguration NONE \
-ignorePreReqs
Post Installation
Edit the "/etc/oratab" file setting the restart flag for each instance to 'Y'.
cdb1:/u01/app/oracle/product/19.0.0/db_1:Y
Enable Oracle Managed Files (OMF) and make sure the PDB starts when the instance starts.
sqlplus / as sysdba <<EOF
alter system set db_create_file_dest='${DATA_DIR}';
alter pluggable database ${PDB_NAME} save state;
exit;