在 CentOS 上安装 Oracle 数据库

server/2025/3/16 3:16:59/


文章目录

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

确保系统是最新的:

sudo yum update -y

1.3 安装必要的依赖包

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

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 数据库需要专用的用户和组:

sudo groupadd oinstall
sudo groupadd dba
sudo useradd -g oinstall -G dba oracle
sudo passwd oracle

1.5 配置内核参数

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

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

应用更改:

sudo sysctl -p

1.6 配置用户限制

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

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 文件,添加以下内容:

session required pam_limits.so

1.8 创建 Oracle 安装目录

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

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 解压安装包

解压安装包:

cd /u01/app/oracle
unzip LINUX.X64_193000_db_home.zip

3. 配置 Oracle 环境变量

在这里插入图片描述

3.1 编辑 .bash_profile

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

vi ~/.bash_profile

添加以下内容:

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 应用环境变量

使环境变量生效:

source ~/.bash_profile

4. 安装 Oracle 数据库

4.1 启动安装程序

oracle 用户运行安装程序:

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 用户运行以下脚本:

sudo /u01/app/oraInventory/orainstRoot.sh
sudo /u01/app/oracle/product/19.0.0/dbhome_1/root.sh

5. 验证安装

在这里插入图片描述

5.1 启动数据库

oracle 用户启动数据库

sqlplus / as sysdba
SQL> startup

5.2 检查数据库状态

SQL> select status from v$instance;

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

5.3 创建测试表

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 文件,配置监听器:

LISTENER =(DESCRIPTION_LIST =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)))

启动监听器:

lsnrctl start

6.2 检查监听器状态

lsnrctl status

7. 配置防火墙

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

sudo firewall-cmd --zone=public --add-port=1521/tcp --permanent
sudo firewall-cmd --reload

在这里插入图片描述

8. 配置开机自启动

8.1 创建启动脚本

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

orcl:/u01/app/oracle/product/19.0.0/dbhome_1:Y

8.2 创建服务文件

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

[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 启用服务

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 目录下。编辑该文件,确保监听器配置如下:

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 启动或重启监听器

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

lsnrctl start

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

lsnrctl reload

1.3 检查监听器状态

lsnrctl status

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


2. 配置网络服务名

2.1 在服务器端配置 tnsnames.ora

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

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

例如:

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 上开放端口
sudo firewall-cmd --zone=public --add-port=1521/tcp --permanent
sudo firewall-cmd --reload
检查端口是否开放
sudo firewall-cmd --zone=public --query-port=1521/tcp

4. 配置 Oracle Net 服务

4.1 编辑 sqlnet.ora 文件

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

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

5. 测试远程连接

5.1 使用 SQL*Plus 测试连接

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

sqlplus username/password@ORCL

例如:

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

5.2 使用 TNSPING 测试连接

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

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 查询检查:

SELECT * FROM v$listener_network;

6.2 检查数据库服务名

确保数据库服务名正确。可以通过以下 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 配置正确:

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 官方文档。


http://www.ppmy.cn/server/175310.html

相关文章

npm install vue-router 无法解析

npm install vue-rotuer报错&#xff0c;是因为vue和vue-router版本的问题&#xff0c;本人的项目是vue2&#xff0c;但是本人又安装了vue-router4的最新版本的路由&#xff0c;呵呵呵&#xff0c;真的傻到家了&#xff0c;肯定会报错了&#xff0c;vue2对应的vue-router为3的版…

比特币中的相关技术

1.区块链&#xff1a;公共大账本 比特币的核心是一个叫区块链的技术。你可以把它想象成一个所有人都能看的“公共记账本”。比如你转钱给朋友&#xff0c;这笔交易就会被记在这个账本上&#xff0c;而且永久保存、无法篡改。 区块&#xff1a;账本每一页记录约10分钟的交易&am…

用Deep seek解析ChatGPT打造数字虚拟人

项目发起&#xff1a;云端源想 项目描述 GPT带来的智能化变革正在推动虚拟数字人产业迅猛发展。在AI技术的赋能下&#xff0c;增强数字虚拟人已经具备了多模态交互能力。数字人创作已经迈入AIGC时代&#xff0c;数字人产业也进入了蓬勃发展期。本课程以项目实战的方式&#x…

面向工业与汽车领域的高安全可靠MCU——AS32X601系列芯片解析

AS32X601系列是国科安芯研发的32位RISC-V架构MCU&#xff0c;专为高安全性、高可靠性场景设计&#xff0c;覆盖工业控制、汽车电子等关键领域。其核心优势在于通过硬件级安全机制、多重冗余设计及功能安全认证&#xff0c;满足复杂环境下的严苛需求。 关键参数&#xff1a; 内…

C++泛型编程

感谢哔哩哔哩UP”开发者LaoJ“&#xff0c;以下是听课记录~ 模板是C实现泛型编程的手段&#xff0c;同一段代码逻辑可以接受多个类型的参数 无论是函数模板还是类模板&#xff0c;在编码后&#xff0c;需要分文件时&#xff0c;将其声明和定义放进.hpp文件中。不要将声明放.h…

247g 的工业级电调,如何让无人机飞得更 “聪明“?——STONE 200A-M 深度测评

一、轻量化设计背后的技术取舍 当拿到 STONE 200A-M 时&#xff0c;247g 的重量让人意外 —— 这个接近传统 200A 电调 70% 的重量&#xff0c;源自 1205624.5mm 的紧凑结构&#xff08;0.1mm 公差控制&#xff09;。实测装机显示&#xff0c;相比同规格产品&#xff0c;其体积…

python基础内置变量

1. __name__: 作用&#xff1a;用于标识当前模块的名称。当一个 Python 文件被直接运行时&#xff0c;__name__ 的值为 "__main__"&#xff1b;当该文件作为模块被其他文件导入时&#xff0c;__name__ 的值为该文件的文件名&#xff08;不包含 .py 后缀&#xff09;…

AI数字人源码开发---SaaS化源码部署+PC+小程序一体化

#数字人#数字人分身#123数字人#数字人分身源码部署搭建 AI数字人源码开发步骤 确定功能需求&#xff1a;首先确定需要实现的功能和特性&#xff0c;包括语音识别、自然语言处理、人脸识别等功能。这些功能将构成AI数字人的核心功能。 开发AI数字人源码&#xff1a;使用合适的…