在 CentOS 上安装与配置 Oracle 19c 的完整步骤
一 环境准备与系统要求
- 操作系统与资源:建议使用 CentOS 7/8,内存至少 2 GB(推荐 4 GB+),安装目录预留 20 GB+ 磁盘空间。Swap 建议:内存 1–2 GB 时设为内存的 1.5 倍;2–16 GB 时与内存相同;>16 GB 时设为 16 GB。
- 更新系统与安装依赖:
- 更新系统:sudo yum update -y
- 安装依赖: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
- 创建安装目录并授权:
- sudo mkdir -p /u01/app/oracle
- sudo chown -R oracle:oinstall /u01
- sudo chmod -R 775 /u01
- 说明:若使用 Oracle 11g,部分环境可能需要将系统标识伪装为 RHEL(修改 /etc/redhat-release),现代环境通常不必;如采用该方式,请务必在变更前做好备份。
二 内核参数与资源限制
- 内核参数(/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
- PAM 与登录会话限制(/etc/pam.d/login):
- session required pam_limits.so
- 可选:在 /etc/profile 为 oracle 用户设置 ulimit(便于控制台会话继承)。
三 安装 Oracle 19c 软件
- 准备安装介质:从 Oracle 官方下载适用于 Linux x86_64 的 19c 安装包(如:LINUX.X64_193000_db_home.zip),上传至 /u01/app/oracle 并解压:
- cd /u01/app/oracle
- unzip LINUX.X64_193000_db_home.zip
- 以 oracle 用户配置环境变量(~/.bash_profile 或 ~/.bashrc):
- export ORACLE_BASE=/u01/app/oracle
- export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
- export ORACLE_SID=orcl
- export PATH=$PATH:$ORACLE_HOME/bin
- export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
- 使生效:source ~/.bash_profile
- 图形化安装(需 X11 转发或 VNC):
- xhost +
- su - oracle
- cd $ORACLE_HOME
- ./runInstaller
- 按向导选择安装类型(典型/高级)、指定 ORACLE_BASE/ORACLE_HOME、创建 Inventory 目录,完成安装后以 root 执行提示的 root.sh 脚本。
四 创建数据库实例与网络配置
- 使用 DBCA 创建数据库(图形界面或静默):
- 图形化:su - oracle;执行 dbca,按向导选择“创建数据库”,设置 SID=orcl、字符集 AL32UTF8、存储与口令策略等。
- 静默示例:
- $ORACLE_HOME/bin/dbca -silent
-createDatabase
-templateName General_Purpose.dbc
-gdbname orcl -sid orcl
-responseFile NO_VALUE
-characterSet AL32UTF8
- 配置监听与网络服务:
- 监听:su - oracle;执行 netca,按向导完成监听(默认端口 1521)。
- 客户端解析(可选):在 $ORACLE_HOME/network/admin/tnsnames.ora 添加条目:
- ORCL =
- (DESCRIPTION =
- (ADDRESS = (PROTOCOL = TCP)(HOST = your_host)(PORT = 1521))
- (CONNECT_DATA =
- (SERVER = DEDICATED)
- (SERVICE_NAME = orcl)))
- 防火墙放行(若启用):
- CentOS 7/8:sudo firewall-cmd --add-port=1521/tcp --permanent && sudo firewall-cmd --reload
五 启动验证与开机自启
- 启停与状态检查:
- 监听:lsnrctl start|stop|status
- 数据库:sqlplus / as sysdba → startup / shutdown immediate
- 开机自启(推荐两种方式,二选一或并用):
- 使用 /etc/oratab 与系统服务脚本(传统方式):
- 编辑 /etc/oratab:将 orcl:/u01/app/oracle/product/19.0.0/dbhome_1:Y
- 使用 dbstart/dbshut 配合系统服务或 /etc/rc.local 调用(示例思路:su - oracle -lc “dbstart $ORACLE_HOME”)。
- 使用 systemd 服务(示例单元文件 /etc/systemd/system/oracle.service):
- [Unit]
- Description=Oracle Database Service
- After=network.target
- [Service]
- Type=simple
- User=oracle
- Environment=“ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1”
- Environment=“ORACLE_SID=orcl”
- ExecStart=/u01/app/oracle/product/19.0.0/dbhome_1/bin/dbstart $ORACLE_HOME
- ExecStop=/u01/app/oracle/product/19.0.0/dbhome_1/bin/dbshut $ORACLE_HOME
- RemainAfterExit=yes
- [Install]
- WantedBy=multi-user.target
- 启用:sudo systemctl daemon-reload && sudo systemctl enable --now oracle
- 验证要点:
- lsnrctl status 应看到监听端口 1521 与 SERVICE_NAME=orcl
- sqlplus / as sysdba 能登录;select name, open_mode from v$database; 应返回 OPEN
- 远程测试:sqlplus sys/password@//your_host:1521/orcl as sysdba 或 sqlplus username/password@orcl
- 常见问题与日志定位:
- 监听/实例问题优先查看 $ORACLE_HOME/diag/ 下的 alert 与 trace 日志,结合 lsnrctl status、tnsping 诊断网络与服务注册。