Debian Oracle怎么配置
小樊
45
2025-12-01 10:30:37
Debian 上配置 Oracle 的可执行清单
一 准备与规划
明确目标版本与用途:是安装完整的 Oracle Database (如 19c/21c XE 或企业版),还是仅配置 Oracle Instant Client 用于连接远程库。
规划目录与磁盘:建议将数据与软件分离,如软件在 /u01/app/oracle ,数据在 /u02/oradata ;确保文件系统支持大文件与良好 I/O(如 ext4/xfs )。
规划网络与端口:数据库监听默认端口 1521/TCP ,确保防火墙与安全组放行;准备主机名解析(/etc/hosts 或 DNS)。
资源基线:至少 2–4 GB 内存 (生产建议更高)、充足 swap 、可用磁盘空间按数据量规划(经验值:数据+归档+备份)。
二 安装与系统配置
创建用户与目录
创建组与用户:sudo groupadd oinstall ;sudo groupadd dba ;sudo useradd -g oinstall -G dba -m -s /bin/bash oracle ;sudo passwd oracle
创建目录并授权:sudo mkdir -p /u01/app/oracle ;sudo chown -R oracle:oinstall /u01;sudo chmod -R 755 /u01
安装依赖(以 Debian 12 为例)
sudo apt-get update
sudo apt-get install -y build-essential gcc make binutils libaio1 libaio-dev libstdc++6 libnss3 libx11-6 libxext6 libxtst6 libxi6 libglib2.0-0 libpam0g libssl3 libgcc-s1 libc6-dev
内核参数(/etc/sysctl.conf,sysctl -p 生效)
kernel.shmall = 2097152
kernel.shmmax = 536870912
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
fs.aio-max-nr = 1048576
资源限制(/etc/security/limits.conf)
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft memlock 33554432
oracle hard memlock 33554432
PAM 与安全
确保 /etc/pam.d/login 包含:session required /lib64/security/pam_limits.so
可选:禁用透明大页(THP)、配置 hugepages、设置 RemoveIPC=no(/etc/systemd/logind.conf),以提升稳定性与性能
环境变量(oracle 用户 ~/.bashrc 或 ~/.bash_profile)
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.3.0.0/dbhome_1
export ORACLE_SID=orcl
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
字符集可按需设置:export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
使配置生效:source ~/.bashrc
三 安装 Oracle 软件与创建数据库
图形化安装(有 GUI)
以 oracle 用户解压安装介质,执行:./runInstaller(按向导选择安装类型、目录、清单目录、创建数据库等)
静默安装(推荐用于服务器)
复制并编辑响应文件(如 db_install.rsp 或 dbhome.rsp),设置 ORACLE_BASE、ORACLE_HOME、ORACLE_SID、INVENTORY_LOCATION 等
执行:./runInstaller -silent -responseFile /path/db_install.rsp
安装完成后按提示以 root 执行 $ORACLE_HOME/root.sh
仅客户端(Instant Client)
从 Oracle 官网下载 Basic/SDK/SQL*Plus 的 Linux x86-64 RPM 包
在 Debian 上可用 alien 转换为 .deb 并安装,或配置本地 YUM/APT 仓库后直接安装 RPM
配置环境变量:ORACLE_HOME、LD_LIBRARY_PATH、PATH、TNS_ADMIN(指向 $ORACLE_HOME/network/admin)
创建监听与数据库
监听:编辑 $ORACLE_HOME/network/admin/listener.ora ,示例
LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = your_host )(PORT = 1521 ))))
SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = orcl )(ORACLE_HOME = $ORACLE_HOME )))
启动:lsnrctl start
创建数据库(DBCA 静默或 SQL*Plus 手工建库)
示例(SQL*Plus):sqlplus / as sysdba
CREATE DATABASE orcl
USER SYS IDENTIFIED BY sys_password
USER SYSTEM IDENTIFIED BY system_password
LOGFILE GROUP 1 (‘/u02/oradata/orcl/redo01.log’) SIZE 200M,
GROUP 2 (‘/u02/oradata/orcl/redo02.log’) SIZE 200M
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 1024
CHARACTER SET AL32UTF8
NATIONAL CHARACTER SET AL16UTF16
EXTENT MANAGEMENT LOCAL
DATAFILE ‘/u02/oradata/orcl/system01.dbf’ SIZE 1G REUSE
SYSAUX DATAFILE ‘/u02/oradata/orcl/sysaux01.dbf’ SIZE 1G REUSE
DEFAULT TABLESPACE users DATAFILE ‘/u02/oradata/orcl/users01.dbf’ SIZE 500M REUSE AUTOEXTEND ON NEXT 50M MAXSIZE UNLIMITED
UNDO TABLESPACE undotbs1 DATAFILE ‘/u02/oradata/orcl/undotbs01.dbf’ SIZE 500M REUSE AUTOEXTEND ON NEXT 50M MAXSIZE UNLIMITED;
执行 @?/rdbms/admin/catalog.sql 与 @?/rdbms/admin/catproc.sql 完成数据字典与过程对象创建
启动与自启
配置 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.3.0.0/dbhome_1”
Environment=“ORACLE_SID=orcl”
ExecStart=$ORACLE_HOME/bin/dbstart $ORACLE_HOME
ExecStop=$ORACLE_HOME/bin/dbshut $ORACLE_HOME
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
启用:sudo systemctl daemon-reload;sudo systemctl enable --now oracle
四 网络与安全配置
主机名与解析
/etc/hosts 添加:127.0.1.1 your_hostname (或服务器真实 IP 与 FQDN),确保监听与客户端解析一致
防火墙放行
UFW:sudo ufw allow 1521/tcp ;sudo ufw reload
firewalld:sudo firewall-cmd --add-port=1521/tcp --permanent;sudo firewall-cmd --reload
监听与客户端连接
监听状态:lsnrctl status;注册服务后可看到 SID/Service
客户端连接串(tnsnames.ora 或 Easy Connect):
ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = dbhost )(PORT = 1521 ))(CONNECT_DATA = (SERVICE_NAME = orcl )))
sqlplus system/密码@//dbhost:1521/orcl
SELinux/AppArmor
Debian 默认使用 AppArmor,确保 Oracle 目录与进程未被不当限制;必要时为 $ORACLE_HOME/bin/oracle 配置合适配置
五 验证与常见问题
基本验证
监听:lsnrctl status(应看到端口 1521 与已注册服务)
实例:sqlplus / as sysdba;select name, open_mode from v$database;
监听日志:$ORACLE_HOME/diag/tnslsnr/LISTENER /trace/listener.log
常见问题速查
无法远程连接:检查监听端口、防火墙、/etc/hosts 主机名解析、数据库服务是否注册到监听
共享内存不足:调大 kernel.shmmax (如 2–8 GB,视内存而定),sysctl -p 生效
打开文件数限制:limits.conf 中 oracle 的 nofile 与 nproc 值过低,调整后重新登录 oracle 用户
依赖缺失:安装 build-essential、libaio-dev、libnss3 等基础包
Instant Client 找不到库:确认 LD_LIBRARY_PATH 包含 $ORACLE_HOME/lib,或使用 ldconfig 注册库路径