Installation Overview
Oracle 19c (19.3) is the long-term support (LTS) release recommended for production. We'll install it on Oracle Linux 8 / RHEL 8 — the preferred platform for Oracle Database.
Prerequisites
Hardware Requirements (Minimum for Lab)
- RAM: 2 GB minimum (8 GB recommended)
- Disk: 10 GB for software + 5 GB for database files
- CPU: x86-64 architecture
OS Prerequisites
# Install prerequisite packages (Oracle Linux / RHEL)
dnf install -y oracle-database-preinstall-19c
# Or manually for CentOS/RHEL
dnf install -y bc binutils elfutils-libelf elfutils-libelf-devel
fontconfig-devel glibc glibc-devel ksh libaio libaio-devel
libgcc librdmacm-devel libstdc++ libstdc++-devel libxcb
make net-tools nfs-utils python python-configshell smartmontools
sysstat targetcli unixODBC
Create Oracle OS User and Groups
groupadd -g 54321 oinstall
groupadd -g 54322 dba
groupadd -g 54323 oper
useradd -u 54321 -g oinstall -G dba,oper oracle
passwd oracle
# Create directory structure
mkdir -p /u01/app/oracle/product/19.3.0/dbhome_1
mkdir -p /u01/app/oraInventory
chown -R oracle:oinstall /u01
chmod -R 775 /u01
Set Kernel Parameters (/etc/sysctl.conf)
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 4294967295
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
# Apply kernel parameters
sysctl -p
Oracle Environment Variables
# Add to ~oracle/.bash_profile
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1
export ORACLE_SID=ORCL
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export NLS_DATE_FORMAT="DD-MON-YYYY HH24:MI:SS"
Silent Installation
# Unzip the installer
cd /u01/app/oracle/product/19.3.0/dbhome_1
unzip /tmp/LINUX.X64_193000_db_home.zip
# Run silent install
./runInstaller -silent -responseFile /tmp/db_install.rsp
oracle.install.option=INSTALL_DB_SWONLY
ORACLE_HOSTNAME=myserver.example.com
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/u01/app/oraInventory
ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1
ORACLE_BASE=/u01/app/oracle
oracle.install.db.InstallEdition=EE
oracle.install.db.DBA_GROUP=dba
oracle.install.db.OPER_GROUP=oper
DECLINE_SECURITY_UPDATES=true
# Run root scripts when prompted
/u01/app/oraInventory/orainstRoot.sh
/u01/app/oracle/product/19.3.0/dbhome_1/root.sh
Create Database Using DBCA
# GUI mode
dbca
# Silent mode
dbca -silent -createDatabase
-templateName General_Purpose.dbc
-gdbName ORCL
-sid ORCL
-responseFile NO_VALUE
-characterSet AL32UTF8
-sysPassword Oracle19c#
-systemPassword Oracle19c#
-createAsContainerDatabase true
-numberOfPDBs 1
-pdbName ORCLPDB
-pdbAdminPassword Oracle19c#
-databaseType MULTIPURPOSE
-memoryMgmtType AUTO_SGA
-totalMemory 2048
-storageType FS
-datafileDestination /u01/app/oracle/oradata
-redoLogFileSize 200
-emConfiguration NONE
-ignorePreReqs
Configure the Listener
# $ORACLE_HOME/network/admin/listener.ora
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = myserver.example.com)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
# Start listener
lsnrctl start
# Check status
lsnrctl status
Configure tnsnames.ora
# $ORACLE_HOME/network/admin/tnsnames.ora
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = myserver.example.com)(PORT = 1521))
(CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = ORCL))
)
ORCLPDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = myserver.example.com)(PORT = 1521))
(CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = ORCLPDB))
)
Lab 2: First Connections
# Connect locally as SYSDBA
sqlplus / as sysdba
# Connect via listener
sqlplus sys/Oracle19c#@ORCL as sysdba
sqlplus system/Oracle19c#@ORCLPDB
-- Check status after startup
SQL> SELECT name, open_mode FROM v$pdbs;
SQL> ALTER PLUGGABLE DATABASE ORCLPDB OPEN;
-- Auto-open PDB on startup
SQL> ALTER PLUGGABLE DATABASE ORCLPDB SAVE STATE;
Common Installation Errors
INS-13001: Environment does not meet minimum requirements
# Solution: Run prerequisite package
dnf install -y oracle-database-preinstall-19c
# Then re-run installer with -ignorePrereq if in lab
ORA-12541: TNS: no listener
# Check listener is running
lsnrctl status
# Start if stopped
lsnrctl start
Summary
- Install OS prerequisites and create oracle OS user before installing
- Set ORACLE_HOME, ORACLE_BASE, ORACLE_SID in .bash_profile
- Use DBCA to create CDB with PDB — standard for 12c+
- Configure listener.ora and tnsnames.ora for network connectivity
Next: Part 3 – SQL Fundamentals: DDL & DML
Frequently asked questions
runInstaller on Oracle Linux 8 fails its OS check. How do I get past it?
The 19.3 base release predates Oracle Linux 8. Run
export CV_ASSUME_DISTID=OEL7.8 before ./runInstaller, or install with a newer Release Update applied (-applyRU), which recognises OL8.My PDB is MOUNTED after a restart. How do I open it automatically?
Open it once with
ALTER PLUGGABLE DATABASE ORCLPDB OPEN;, then run ALTER PLUGGABLE DATABASE ORCLPDB SAVE STATE; so it reopens automatically after every restart.How do I fix ORA-12541: TNS: no listener?
Check the listener with
lsnrctl status and start it with lsnrctl start. Make sure the host and port in tnsnames.ora match those in listener.ora.How much memory do I need for a lab install?
2 GB of RAM is the minimum and 8 GB is recommended, plus about 10 GB of disk for the software and 5 GB for the database files.
Do I have to create the oracle user by hand?
No.
dnf install -y oracle-database-preinstall-19c creates the oracle user and groups and sets the kernel parameters for you. The manual steps are for systems where that package isn't available.
Comments
0Please sign in to leave a comment.
No comments yet
Be the first to share your thoughts!