RHEL 8 部署 Oracle 数据库
目录
一、目标与环境
-
操作系统:最小化安装的 RHEL8
-
数据库:Oracle Database 19c (19.3+)
-
方式:使用响应文件静默安装
二、Oracle安装包下载
官方下载地址(推荐)
-
Oracle 官方技术网站(免费下载)
-
网址:
https://www.oracle.com/database/technologies/oracle-database-software-downloads.html -
这是唯一官方的、合法的免费下载途径。
-
-
下载步骤:
-
访问上述网址。
-
找到 "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 为 OPEN,DATABASE_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
# 直接就能登录成功
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)