1. 为什么选择在Linux上安装Oracle数据库?
作为一名在金融行业摸爬滚打多年的DBA,我见证了太多企业从Windows迁移到Linux平台的过程。Oracle数据库在Linux上的性能表现通常比Windows高出15-20%,特别是在高并发场景下。以某证券公司的交易系统为例,迁移到RHEL+Oracle 19c组合后,每秒交易处理能力从原来的3500笔提升到了4200笔。
Linux系统为Oracle提供了更纯净的运行环境,没有图形界面的资源消耗,也没有频繁的系统更新干扰。更重要的是,绝大多数企业级应用都运行在Linux服务器上,这使得Linux成为Oracle数据库最理想的宿主操作系统。
注意:生产环境强烈建议使用Red Hat Enterprise Linux或Oracle Linux,本文以CentOS 7为例是因为其免费且与RHEL兼容性好。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 安装前的系统准备工作
2.1 硬件需求检查
在开始安装前,我们需要确保系统满足Oracle的最低硬件要求。执行以下命令检查硬件配置:
bash复制# 检查内存(建议至少4GB)
free -h
# 检查交换空间(物理内存的1.5-2倍)
swapon --show
# 检查磁盘空间(/目录至少15GB,/opt建议50GB以上)
df -h
# 检查CPU核心数(建议2核以上)
nproc
如果交换空间不足,可以通过以下命令扩展(以增加4GB交换空间为例):
bash复制sudo dd if=/dev/zero of=/swapfile bs=1G count=4
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile swap swap defaults 0 0' | sudo tee -a /etc/fstab
2.2 操作系统参数调优
Oracle数据库对Linux内核参数有特定要求,需要修改/etc/sysctl.conf文件:
bash复制# 编辑系统参数配置文件
sudo vi /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
应用修改后的参数:
bash复制sudo sysctl -p
2.3 创建Oracle用户和组
Oracle不建议使用root用户直接安装数据库,我们需要创建专用的用户和组:
bash复制sudo groupadd -g 54321 oinstall
sudo groupadd -g 54322 dba
sudo groupadd -g 54323 oper
sudo useradd -u 54321 -g oinstall -G dba,oper oracle
echo "oracle:your_password" | sudo chpasswd
设置Oracle用户的环境变量,编辑/home/oracle/.bash_profile文件:
bash复制export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19c/dbhome_1
export ORACLE_SID=orcl
export PATH=$PATH:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
3. Oracle 19c数据库软件安装
3.1 下载安装包并解压
从Oracle官网下载以下两个安装包:
- LINUX.X64_193000_db_home.zip
- LINUX.X64_193000_grid_home.zip
使用Oracle用户解压安装包:
bash复制mkdir -p /opt/oracle/product/19c/dbhome_1
unzip LINUX.X64_193000_db_home.zip -d /opt/oracle/product/19c/dbhome_1
3.2 图形化安装界面准备
由于我们使用的是无图形界面的Linux服务器,需要配置X11转发:
- 在本地电脑安装Xming等X11服务端
- 使用SSH连接时启用X11转发:
bash复制ssh -X oracle@your_server_ip
验证X11转发是否成功:
bash复制xclock
如果能看到时钟窗口弹出,说明配置正确。
3.3 运行安装程序
进入解压目录启动安装向导:
bash复制cd /opt/oracle/product/19c/dbhome_1
./runInstaller
安装过程中几个关键选择:
- 配置选项:选择"仅安装数据库软件"
- 数据库版本:选择"企业版"
- 安装位置:使用我们预设的ORACLE_HOME路径
- 操作系统组:oinstall
安装完成后,需要用root权限执行两个配置脚本:
bash复制sudo /opt/oracle/oraInventory/orainstRoot.sh
sudo /opt/oracle/product/19c/dbhome_1/root.sh
4. 创建Oracle数据库实例
4.1 使用DBCA创建数据库
Database Configuration Assistant (DBCA) 是Oracle提供的数据库创建工具:
bash复制dbca -silent -createDatabase \
-templateName General_Purpose.dbc \
-gdbname orcl -sid orcl -responseFile NO_VALUE \
-characterSet AL32UTF8 \
-sysPassword oracle_123 \
-systemPassword oracle_123 \
-createAsContainerDatabase false \
-storageType FS \
-datafileDestination /opt/oracle/oradata \
-enableArchive true \
-memoryPercentage 40 \
-recoveryAreaDestination /opt/oracle/fast_recovery_area \
-recoveryAreaSize 8192 \
-redoLogFileSize 200
4.2 数据库初始化参数调整
创建完成后,建议调整以下关键参数:
sql复制ALTER SYSTEM SET processes=500 SCOPE=spfile;
ALTER SYSTEM SET sessions=555 SCOPE=spfile;
ALTER SYSTEM SET transactions=610 SCOPE=spfile;
ALTER SYSTEM SET open_cursors=300 SCOPE=spfile;
ALTER SYSTEM SET db_files=200 SCOPE=spfile;
重启数据库使参数生效:
sql复制SHUTDOWN IMMEDIATE;
STARTUP;
5. 安装后的配置与验证
5.1 配置监听器
Oracle网络服务需要通过监听器来建立客户端连接。编辑$ORACLE_HOME/network/admin/listener.ora:
bash复制LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = your_hostname)(PORT = 1521))
)
)
启动监听服务:
bash复制lsnrctl start
5.2 验证数据库连接
使用SQL*Plus测试数据库连接:
bash复制sqlplus sys/oracle_123@orcl as sysdba
执行简单的查询验证数据库状态:
sql复制SELECT name, open_mode, database_status FROM v$database;
SELECT * FROM v$version;
5.3 设置开机自启动
创建/etc/init.d/oracle服务脚本:
bash复制#!/bin/sh
# chkconfig: 345 99 10
# description: Oracle auto start-stop script.
case "$1" in
'start')
su - oracle -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME"
su - oracle -c "$ORACLE_HOME/bin/lsnrctl start"
;;
'stop')
su - oracle -c "$ORACLE_HOME/bin/dbshut $ORACLE_HOME"
su - oracle -c "$ORACLE_HOME/bin/lsnrctl stop"
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
;;
esac
exit 0
设置执行权限并配置开机启动:
bash复制sudo chmod 755 /etc/init.d/oracle
sudo chkconfig --add oracle
6. 常见问题与解决方案
6.1 ORA-00845: MEMORY_TARGET not supported
这个错误通常是因为/dev/shm空间不足导致的。解决方案:
bash复制# 检查当前大小
df -h /dev/shm
# 临时调整大小
sudo mount -o remount,size=4G /dev/shm
# 永久生效需要修改/etc/fstab
tmpfs /dev/shm tmpfs defaults,size=4G 0 0
6.2 图形界面无法启动
如果遇到"Unable to verify the graphical display"错误,可以尝试:
- 确保X11转发配置正确
- 或者使用静默安装模式:
bash复制./runInstaller -silent -responseFile /path/to/response.rsp
6.3 数据库创建失败
检查日志文件定位问题:
bash复制cd $ORACLE_BASE/cfgtoollogs/dbca/orcl
tail -100 trace.log
常见原因包括:
- 磁盘空间不足
- 内存参数设置不合理
- 权限问题
7. 性能优化建议
7.1 内存分配策略
对于8GB内存的服务器,建议配置:
sql复制ALTER SYSTEM SET memory_target=4G SCOPE=spfile;
ALTER SYSTEM SET sga_target=3G SCOPE=spfile;
ALTER SYSTEM SET pga_aggregate_target=1G SCOPE=spfile;
7.2 表空间规划
创建专用的表空间而不是全部使用SYSTEM表空间:
sql复制CREATE TABLESPACE apps_data
DATAFILE '/opt/oracle/oradata/orcl/apps_data01.dbf'
SIZE 1G AUTOEXTEND ON NEXT 100M MAXSIZE 10G;
CREATE TEMPORARY TABLESPACE temp_temp
TEMPFILE '/opt/oracle/oradata/orcl/temp_temp01.dbf'
SIZE 500M AUTOEXTEND ON NEXT 50M MAXSIZE 2G;
7.3 定期维护任务
设置自动统计信息收集:
sql复制BEGIN
DBMS_AUTO_TASK_ADMIN.ENABLE(
client_name => 'auto optimizer stats collection',
operation => NULL,
window_name => NULL);
END;
/
配置自动备份(需要先配置RMAN):
bash复制rman target /
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
CONFIGURE CONTROLFILE AUTOBACKUP ON;
