Installing Oracle Database on Debian: A Step-by-Step Guide
This guide outlines the key steps to install Oracle Database on Debian, covering both manual and automated (one-click script) methods. Follow these steps carefully to ensure a successful deployment.
Before starting, verify your Debian system meets Oracle’s minimum requirements (e.g., CPU, memory, disk space). Ensure the system is updated and has a stable internet connection for downloading packages. Upload the Oracle software package (e.g., p13390677_112040_linux-x86-64.zip) and one-click installation script (e.g., oracleshellinstall) to a directory like /soft.
Oracle relies on specific libraries for compilation and operation. Run the following command to install all necessary dependencies:
sudo apt-get update
sudo apt-get install -y gcc make binutils libmotif3 libaio1 libdb3 awk libc6-dev libc6
This ensures the system has tools for building Oracle binaries and libraries for asynchronous I/O (AIO) and other core functions.
Oracle requires dedicated user and group accounts for security and isolation. Execute these commands to create them:
sudo groupadd oinstall # Owner group for Oracle files
sudo groupadd dba # Group for database administrators
sudo useradd -g oinstall -G dba -m oracle # Create 'oracle' user with oinstall/dba membership
sudo passwd oracle # Set a strong password for the 'oracle' user
The oracle user will own all Oracle software and database files.
Create a directory for Oracle software and data files, then set ownership and permissions to restrict access:
sudo mkdir -p /u01/app/oracle # Base directory for Oracle files
sudo chown -R oracle:oinstall /u01/app/oracle # Assign ownership to 'oracle' user and 'oinstall' group
sudo chmod -R 755 /u01/app/oracle # Grant read/execute permissions to all users (write only for owner)
This structure follows Oracle’s best practices for file organization.
Oracle requires specific kernel settings for memory management and process handling. Edit /etc/sysctl.conf and add/modify these lines:
kernel.shmall = 2097152 # Total shared memory in pages (adjust based on system RAM)
kernel.shmmax = 536870912 # Maximum shared memory segment size (512MB)
kernel.shmmni = 4096 # Maximum number of shared memory segments
kernel.sem = 250 32000 100 128 # Semaphore settings for inter-process communication
fs.file-max = 65536 # Maximum number of open files
net.ipv4.ip_local_port_range = 1024 65000 # Range for ephemeral ports
net.core.rmem_default = 262144 # Default receive buffer size
net.core.rmem_max = 4194304 # Maximum receive buffer size
net.core.wmem_default = 262144 # Default send buffer size
net.core.wmem_max = 1048576 # Maximum send buffer size
fs.aio-max-nr = 1048576 # Maximum number of asynchronous I/O requests
Apply the changes immediately with:
sudo sysctl -p
These settings prevent kernel-related errors during installation.
Oracle needs higher limits for processes, open files, and memory usage. Edit /etc/security/limits.conf and append these lines:
oracle soft nproc 2047 # Soft limit for number of processes
oracle hard nproc 16384 # Hard limit for number of processes
oracle soft nofile 1024 # Soft limit for open files
oracle hard nofile 65536 # Hard limit for open files
oracle soft memlock 33554432 # Soft limit for locked memory (32GB)
oracle hard memlock 33554432 # Hard limit for locked memory (32GB)
These limits ensure Oracle can allocate sufficient resources for database operations.
Ensure the PAM (Pluggable Authentication Modules) system applies resource limits. Edit /etc/pam.d/login and verify this line exists:
session required /lib64/security/pam_limits.so
This line enables PAM to enforce the limits set in /etc/security/limits.conf.
Configure environment variables for the oracle user to simplify Oracle command execution. Edit /home/oracle/.bashrc and add:
export ORACLE_BASE=/u01/app/oracle # Base directory for Oracle software
export ORACLE_HOME=/u01/app/oracle/product/19.3.0.0/dbhome_1 # Path to Oracle home (adjust version)
export ORACLE_SID=orcl # Default database instance name
export PATH=$ORACLE_HOME/bin:$PATH # Add Oracle binaries to PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib:/usr/local/lib # Add Oracle libraries to LD_LIBRARY_PATH
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK # Character set (adjust as needed)
export NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS' # Default date format
Apply the changes by running:
source /home/oracle/.bashrc
These variables are essential for Oracle to function correctly.
For simplified installation, use a one-click script like oracleshellinstall. Navigate to the script directory and execute:
cd /soft
./oracleshellinstall -lf ens33 \ # Local network interface (e.g., ens33)
-n debian12 \ # Hostname
-h oracle \ # Oracle database username
-p your_password \ # Oracle user password
-d /u01 \ # Software installation base directory
-s /u01/oradata \ # Database data file directory
-o luci # Optional: Database name
The script automates dependency checks, directory creation, and Oracle configuration. Follow on-screen prompts to complete the installation.
After installation, verify Oracle is running correctly. Switch to the oracle user and connect to SQL*Plus:
su - oracle
sqlplus / as sysdba
If prompted for a password, enter the one you set during installation. A successful login displays the SQL> prompt, indicating the database is accessible.
By following these steps, you can successfully install Oracle Database on Debian. Always refer to Oracle’s official documentation for version-specific requirements and troubleshooting tips.