Home / Databases / Oracle

DatabasesHow-toAdvanced

Oracle Database single instance on Linux: install, configure and protect

Install Oracle Database 19c or 23ai as a single instance on Oracle Linux. Covers the preinstall RPM, storage layout, silent install, creating a CDB/PDB, memory settings, archivelog mode, RMAN backups and basic security.

Deepak Bhardwaj3 min read

Applies toOracle Database 19c and 23ai on Oracle Linux 8/9 (also RHEL)

1. OS preparation

sudo dnf install -y oracle-database-preinstall-19c   # or oracle-ai-database-preinstall-23ai

The preinstall RPM creates the oracle user and groups, and sets kernel parameters and limits.

Mount Purpose
/u01 Oracle software (ORACLE_BASE=/u01/app/oracle)
/u02/oradata Data files
/u03/fra Fast Recovery Area (archivelogs, backups, flashback logs)
redo Separate fast volume, multiplexed members

Use ASM, with Oracle Restart, if you want Oracle-managed storage on a single node.

2. Silent software install (19c)

export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
mkdir -p $ORACLE_HOME && cd $ORACLE_HOME && unzip -q /stage/LINUX.X64_193000_db_home.zip
./runInstaller -silent -applyRU /stage/<release-update-dir> \
  -responseFile $ORACLE_HOME/install/response/db_install.rsp \
  oracle.install.option=INSTALL_DB_SWONLY oracle.install.db.InstallEdition=EE \
  ORACLE_BASE=/u01/app/oracle oracle.install.db.OSDBA_GROUP=dba \
  oracle.install.db.OSBACKUPDBA_GROUP=backupdba oracle.install.db.OSDGDBA_GROUP=dgdba \
  oracle.install.db.OSKMDBA_GROUP=kmdba oracle.install.db.OSRACDBA_GROUP=racdba
sudo /u01/app/oraInventory/orainstRoot.sh && sudo $ORACLE_HOME/root.sh

-applyRU installs the latest Release Update together with the base release.

3. Create the database (CDB + PDB)

dbca -silent -createDatabase -templateName General_Purpose.dbc \
  -gdbName ORCL -sid ORCL -createAsContainerDatabase true \
  -numberOfPDBs 1 -pdbName SALESPDB -characterSet AL32UTF8 \
  -datafileDestination /u02/oradata -recoveryAreaDestination /u03/fra \
  -recoveryAreaSize 200000 -memoryMgmtType AUTO_SGA -totalMemory 24576 \
  -redoLogFileSize 2048 -enableArchive true -sysPassword '...' -systemPassword '...' -pdbAdminPassword '...'

4. Key settings

ALTER SYSTEM SET sga_target = 16G SCOPE=SPFILE;
ALTER SYSTEM SET pga_aggregate_target = 6G SCOPE=SPFILE;
ALTER SYSTEM SET pga_aggregate_limit = 12G SCOPE=SPFILE;
ALTER SYSTEM SET use_large_pages = ONLY SCOPE=SPFILE;     -- configure HugePages first
ALTER DATABASE FORCE LOGGING;
ALTER DATABASE FLASHBACK ON;                               -- optional; useful for fast rollback
ALTER SYSTEM SET db_flashback_retention_target = 1440;
ALTER SYSTEM SET control_file_record_keep_time = 31;
  • Set up HugePages (vm.nr_hugepages) to cover the SGA. Disable transparent huge pages.
  • Multiplex the control files and redo log members across volumes.
  • Save PDB state: ALTER PLUGGABLE DATABASE SALESPDB SAVE STATE;

5. RMAN backups

CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 14 DAYS;
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO COMPRESSED BACKUPSET PARALLELISM 4;
CONFIGURE ARCHIVELOG DELETION POLICY TO BACKED UP 1 TIMES TO DISK;
ALTER DATABASE ENABLE BLOCK CHANGE TRACKING USING FILE '/u02/oradata/ORCL/bct.chg';
Job Schedule
BACKUP INCREMENTAL LEVEL 0 DATABASE PLUS ARCHIVELOG Weekly
BACKUP INCREMENTAL LEVEL 1 DATABASE PLUS ARCHIVELOG Daily
BACKUP ARCHIVELOG ALL NOT BACKED UP Every 30 min
RESTORE DATABASE VALIDATE Weekly

Copy backups offsite (OCI Object Storage with the Cloud Backup Module, ZDLRA, or a backup tool).

6. Security basics

  • Change default passwords, lock unused accounts, and use profiles with password limits.
  • Unified Auditing policies for logins, privilege use and DDL.
  • Network encryption or TLS (SQLNET.ENCRYPTION_SERVER = REQUIRED, or TCPS).
  • Apply quarterly RUs (see the patching policy post).

Note

Licensing: Diagnostics and Tuning packs (AWR/ASH), Advanced Security (TDE) and partitioning are separately licensed Enterprise Edition options. Set control_management_pack_access to match what you've licensed.