CentOS 下 Oracle 安装与基础配置步骤
一 环境准备
- 设置主机名并完善 hosts:执行 sudo hostnamectl set-hostname db,在 /etc/hosts 增加条目如:127.0.0.1 db。
- 安装常用依赖:sudo yum install -y binutils compat-libcap1 compat-libstdc+±33 gcc gcc-c++ glibc-devel ksh libaio-devel libgcc libstdc+±devel make sysstat unixODBC unixODBC-devel zip unzip xorg-x11-utils xauth。
- 创建 Oracle 用户与组:sudo groupadd oinstall;sudo groupadd dba;sudo useradd -g oinstall -G dba -m oracle;sudo passwd oracle。
- 创建目录并授权:sudo mkdir -p /u01/app/oracle;sudo chown -R oracle:oinstall /u01;sudo chmod -R 775 /u01。
- 内核与资源限制(示例为 19c 常用值,可按内存调优):
- /etc/sysctl.conf
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
kernel.shmmax = 2147483648
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
- /etc/profile(追加):
if [ “$USER” = “oracle” ]; then
if [ “$SHELL” = “/bin/ksh” ]; then ulimit -p 16384; ulimit -n 65536; else ulimit -u 16384 -n 65536; fi
fi
执行:source /etc/profile
- 防火墙与 SELinux(测试环境常用做法):
- 防火墙:sudo systemctl stop firewalld;sudo systemctl disable firewalld
- SELinux:sudo setenforce 0;sudo sed -i ‘s/^SELINUX=.*/SELINUX=permissive/’ /etc/selinux/config(生产环境建议保持 enforcing 并做端口/策略放行)
二 安装 Oracle 19c 两种方式
- 方式 A RPM 预安装包(推荐,便于依赖与内核参数自动配置)
- 上传并安装预安装包:sudo yum localinstall -y oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm
- 创建目录:sudo mkdir -p /u01/app/oracle/product/19.0.0/dbhome_1;sudo chown -R oracle:oinstall /u01
- 以 oracle 用户解压安装介质到目标目录(或使用响应文件静默安装)
- 图形界面:执行 ./runInstaller;静默示例:
./runInstaller -silent -responseFile /path/to/response_custom.rsp
- 安装完成后按提示以 root 执行 /u01/app/oracle/product/19.0.0/dbhome_1/root.sh
- 方式 B 官方 ZIP 包安装
- 以 oracle 用户上传并解压两个 ZIP 到 /u01/app/oracle/
- 图形界面:./runInstaller;静默示例:
./runInstaller -silent -responseFile /path/to/db_install.rsp
- 安装完成后以 root 执行 $ORACLE_HOME/root.sh
- 说明:19c 也可使用 yum 安装企业版 RPM(oracle-database-ee-19c),安装后可用 systemctl 管理;静默建库可用 dbca -silent。
三 监听与数据库实例配置
- 配置监听:以 oracle 用户执行 netca(图形界面)或编辑 $ORACLE_HOME/network/admin/listener.ora 手动配置;常用监听名 LISTENER,端口 1521。
- 创建数据库实例:
- 图形界面:执行 dbca
- 静默示例:
$ORACLE_HOME/bin/dbca -silent \
-createDatabase \
-templateName General_Purpose.dbc \
-gdbname orcl -sid orcl \
-responseFile NO_VALUE \
-characterSet AL32UTF8
- 客户端解析:编辑 $ORACLE_HOME/network/admin/tnsnames.ora,示例:
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = db)(PORT = 1521))
(CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = orcl))
)
- 启动与验证:
- 启动监听:lsnrctl start
- 登录实例:sqlplus / as sysdba
- 启动数据库:startup(若已自动启动可省略)
- 测试连接:sqlplus sys/口令@//db:1521/orcl as sysdba
四 环境变量与自启动
- Oracle 用户环境变量(写入 /home/oracle/.bashrc 或 /home/oracle/.bash_profile):
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.0.0/dbhome_1
export ORACLE_SID=orcl
export ORACLE_UNQNAME=orcl
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export LANG=en_US.UTF-8
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
执行:source ~/.bashrc
- 开机自启(RPM 安装的企业版 19c 可用 systemctl):
sudo systemctl enable --now oracle-database-ee-19c
- 手工自启脚本示例(/etc/init.d/oracle):
#!/bin/bash
. /home/oracle/.bashrc
case “$1” in
start)
lsnrctl start
sqlplus / as sysdba <<EOF
startup
exit
EOF
;;
stop)
sqlplus / as sysdba <<EOF
shutdown immediate
exit
EOF
lsnrctl stop
;;
*)
echo “Usage: $0 {start|stop}”
exit 1
;;
esac
设置权限与开机项:sudo chmod +x /etc/init.d/oracle;sudo chkconfig --add oracle。
五 常见问题与排查
- 无法远程连接:确认监听已启动(lsnrctl status)、端口 1521 在防火墙放行、tnsnames.ora 与客户端一致、数据库服务注册到监听(service_register)。
- 安装/建库失败:检查 $ORACLE_HOME/cfgtoollogs 与 $ORACLE_BASE/diag 下日志;常见为依赖缺失、目录权限、内核参数或内存不足。
- 字符集与语言:建议数据库字符集 AL32UTF8,客户端 NLS_LANG=AMERICAN_AMERICA.AL32UTF8,避免乱码。
- 资源限制生效:确保 limits.conf、pam_limits.so、/etc/profile 已配置,并以 oracle 登录后执行 ulimit -a 验证。