在 CentOS 上安装 Oracle 数据库

文章目录

    • [**1. 系统准备**](#1. 系统准备)
      • [**1.1 检查系统要求**](#1.1 检查系统要求)
      • [**1.2 更新系统**](#1.2 更新系统)
      • [**1.3 安装必要的依赖包**](#1.3 安装必要的依赖包)
      • [**1.4 创建 Oracle 用户和组**](#1.4 创建 Oracle 用户和组)
      • [**1.5 配置内核参数**](#1.5 配置内核参数)
      • [**1.6 配置用户限制**](#1.6 配置用户限制)
      • [**1.7 配置 PAM 模块**](#1.7 配置 PAM 模块)
      • [**1.8 创建 Oracle 安装目录**](#1.8 创建 Oracle 安装目录)
    • [**2. 下载 Oracle 数据库安装包**](#2. 下载 Oracle 数据库安装包)
      • [**2.1 访问 Oracle 官方网站**](#2.1 访问 Oracle 官方网站)
      • [**2.2 上传安装包到服务器**](#2.2 上传安装包到服务器)
      • [**2.3 解压安装包**](#2.3 解压安装包)
    • [**3. 配置 Oracle 环境变量**](#3. 配置 Oracle 环境变量)
      • [**3.1 编辑 `.bash_profile`**](#3.1 编辑 .bash_profile)
      • [**3.2 应用环境变量**](#3.2 应用环境变量)
    • [**4. 安装 Oracle 数据库**](#4. 安装 Oracle 数据库)
      • [**4.1 启动安装程序**](#4.1 启动安装程序)
      • [**4.2 安装步骤**](#4.2 安装步骤)
      • [**4.3 运行配置脚本**](#4.3 运行配置脚本)
    • [**5. 验证安装**](#5. 验证安装)
      • [**5.1 启动数据库**](#5.1 启动数据库)
      • [**5.2 检查数据库状态**](#5.2 检查数据库状态)
      • [**5.3 创建测试表**](#5.3 创建测试表)
    • [**6. 配置监听器**](#6. 配置监听器)
      • [**6.1 启动监听器**](#6.1 启动监听器)
      • [**6.2 检查监听器状态**](#6.2 检查监听器状态)
    • [**7. 配置防火墙**](#7. 配置防火墙)
    • [**8. 配置开机自启动**](#8. 配置开机自启动)
      • [**8.1 创建启动脚本**](#8.1 创建启动脚本)
      • [**8.2 创建服务文件**](#8.2 创建服务文件)
      • [**8.3 启用服务**](#8.3 启用服务)
    • [**9. 完成**](#9. 完成)
    • [**1. 配置监听器**](#1. 配置监听器)
      • [**1.1 编辑 `listener.ora` 文件**](#1.1 编辑 listener.ora 文件)
      • [**1.2 启动或重启监听器**](#1.2 启动或重启监听器)
      • [**1.3 检查监听器状态**](#1.3 检查监听器状态)
    • [**2. 配置网络服务名**](#2. 配置网络服务名)
      • [**2.1 在服务器端配置 `tnsnames.ora`**](#2.1 在服务器端配置 tnsnames.ora)
      • [**2.2 在客户端配置 `tnsnames.ora`**](#2.2 在客户端配置 tnsnames.ora)
    • [**3. 配置防火墙**](#3. 配置防火墙)
      • [**3.1 开放 Oracle 监听端口**](#3.1 开放 Oracle 监听端口)
    • [**4. 配置 Oracle Net 服务**](#4. 配置 Oracle Net 服务)
      • [**4.1 编辑 `sqlnet.ora` 文件**](#4.1 编辑 sqlnet.ora 文件)
    • [**5. 测试远程连接**](#5. 测试远程连接)
      • [**5.1 使用 SQL*Plus 测试连接**](#5.1 使用 SQL*Plus 测试连接)
      • [**5.2 使用 TNSPING 测试连接**](#5.2 使用 TNSPING 测试连接)
    • [**6. 其他注意事项**](#6. 其他注意事项)
      • [**6.1 检查数据库监听地址**](#6.1 检查数据库监听地址)
      • [**6.2 检查数据库服务名**](#6.2 检查数据库服务名)
      • [**6.3 检查客户端和服务器的时间同步**](#6.3 检查客户端和服务器的时间同步)
      • [**6.4 检查日志文件**](#6.4 检查日志文件)
    • [**7. 高级配置(可选)**](#7. 高级配置(可选))
      • [**7.1 配置动态服务注册**](#7.1 配置动态服务注册)
      • [**7.2 配置 SSL/TLS 加密**](#7.2 配置 SSL/TLS 加密)

1. 系统准备

1.1 检查系统要求

  • 操作系统:CentOS 7 或 CentOS 8(推荐 CentOS 7)。
  • 内存:至少 2 GB RAM(建议 4 GB 或更高)。
  • 磁盘空间:至少 10 GB 用于安装,建议 20 GB 或更多。
  • Swap 空间
    • 如果内存为 1-2 GB,Swap 应为内存的 1.5 倍。
    • 如果内存为 2-16 GB,Swap 应与内存大小相同。
    • 如果内存超过 16 GB,Swap 可以为 16 GB。

1.2 更新系统

确保系统是最新的:

bash 复制代码
sudo yum update -y

1.3 安装必要的依赖包

安装 Oracle 数据库所需的依赖包:

bash 复制代码
sudo yum install -y binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel libXi libXtst make sysstat unixODBC unixODBC-devel

1.4 创建 Oracle 用户和组

Oracle 数据库需要专用的用户和组:

bash 复制代码
sudo groupadd oinstall
sudo groupadd dba
sudo useradd -g oinstall -G dba oracle
sudo passwd oracle

1.5 配置内核参数

编辑 /etc/sysctl.conf 文件,添加以下内容:

bash 复制代码
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

应用更改:

bash 复制代码
sudo sysctl -p

1.6 配置用户限制

编辑 /etc/security/limits.conf 文件,添加以下内容:

bash 复制代码
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240

1.7 配置 PAM 模块

编辑 /etc/pam.d/login 文件,添加以下内容:

bash 复制代码
session required pam_limits.so

1.8 创建 Oracle 安装目录

创建 Oracle 安装目录并设置权限:

bash 复制代码
sudo mkdir -p /u01/app/oracle
sudo chown -R oracle:oinstall /u01
sudo chmod -R 775 /u01

2. 下载 Oracle 数据库安装包

2.1 访问 Oracle 官方网站

  • 访问 Oracle 官方网站
  • 下载适用于 Linux x86_64 的 Oracle 数据库安装包(如 Oracle 19c)。

2.2 上传安装包到服务器

将下载的安装包上传到 CentOS 服务器的 /u01/app/oracle 目录。

2.3 解压安装包

解压安装包:

bash 复制代码
cd /u01/app/oracle
unzip LINUX.X64_193000_db_home.zip

3. 配置 Oracle 环境变量

3.1 编辑 .bash_profile

oracle 用户登录,编辑 .bash_profile 文件:

bash 复制代码
vi ~/.bash_profile

添加以下内容:

bash 复制代码
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.0.0/dbhome_1
export ORACLE_SID=orcl
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib

3.2 应用环境变量

使环境变量生效:

bash 复制代码
source ~/.bash_profile

4. 安装 Oracle 数据库

4.1 启动安装程序

oracle 用户运行安装程序:

bash 复制代码
cd $ORACLE_HOME
./runInstaller

4.2 安装步骤

  1. 选择安装选项
    • 选择"创建和配置数据库"。
  2. 选择系统类
    • 选择"服务器类"。
  3. 选择安装类型
    • 选择"高级安装"。
  4. 选择产品语言
    • 选择所需的语言(如英文)。
  5. 选择数据库版本
    • 选择"企业版"。
  6. 指定安装位置
    • 确认 ORACLE_BASEORACLE_HOME 路径。
  7. 创建产品清单
    • 使用默认路径 /u01/app/oraInventory
  8. 配置类型
    • 选择"单实例数据库安装"。
  9. 选择数据库配置
    • 选择"通用数据库"。
  10. 指定数据库标识符
    • 输入全局数据库名称(如 orcl)和 SID(如 orcl)。
  11. 配置选项
    • 使用默认配置。
  12. 管理选项
    • 选择"不使用 EM Express"。
  13. 数据库凭据
    • 选择"使用不同的管理口令",并设置密码。
  14. 存储选项
    • 选择"文件系统"。
  15. 数据库文件位置
    • 使用默认路径。
  16. 恢复选项
    • 选择"不启用自动备份"。
  17. Schema 密码
    • 选择"对所有账户使用相同的口令"。
  18. 先决条件检查
    • 确保所有检查通过。
  19. 摘要
    • 确认安装信息,点击"安装"。

4.3 运行配置脚本

安装完成后,按照提示以 root 用户运行以下脚本:

bash 复制代码
sudo /u01/app/oraInventory/orainstRoot.sh
sudo /u01/app/oracle/product/19.0.0/dbhome_1/root.sh

5. 验证安装

5.1 启动数据库

oracle 用户启动数据库:

bash 复制代码
sqlplus / as sysdba
SQL> startup

5.2 检查数据库状态

bash 复制代码
SQL> select status from v$instance;

如果显示 OPEN,则表示数据库已成功启动。

5.3 创建测试表

bash 复制代码
SQL> create table test (id number, name varchar2(50));
SQL> insert into test values (1, 'Oracle Test');
SQL> commit;
SQL> select * from test;

6. 配置监听器

6.1 启动监听器

编辑 $ORACLE_HOME/network/admin/listener.ora 文件,配置监听器:

bash 复制代码
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
  )

启动监听器:

bash 复制代码
lsnrctl start

6.2 检查监听器状态

bash 复制代码
lsnrctl status

7. 配置防火墙

如果启用了防火墙,需要开放 Oracle 端口(如 1521):

bash 复制代码
sudo firewall-cmd --zone=public --add-port=1521/tcp --permanent
sudo firewall-cmd --reload

8. 配置开机自启动

8.1 创建启动脚本

编辑 /etc/oratab 文件,将 N 改为 Y

bash 复制代码
orcl:/u01/app/oracle/product/19.0.0/dbhome_1:Y

8.2 创建服务文件

创建 /etc/systemd/system/oracle.service 文件,添加以下内容:

bash 复制代码
[Unit]
Description=Oracle Database Service
After=network.target

[Service]
Type=forking
User=oracle
Environment="ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1"
ExecStart=$ORACLE_HOME/bin/dbstart $ORACLE_HOME
ExecStop=$ORACLE_HOME/bin/dbshut $ORACLE_HOME
Restart=on-abort

[Install]
WantedBy=multi-user.target

8.3 启用服务

bash 复制代码
sudo systemctl daemon-reload
sudo systemctl enable oracle
sudo systemctl start oracle

9. 完成

至此,Oracle 数据库已在 CentOS 上成功安装并配置完成。你可以通过 SQL*Plus 或其他工具连接到数据库。


注意事项

  • 如果安装过程中遇到问题,请检查日志文件(位于 $ORACLE_HOME/cfgtoollogs)。
  • 确保系统时间和时区设置正确。
  • 如果需要远程访问,请配置 tnsnames.orasqlnet.ora 文件。

在 Oracle 数据库中配置远程访问需要完成以下几个步骤:

  1. 配置监听器:确保监听器能够接受远程连接。
  2. 配置网络服务名 :在客户端和服务器端配置 tnsnames.ora 文件。
  3. 配置防火墙:开放 Oracle 数据库的监听端口(默认是 1521)。
  4. 配置 Oracle Net 服务 :确保 sqlnet.ora 文件配置正确。
  5. 测试远程连接:使用 SQL*Plus 或其他工具测试远程连接。

以下是详细的配置步骤:


1. 配置监听器

1.1 编辑 listener.ora 文件

监听器配置文件 listener.ora 位于 $ORACLE_HOME/network/admin 目录下。编辑该文件,确保监听器配置如下:

bash 复制代码
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = <服务器IP或主机名>)(PORT = 1521))
    )
  )

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = orcl)  # 全局数据库名
      (ORACLE_HOME = /u01/app/oracle/product/19.0.0/dbhome_1)
      (SID_NAME = orcl)      # 数据库 SID
    )
  )
  • <服务器IP或主机名> 替换为服务器的实际 IP 地址或主机名。
  • 确保 GLOBAL_DBNAMESID_NAME 与数据库的实际名称一致。

1.2 启动或重启监听器

如果监听器未启动,使用以下命令启动:

bash 复制代码
lsnrctl start

如果监听器已启动,重启监听器以应用更改:

bash 复制代码
lsnrctl reload

1.3 检查监听器状态

bash 复制代码
lsnrctl status

确保监听器正在运行,并且能够看到数据库实例的信息。


2. 配置网络服务名

2.1 在服务器端配置 tnsnames.ora

编辑 $ORACLE_HOME/network/admin/tnsnames.ora 文件,添加以下内容:

bash 复制代码
ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = <服务器IP或主机名>)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)  # 全局数据库名
    )
  )
  • <服务器IP或主机名> 替换为服务器的实际 IP 地址或主机名。
  • 确保 SERVICE_NAME 与数据库的实际名称一致。

2.2 在客户端配置 tnsnames.ora

在客户端的 tnsnames.ora 文件中添加与服务器端相同的配置。文件通常位于以下路径:

  • Windows:%ORACLE_HOME%\network\admin\tnsnames.ora
  • Linux:$ORACLE_HOME/network/admin/tnsnames.ora

例如:

bash 复制代码
ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = <服务器IP或主机名>)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)  # 全局数据库名
    )
  )

3. 配置防火墙

3.1 开放 Oracle 监听端口

默认情况下,Oracle 监听器使用 1521 端口。确保防火墙允许该端口的流量。

在 CentOS 7/8 上开放端口
bash 复制代码
sudo firewall-cmd --zone=public --add-port=1521/tcp --permanent
sudo firewall-cmd --reload
检查端口是否开放
bash 复制代码
sudo firewall-cmd --zone=public --query-port=1521/tcp

4. 配置 Oracle Net 服务

4.1 编辑 sqlnet.ora 文件

编辑 $ORACLE_HOME/network/admin/sqlnet.ora 文件,确保以下配置:

bash 复制代码
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
SQLNET.AUTHENTICATION_SERVICES= (NTS)
  • NAMES.DIRECTORY_PATH 指定了名称解析的顺序。
  • SQLNET.AUTHENTICATION_SERVICES 指定了认证方式。

5. 测试远程连接

5.1 使用 SQL*Plus 测试连接

在客户端使用 SQL*Plus 测试远程连接:

bash 复制代码
sqlplus username/password@ORCL

例如:

bash 复制代码
sqlplus system/oracle@ORCL
  • usernamepassword 替换为实际的数据库用户名和密码。
  • ORCL 替换为 tnsnames.ora 中配置的网络服务名。

5.2 使用 TNSPING 测试连接

在客户端使用 tnsping 测试网络服务名配置:

bash 复制代码
tnsping ORCL

如果配置正确,会显示类似以下内容:

复制代码
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = <服务器IP或主机名>)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl)))
OK (10 msec)

6. 其他注意事项

6.1 检查数据库监听地址

确保数据库监听地址正确。可以通过以下 SQL 查询检查:

sql 复制代码
SELECT * FROM v$listener_network;

6.2 检查数据库服务名

确保数据库服务名正确。可以通过以下 SQL 查询检查:

sql 复制代码
SELECT name, value FROM v$parameter WHERE name = 'service_names';

6.3 检查客户端和服务器的时间同步

确保客户端和服务器的时间同步,否则可能会导致连接问题。

6.4 检查日志文件

如果连接失败,检查以下日志文件以获取更多信息:

  • 服务器端监听器日志:$ORACLE_HOME/network/log/listener.log
  • 客户端连接日志:$ORACLE_HOME/network/log/sqlnet.log

7. 高级配置(可选)

7.1 配置动态服务注册

如果使用动态服务注册,确保数据库参数 local_listenerremote_listener 配置正确:

sql 复制代码
ALTER SYSTEM SET LOCAL_LISTENER='(ADDRESS=(PROTOCOL=TCP)(HOST=<服务器IP或主机名>)(PORT=1521))';
ALTER SYSTEM SET REMOTE_LISTENER='<远程监听器地址>';

7.2 配置 SSL/TLS 加密

如果需要更高的安全性,可以配置 Oracle Net 使用 SSL/TLS 加密通信。具体步骤请参考 Oracle 官方文档。

相关推荐
NineData7 小时前
NineData智能数据管理平台新功能发布|2026年1-2月
数据库·sql·数据分析
回家路上绕了弯7 小时前
深入解析Agent Subagent架构:原理、协同逻辑与实战落地指南
分布式·后端
IvorySQL7 小时前
双星闪耀温哥华:IvorySQL 社区两项议题入选 PGConf.dev 2026
数据库·postgresql·开源
ma_king10 小时前
入门 java 和 数据库
java·数据库·后端
jiayou6414 小时前
KingbaseES 实战:审计追踪配置与运维实践
数据库
NineData1 天前
NineData 迁移评估功能正式上线
数据库·dba
用户962377954481 天前
DVWA 靶场实验报告 (High Level)
安全
NineData1 天前
数据库迁移总踩坑?用 NineData 迁移评估,提前识别所有兼容性风险
数据库·程序员·云计算
赵渝强老师1 天前
【赵渝强老师】PostgreSQL中表的碎片
数据库·postgresql
数据智能老司机1 天前
用于进攻性网络安全的智能体 AI——在 n8n 中构建你的第一个 AI 工作流
人工智能·安全·agent