
文章目录
-
- [**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 应用环境变量)
- [**3.1 编辑 `.bash_profile`**](#3.1 编辑
- [**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 检查监听器状态)
- [**1.1 编辑 `listener.ora` 文件**](#1.1 编辑
- [**2. 配置网络服务名**](#2. 配置网络服务名)
-
- [**2.1 在服务器端配置 `tnsnames.ora`**](#2.1 在服务器端配置
tnsnames.ora
) - [**2.2 在客户端配置 `tnsnames.ora`**](#2.2 在客户端配置
tnsnames.ora
)
- [**2.1 在服务器端配置 `tnsnames.ora`**](#2.1 在服务器端配置
- [**3. 配置防火墙**](#3. 配置防火墙)
-
- [**3.1 开放 Oracle 监听端口**](#3.1 开放 Oracle 监听端口)
-
- [**在 CentOS 7/8 上开放端口**](#在 CentOS 7/8 上开放端口)
- **检查端口是否开放**
- [**4. 配置 Oracle Net 服务**](#4. 配置 Oracle Net 服务)
-
- [**4.1 编辑 `sqlnet.ora` 文件**](#4.1 编辑
sqlnet.ora
文件)
- [**4.1 编辑 `sqlnet.ora` 文件**](#4.1 编辑
- [**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 安装步骤
- 选择安装选项 :
- 选择"创建和配置数据库"。
- 选择系统类 :
- 选择"服务器类"。
- 选择安装类型 :
- 选择"高级安装"。
- 选择产品语言 :
- 选择所需的语言(如英文)。
- 选择数据库版本 :
- 选择"企业版"。
- 指定安装位置 :
- 确认
ORACLE_BASE
和ORACLE_HOME
路径。
- 确认
- 创建产品清单 :
- 使用默认路径
/u01/app/oraInventory
。
- 使用默认路径
- 配置类型 :
- 选择"单实例数据库安装"。
- 选择数据库配置 :
- 选择"通用数据库"。
- 指定数据库标识符 :
- 输入全局数据库名称(如
orcl
)和 SID(如orcl
)。
- 输入全局数据库名称(如
- 配置选项 :
- 使用默认配置。
- 管理选项 :
- 选择"不使用 EM Express"。
- 数据库凭据 :
- 选择"使用不同的管理口令",并设置密码。
- 存储选项 :
- 选择"文件系统"。
- 数据库文件位置 :
- 使用默认路径。
- 恢复选项 :
- 选择"不启用自动备份"。
- Schema 密码 :
- 选择"对所有账户使用相同的口令"。
- 先决条件检查 :
- 确保所有检查通过。
- 摘要 :
- 确认安装信息,点击"安装"。
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.ora
和sqlnet.ora
文件。
在 Oracle 数据库中配置远程访问需要完成以下几个步骤:
- 配置监听器:确保监听器能够接受远程连接。
- 配置网络服务名 :在客户端和服务器端配置
tnsnames.ora
文件。 - 配置防火墙:开放 Oracle 数据库的监听端口(默认是 1521)。
- 配置 Oracle Net 服务 :确保
sqlnet.ora
文件配置正确。 - 测试远程连接:使用 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_DBNAME
和SID_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
- 将
username
和password
替换为实际的数据库用户名和密码。 - 将
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_listener
和 remote_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 官方文档。