目录

一、目标与环境

二、Oracle安装包下载

官方下载地址(推荐)

三、安装详细步骤

第一阶段:系统准备(全部以root用户操作)

1. 安装必要的依赖包

2. 创建Oracle用户和组

3. 创建目录结构并设置权限

4. 配置系统内核参数

5. 配置用户资源限制

6. 配置 PAM 限制(可选但推荐)

7. 禁用透明大页面和启用 HugePages(性能优化)

 第二阶段:准备 Oracle 软件

1. 上传安装文件

2. 解压安装文件(切换到oracle用户)

3. 准备诶响应文件

 第三阶段:执行静默安装

1. 开始安装(仍然作为oracle用户)

2. 执行跟脚本

3. 验证安装

四、创建数据库并使用

1. 创建数据库

2. 创建示例表结构

3. 查询测试

4. 可选配置

1)永久保存设置(可选)

2)永久设置环境变量


一、目标与环境

  • 操作系统:最小化安装的 RHEL8

  • 数据库:Oracle Database 19c (19.3+)

  • 方式:使用响应文件静默安装

二、Oracle安装包下载

官方下载地址(推荐)

  1. Oracle 官方技术网站(免费下载)

    • 网址https://www.oracle.com/database/technologies/oracle-database-software-downloads.html

    • 这是唯一官方的、合法的免费下载途径。

  2. 下载步骤

    • 访问上述网址。

    • 找到 "Oracle Database 19c" 版本。

    • 在 "Linux x86-64" 栏目下,点击第一个链接进行下载,文件全名通常为:
      LINUX.X64_193000_db_home.zip

三、安装详细步骤

第一阶段:系统准备(全部以root用户操作)

1. 安装必要的依赖包

这是最关键的一步,确保所有包都正确安装。

dnf install -y bc \
binutils \
elfutils-libelf \
elfutils-libelf-devel \
fontconfig-devel \
glibc \
glibc-devel \
ksh \
libaio \
libaio-devel \
libXrender \
libX11 \
libXau \
libXi \
libXtst \
libgcc \
libnsl \
libstdc++ \
libstdc++-devel \
libxcb \
make \
net-tools \
nss-softokn-freebl \
python3 \
python3-devel \
python3-pip \
gcc \
gcc-c++ \
glibc.i686 \
glibc-devel.i686 \
libnsl.i686

注意:如果您的系统没有注册到 Red Hat 订阅管理器,可能需要配置本地或网络 YUM/DNF 源。

2. 创建Oracle用户和组

groupadd -g 54321 oinstall
groupadd -g 54322 dba
useradd -u 54321 -g oinstall -G dba oracle
echo 'youke123YOUKE!' | passwd --stdin oracle
# 请务必设置密码为强密码,这里以'youke123YOUKE!'示例

3. 创建目录结构并设置权限

mkdir -p /u01/app/oracle/product/19.3.0/dbhome_1
mkdir -p /u01/app/oracle/oradata
mkdir -p /u01/app/oraInventory
chown -R oracle:oinstall /u01
chmod -R 775 /u01

4. 配置系统内核参数

cat >> /etc/sysctl.conf << 'EOF'
# Oracle Recommended Parameters
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 1073741824
kernel.shmmax = 4398046511104
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
EOF

# 使配置立即生效
sysctl -p

5. 配置用户资源限制

cat >> /etc/security/limits.conf << 'EOF'
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
oracle hard stack 32768
EOF

6. 配置 PAM 限制(可选但推荐)

cat >> /etc/pam.d/login << 'EOF'
session    required     pam_limits.so
EOF

7. 禁用透明大页面和启用HugePages(性能优化)

# 禁用透明大页面
echo 'never' > /sys/kernel/mm/transparent_hugepage/enabled
echo 'never' > /sys/kernel/mm/transparent_hugepage/defrag

# 使其在重启后持久化
cat >> /etc/rc.d/rc.local << 'EOF'
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
   echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
   echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
EOF
chmod +x /etc/rc.d/rc.local

 第二阶段:准备Oracle软件

1. 上传安装文件

将下载的LINUX.X64_193000_db_home.zip文件上传到服务器,例如/u01/software/目录。

mkdir -p /u01/software
chown oracle:oinstall /u01/software
# 使用 scp 或其它工具将文件上传到此目录

2. 解压安装文件(切换到oracle用户)

su - oracle
cd /u01/app/oracle/product/19.3.0/dbhome_1
unzip -q /u01/software/LINUX.X64_193000_db_home.zip

3. 准备诶响应文件

Oracle在安装包中提供了响应文件模板。我们基于模板创建自己的文件。

# 切换到响应文件模板目录
cd /u01/app/oracle/product/19.3.0/dbhome_1/install/response/

# 备份原始模板
cp db_install.rsp db_install.rsp.bak

# 创建我们自己的响应文件(直接使用vim编辑)
vim db_install_my.rsp

以下是需要修改的关键参数内容示例:

# 基本安装选项
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v19.0.0       # 响应文件版本声明
oracle.install.option=INSTALL_DB_AND_CONFIG    # 安装软件并创建数据库,如果仅安装软件的话,等号后面参数改为INSTALL_DB_SWONLY
DECLINE_SECURITY_UPDATES=true
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_HOSTNAME=client02

# 数据库版本
oracle.install.db.InstallEdition=EE

# 必需的管理组配置
oracle.install.db.OSDBA_GROUP=dba
oracle.install.db.OSOPER_GROUP=dba
oracle.install.db.OSBACKUPDBA_GROUP=dba
oracle.install.db.OSDGDBA_GROUP=dba        # Data Guard 管理组
oracle.install.db.OSKMDBA_GROUP=dba        # 加密密钥管理组  
oracle.install.db.OSRACDBA_GROUP=dba       # RAC 管理组

# Root脚本配置
oracle.install.db.rootconfig.executeRootScript=false

# 可选:如果您想要安装时创建数据库
oracle.install.db.ConfigureAsContainerDB=true
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE
oracle.install.db.config.starterdb.globalDBName=orcl
oracle.install.db.config.starterdb.SID=orcl
oracle.install.db.config.starterdb.characterSet=AL32UTF8
oracle.install.db.config.starterdb.memoryLimit=2048
oracle.install.db.config.starterdb.password.ALL=youke123YOUKE!
oracle.install.db.config.starterdb.storageType=FILE_SYSTEM_STORAGE
oracle.install.db.config.starterdb.fileSystemStorage.dataLocation=/u01/app/oracle/oradata

重要提示

  • 将文件中所有的"youke123YOUKE!"替换为您自己的强密码。

  • DECLINE_SECURITY_UPDATES 必须设为 true,否则安装会失败。

 第三阶段:执行静默安装

 1. 开始安装(仍然作为oracle用户)

cd /u01/app/oracle/product/19.3.0/dbhome_1
./runInstaller -silent -responseFile /u01/app/oracle/product/19.3.0/dbhome_1/install/response/db_install_my.rsp

安装过程会持续 10-30 分钟,具体取决于系统性能。您会看到类似以下的输出:

Launching Oracle Database Setup Wizard...

The response file for this session can be found at:
...

You can find the log of this install session at:
...

Starting Oracle Universal Installer...

Checking Temp space: must be greater than 500 MB.   Actual 15232 MB    Passed
Checking swap space: must be greater than 500 MB.   Actual 4096 MB     Passed
Preparing to launch Oracle Universal Installer from /tmp/OraInstall2023-xx-xx_xx-xx-xxPM. Please wait ...

2. 执行跟脚本

当安装程序提示时,打开另一个终端窗口,以root用户身份运行以下脚本:

# 第一个脚本
/u01/app/oraInventory/orainstRoot.sh

# 第二个脚本
/u01/app/oracle/product/19.3.0/dbhome_1/root.sh

root.sh 脚本会输出一些信息,最后以 Finished product-specific root actions. 结束。

回到安装会话的终端,它会检测到根脚本已执行完毕,并继续完成安装。

3. 验证安装

Successfully Setup Software.

如果输出显示 STATUS 为 OPENDATABASE_STATUS 为 ACTIVE,那么恭喜您,Oracle数据库已经在最小化RHEL8上成功安装并运行!

四、创建数据库并使用

1. 创建数据库

# 确保在oracle用户下
su - oracle

# 设置环境变量
export ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_SID=orcl

# 使用DBCA静默创建数据库
dbca -silent -createDatabase \
  -templateName General_Purpose.dbc \
  -gdbname orcl -sid orcl \
  -characterSet AL32UTF8 \
  -memoryPercentage 40 \
  -emConfiguration NONE \
  -datafileDestination /u01/app/oracle/oradata \
  -storageType FS \
  -sampleSchema false \
  -automaticMemoryManagement false \
  -sysPassword Oracle123! \
  -systemPassword Oracle123!

注意:这个命令会运行几分钟,请耐心等待。

如果数据库已创建但未启动,尝试手动启动:

# 启动数据库实例
sqlplus / as sysdba << EOF
STARTUP;
EXIT;
EOF

# 这样的输出就是成功了
SQL*Plus: Release 19.0.0.0.0 - Production on Wed Oct 15 18:59:26 2025
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> ORACLE instance started.

Total System Global Area 1191181696 bytes
Fixed Size		    8895872 bytes
Variable Size		  318767104 bytes
Database Buffers	  855638016 bytes
Redo Buffers		    7880704 bytes
Database mounted.
Database opened.

创建完成后,验证状态:

sqlplus / as sysdba << EOF
SELECT instance_name, status, database_status FROM v\$instance;
SELECT name, open_mode FROM v\$database;
EXIT;
EOF

这次看到:

# 如果输出显示STATUS为OPEN,DATABASE_STATUS为ACTIVE,那么恭喜您Oracle数据库已经在最小化 RHEL8上成功安装并运行!
INSTANCE_NAME    STATUS    DATABASE_STATUS
--------------- --------- -----------------
orcl             OPEN      ACTIVE

NAME      OPEN_MODE
--------- ------------
ORCL      READ WRITE

2. 创建示例表结构

首先创建该目录:

# 创建orcl数据库文件目录
mkdir -p /u01/app/oracle/oradata/orcl

# 设置正确的权限
chown -R oracle:oinstall /u01/app/oracle/oradata/orcl
chmod -R 775 /u01/app/oracle/oradata/orcl

再使用现有的目录创建表空间:

# 设置 Oracle 环境变量
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_SID=orcl

-- 连接到数据库
sqlplus / as sysdba

-- 创建演示用户和表空间
CREATE TABLESPACE demo_ts 
DATAFILE '/u01/app/oracle/oradata/orcl/demo01.dbf' 
SIZE 100M AUTOEXTEND ON;

CREATE USER demo_user IDENTIFIED BY demo123 
DEFAULT TABLESPACE demo_ts 
QUOTA UNLIMITED ON demo_ts;

GRANT CONNECT, RESOURCE TO demo_user;

-- 切换到demo_user
CONNECT demo_user/demo123

然后直接创建表(不需要创建新的表空间):

-- 创建部门表
CREATE TABLE departments (
    department_id   NUMBER PRIMARY KEY,
    department_name VARCHAR2(50) NOT NULL,
    location        VARCHAR2(50)
);

-- 创建员工表
CREATE TABLE employees (
    employee_id     NUMBER PRIMARY KEY,
    first_name      VARCHAR2(50) NOT NULL,
    last_name       VARCHAR2(50) NOT NULL,
    email           VARCHAR2(100),
    hire_date       DATE DEFAULT SYSDATE,
    salary          NUMBER(10,2),
    department_id   NUMBER,
    job_title       VARCHAR2(50)
);

-- 插入示例数据
INSERT INTO departments VALUES (10, '技术部', '北京');
INSERT INTO departments VALUES (20, '销售部', '上海');

INSERT INTO employees VALUES (1, '张', '明', 'zhang.ming@company.com', DATE '2020-01-15', 15000, 10, '软件工程师');
INSERT INTO employees VALUES (2, '李', '华', 'li.hua@company.com', DATE '2019-03-20', 12000, 20, '销售经理');

COMMIT;

3. 查询测试

# 执行测试查询
SELECT e.first_name, e.last_name, e.salary, d.department_name
FROM employees e, departments d
WHERE e.department_id = d.department_id;

# 测试显示可能为:
FIRST_NAME
--------------------------------------------------
LAST_NAME					       SALARY
-------------------------------------------------- ----------
DEPARTMENT_NAME
--------------------------------------------------
张
明                                                      15000
技术部

李
华                                                      12000
销售部

FIRST_NAME
--------------------------------------------------
LAST_NAME					       SALARY
-------------------------------------------------- ----------
DEPARTMENT_NAME
--------------------------------------------------

不用担心,这是每行显示宽度引起的,将其设置大一点就好了:

# 将每行显示宽度从默认的 80 字符增加到 200 字符,让所有字段能在一行内显示完整
SET LINESIZE 200
# 设置每页显示 50 行,避免了在少量数据时就"翻页"导致的字段名重复显示
SET PAGESIZE 50
# 再次执行查询语句结果

FIRST_NAME					   LAST_NAME						  SALARY DEPARTMENT_NAME
-------------------------------------------------- -------------------------------------------------- ---------- --------------------------------------------------
张                              明                                 15000 技术部
李                              华                                 12000 销售部

4. 可选配置

1)永久保存设置(可选)

如果您想每次启动 SQL*Plus 都自动应用这些设置,可以创建登录脚本:

# 切换到oracle用户
su - oracle

# 创建登录脚本
vim ~/.sqlplus/sqlplus_login.sql

# 添加以下内容:
-- 优化显示设置
SET LINESIZE 200
SET PAGESIZE 50
SET WRAP ON
SET VERIFY OFF
COLUMN product FORMAT A30

# 然后在~/.bash_profile中添加:
export SQLPATH=$HOME/.sqlplus

2)永久设置环境变量

# 编辑oracle用户的配置文件
vim ~/.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:$LD_LIBRARY_PATH
export NLS_LANG="SIMPLIFIED CHINESE_CHINA.AL32UTF8"

# 使配置生效
source ~/.bash_profile

# 现在测试
sqlplus / as sysdba
# 直接就能登录成功

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐