1. 项目概述
作为一名在数据库领域摸爬滚打多年的老DBA,我深知Oracle在Linux系统上的安装过程对新手来说有多棘手。不同于Windows的一键安装包,Linux环境下需要处理各种依赖关系、内核参数调整和权限配置。这篇教程将用最直白的方式,手把手带你完成从零开始的完整安装过程。
注意:本教程基于Oracle 19c和CentOS 7/8编写,但核心步骤适用于大多数Linux发行版和Oracle 11g/12c/21c版本
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境准备
2.1 硬件需求检查
在开始前,建议先确认服务器配置是否达标:
- 内存:最小4GB(生产环境建议16GB+)
- 交换空间:内存1.5-2倍(可用
free -h查看) - 磁盘空间:
- /tmp目录至少1GB
- 安装目录建议50GB+
- 数据文件目录根据业务需求
bash复制# 检查内存和交换空间
free -h
# 检查磁盘空间
df -h
2.2 操作系统配置
2.2.1 关闭SELinux
编辑/etc/selinux/config文件:
bash复制SELINUX=disabled
执行setenforce 0立即生效
2.2.2 防火墙配置
开放Oracle监听端口(默认1521):
bash复制firewall-cmd --permanent --add-port=1521/tcp
firewall-cmd --reload
2.2.3 安装依赖包
CentOS/RHEL:
bash复制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
3. Oracle软件安装
3.1 创建Oracle用户和组
bash复制groupadd oinstall
groupadd dba
useradd -g oinstall -G dba oracle
passwd oracle
3.2 配置内核参数
编辑/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
执行sysctl -p生效
3.3 配置用户环境变量
编辑/home/oracle/.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=$PATH:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
3.4 安装包解压与运行
bash复制unzip linuxx64_193000_db_home.zip -d $ORACLE_HOME
cd $ORACLE_HOME
./runInstaller
常见问题:如果图形界面无法启动,可添加
-ignorePrereq -silent参数进行静默安装
4. 数据库创建与配置
4.1 使用DBCA创建数据库
bash复制dbca -silent -createDatabase \
-templateName General_Purpose.dbc \
-gdbname orcl \
-sid orcl \
-responseFile NO_VALUE \
-characterSet AL32UTF8 \
-memoryPercentage 40 \
-emConfiguration LOCAL \
-datafileDestination /u01/oradata \
-redoLogFileSize 200 \
-recoveryAreaDestination /u01/fra \
-storageType FS \
-sampleSchema true
4.2 监听器配置
bash复制netca -silent -responseFile $ORACLE_HOME/assistants/netca/netca.rsp
4.3 服务自启动配置
创建/etc/init.d/oracle服务脚本:
bash复制#!/bin/bash
# chkconfig: 345 99 10
case "$1" in
start)
su - oracle -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME"
;;
stop)
su - oracle -c "$ORACLE_HOME/bin/dbshut $ORACLE_HOME"
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
exit 0
设置权限并加入服务:
bash复制chmod 755 /etc/init.d/oracle
chkconfig --add oracle
5. 安装后验证与优化
5.1 基础连接测试
bash复制sqlplus / as sysdba
SQL> select status from v$instance;
5.2 关键参数检查
sql复制-- 检查内存参数
show parameter sga_target
show parameter pga_aggregate_target
-- 检查字符集
select * from nls_database_parameters where parameter like '%CHARACTERSET%';
5.3 性能优化建议
- 调整SGA/PGA大小(通常SGA占内存60%,PGA占20%)
- 开启AWR自动快照:
sql复制exec dbms_workload_repository.modify_snapshot_settings(interval=>60);
- 配置自动扩展表空间:
sql复制ALTER DATABASE DATAFILE '/u01/oradata/orcl/system01.dbf' AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED;
6. 常见问题排查
6.1 ORA-12514: TNS监听程序错误
检查$ORACLE_HOME/network/admin/listener.ora配置:
bash复制LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = your_hostname)(PORT = 1521))
)
)
6.2 ORA-01034: ORACLE not available
检查实例状态:
bash复制ps -ef | grep pmon
sqlplus / as sysdba
startup
6.3 图形界面安装卡死
改用静默安装模式:
bash复制./runInstaller -silent -responseFile /path/to/response.rsp
7. 维护与备份基础
7.1 日常检查脚本
创建/home/oracle/check_db.sh:
bash复制#!/bin/bash
# 检查实例状态
sqlplus -s / as sysdba << EOF
set heading off
select 'Instance Status: '||status from v\$instance;
select 'Tablespace Usage:' from dual;
select tablespace_name,round(used_percent)||'%' from dba_tablespace_usage_metrics;
exit
EOF
7.2 RMAN基础备份
bash复制rman target /
RMAN> configure controlfile autobackup on;
RMAN> configure retention policy to re
