CentOS 系统安装 Oracle 数据库完整指南
在 CentOS 7/8 系统上安装 Oracle 数据库的完整流程。内容包括系统环境准备、依赖包安装、用户与目录配置、内核参数调整、下载安装包、环境变量设置、图形化安装步骤、数据库验证、监听器与防火墙配置、开机自启动设置以及远程连接测试。文章修正了常见命令错误,合并了重复的网络配置章节,提供了详细的配置文件示例和故障排查建议,适用于运维人员快速部署 Oracle 数据库环境。

在 CentOS 7/8 系统上安装 Oracle 数据库的完整流程。内容包括系统环境准备、依赖包安装、用户与目录配置、内核参数调整、下载安装包、环境变量设置、图形化安装步骤、数据库验证、监听器与防火墙配置、开机自启动设置以及远程连接测试。文章修正了常见命令错误,合并了重复的网络配置章节,提供了详细的配置文件示例和故障排查建议,适用于运维人员快速部署 Oracle 数据库环境。

确保系统是最新的:
sudo yum update -y
安装 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
Oracle 数据库需要专用的用户和组:
sudo groupadd oinstall
sudo groupadd dba
sudo useradd -g oinstall -G dba oracle
sudo passwd oracle
编辑 /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
编辑 /etc/security/limits.conf 文件,添加以下内容:
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
编辑 /etc/pam.d/login 文件,添加以下内容:
session required pam_limits.so
创建 Oracle 安装目录并设置权限:
sudo mkdir -p /u01/app/oracle
sudo chown -R oracle:oinstall /u01
sudo chmod -R 775 /u01
访问 Oracle 官方网站下载适用于 Linux x86_64 的 Oracle 数据库安装包(如 Oracle 19c)。
将下载的安装包上传到 CentOS 服务器的 /u01/app/oracle 目录。
解压安装包:
cd /u01/app/oracle
unzip LINUX.X64_193000_db_home.zip
.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
使环境变量生效:
source ~/.bash_profile
以 oracle 用户运行安装程序:
cd $ORACLE_HOME
./runInstaller
ORACLE_BASE 和 ORACLE_HOME 路径。/u01/app/oraInventory。orcl)和 SID(如 orcl)。安装完成后,按照提示以 root 用户运行以下脚本:
sudo /u01/app/oraInventory/orainstRoot.sh
sudo /u01/app/oracle/product/19.0.0/dbhome_1/root.sh
以 oracle 用户启动数据库:
sqlplus / as sysdba
SQL> startup
SQL> select status from v$instance;
如果显示 OPEN,则表示数据库已成功启动。
SQL> create table test(id number, name varchar2(50));
SQL> insert into test values (1, 'Oracle Test');
SQL> commit;
SQL> select * from test;
编辑 $ORACLE_HOME/network/admin/listener.ora 文件,配置监听器:
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)))
<服务器 IP 或主机名> 替换为服务器的实际 IP 地址或主机名。GLOBAL_DBNAME 和 SID_NAME 与数据库的实际名称一致。启动监听器:
lsnrctl start
检查监听器状态:
lsnrctl status
如果启用了防火墙,需要开放 Oracle 端口(如 1521):
sudo firewall-cmd --zone=public --add-port=1521/tcp --permanent
sudo firewall-cmd --reload
检查端口是否开放:
sudo firewall-cmd --zone=public --query-port=1521/tcp
在客户端和服务端配置 tnsnames.ora 文件。文件通常位于 $ORACLE_HOME/network/admin/tnsnames.ora。
ORCL =(DESCRIPTION =(ADDRESS =(PROTOCOL = TCP)(HOST = <服务器 IP 或主机名>)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = orcl)))
编辑 $ORACLE_HOME/network/admin/sqlnet.ora 文件,确保以下配置:
NAMES.DIRECTORY_PATH=(TNSNAMES, EZCONNECT)
SQLNET.AUTHENTICATION_SERVICES=(NTS)
编辑 /etc/oratab 文件,将 N 改为 Y:
orcl:/u01/app/oracle/product/19.0.0/dbhome_1:Y
创建 /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
sudo systemctl daemon-reload
sudo systemctl enable oracle
sudo systemctl start oracle
在客户端使用 SQL*Plus 测试远程连接:
sqlplus username/password@ORCL
例如:
sqlplus system/oracle@ORCL
在客户端使用 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)
$ORACLE_HOME/cfgtoollogs)。tnsnames.ora 和 sqlnet.ora 文件。SELECT * FROM v$listener_network;SELECT name,value FROM v$parameter WHERE name ='service_names';$ORACLE_HOME/network/log/listener.log,客户端连接日志 $ORACLE_HOME/network/log/sqlnet.log。
微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online
通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online
将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online