Ubuntu上Oracle数据库配置指南
一、安装前准备
1. 操作系统要求
确保Ubuntu系统为64位版本,满足Oracle数据库的最低硬件要求:
- 内存:至少1GB(生产环境建议4GB以上);
- Swap空间:建议为物理内存的1-2倍(如内存1GB则Swap设为1-2GB);
- 磁盘空间:Oracle安装目录至少需要10GB可用空间(数据文件需额外预留空间)。
2. 安装依赖包
更新系统软件包并安装Oracle所需的依赖包,避免安装过程中出现缺失依赖错误:
sudo apt update && sudo apt upgrade -y
sudo apt install -y alien libaio1 unixodbc build-essential gcc make binutils
这些依赖包用于支持Oracle数据库的编译、运行及网络连接。
二、创建Oracle用户与目录
1. 创建用户组与用户
Oracle需要专用的用户组(oinstall用于安装管理,dba用于数据库管理员权限)和用户(oracle):
sudo groupadd -g 503 oinstall
sudo groupadd -g 504 dba
sudo useradd -u 501 -g oinstall -G dba -d /home/oracle -m -s /bin/bash oracle
sudo passwd oracle # 设置oracle用户的登录密码
此处用户ID(UID)和组ID(GID)可根据实际情况调整,但需避免与系统中现有ID冲突。
2. 创建安装与数据目录
Oracle的安装文件与数据文件需存放在专用目录(如/u01),并设置正确的权限:
sudo mkdir -p /u01/app/oracle/product/19.0.0/dbhome_1 # 替换为实际Oracle版本目录
sudo mkdir -p /u01/app/oracle/oradata # 数据库数据文件目录
sudo chown -R oracle:oinstall /u01
sudo chmod -R 755 /u01
确保oracle用户对/u01目录有读写权限,避免后续安装或运行时报权限错误。
三、配置系统环境参数
1. 调整内核参数
编辑/etc/sysctl.conf文件,添加以下参数以优化系统内核性能(针对Oracle数据库需求):
kernel.shmmax = 3147483648 # 最大共享内存段大小(建议为物理内存的80%)
kernel.shmmni = 4096 # 共享内存段最大数量
kernel.shmall = 2097152 # 共享内存总页数(shmmax/页大小,页大小通常为4KB)
fs.file-max = 65536 # 系统最大文件描述符数
net.ipv4.ip_local_port_range = 1024 65000 # 本地端口范围(允许更多连接)
kernel.sem = 250 32000 100 128 # 信号量参数(用于进程间通信)
修改后使配置生效:
sudo sysctl -p
2. 设置用户资源限制
编辑/etc/security/limits.conf文件,增加oracle用户的资源限制(避免进程因资源不足被终止):
oracle soft nproc 2047 # 用户最多可创建的进程数(软限制)
oracle hard nproc 16384 # 用户最多可创建的进程数(硬限制)
oracle soft nofile 1024 # 用户最多可打开的文件数(软限制)
oracle hard nofile 65536 # 用户最多可打开的文件数(硬限制)
3. 配置Oracle用户环境变量
编辑oracle用户的~/.bashrc文件,添加Oracle环境变量(用于后续操作):
export ORACLE_BASE=/u01/app/oracle # Oracle基础目录
export ORACLE_HOME=$ORACLE_BASE/product/19.0.0/dbhome_1 # Oracle安装目录(替换为实际版本)
export ORACLE_SID=orcl # 数据库实例名(默认实例名为orcl,可自定义)
export PATH=$ORACLE_HOME/bin:$PATH # 将Oracle命令加入PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH # Oracle库文件路径
使配置生效:
source ~/.bashrc
四、手动安装Oracle数据库
1. 下载Oracle安装包
从Oracle官方网站下载适用于Linux的Oracle Database安装包(如19c或21c版本),选择“Linux x86-64”平台。下载完成后,将安装包解压到/u01/app/oracle/product/19.0.0/dbhome_1目录(替换为实际版本):
cd /path/to/downloaded/package
unzip linux.x64_19c_database_1of2.zip -d /u01/app/oracle/product/19.0.0/dbhome_1
unzip linux.x64_19c_database_2of2.zip -d /u01/app/oracle/product/19.0.0/dbhome_1
2. 运行Oracle安装程序
切换到oracle用户,进入安装目录并运行安装脚本:
su - oracle
cd /u01/app/oracle/product/19.0.0/dbhome_1
./runInstaller
按照安装向导的提示完成以下步骤:
- 选择“安装数据库软件”模式(不创建数据库);
- 选择“单实例数据库安装”;
- 接受许可协议;
- 选择安装类型(如“企业版”);
- 等待安装完成(安装过程中会提示执行root脚本,需切换到root用户执行)。
五、创建Oracle数据库实例
安装完成后,使用dbca(数据库配置助手)创建数据库实例:
dbca
按照向导配置以下信息:
- 选择操作:创建数据库;
- 数据库模板:选择“通用数据库”(适合大多数场景);
- 数据库标识符:设置全局数据库名(如
orcl)和SID(与ORACLE_SID一致); - 管理选项:启用“使用Enterprise Manager Database Express”(Web管理界面);
- 数据库认证:设置SYS、SYSTEM用户的密码(需记住,后续登录用);
- 存储选项:选择“文件系统”(默认路径为
/u01/app/oracle/oradata); - 恢复配置:禁用归档日志模式(测试环境可选);
- 完成:等待数据库创建完成。
六、配置Oracle自动启动
1. 修改/etc/oratab文件
编辑/etc/oratab文件,将Oracle实例的“N”改为“Y”(允许数据库随系统启动):
sudo vi /etc/oratab
找到类似以下的行:
orcl:/u01/app/oracle/product/19.0.0/dbhome_1:N
将末尾的N改为Y:
orcl:/u01/app/oracle/product/19.0.0/dbhome_1:Y
2. 创建systemd服务文件
创建Oracle自动启动的systemd服务文件:
sudo vi /etc/systemd/system/oracle.service
添加以下内容(替换为实际Oracle安装路径和SID):
[Unit]
Description=Oracle Database Auto Start Service
After=network.target
[Service]
Type=forking
User=oracle
Group=oinstall
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
Restart=on-failure
RestartSec=30s
[Install]
WantedBy=multi-user.target
3. 启用并启动服务
重新加载systemd配置,启用Oracle服务并立即启动:
sudo systemctl daemon-reload
sudo systemctl enable oracle
sudo systemctl start oracle
检查服务状态,确认Oracle已启动:
sudo systemctl status oracle
七、验证Oracle安装
使用sqlplus工具连接Oracle数据库,验证安装是否成功:
sqlplus / as sysdba
若成功登录,将显示Oracle数据库版本信息。执行以下命令查看数据库状态:
SELECT status FROM v$instance;
若状态为OPEN,则表示数据库已正常运行。
八、常见问题排查
- 权限问题:若安装或运行时报权限错误,需检查
/u01目录的所有权是否为oracle:oinstall,并确保权限为755; - 内核参数不足:若启动时报“kernel parameter error”,需检查
/etc/sysctl.conf中的参数是否设置正确,并执行sudo sysctl -p使配置生效; - 监听器未启动:若无法远程连接,需检查监听器状态(
lsnrctl status),并启动监听器(lsnrctl start)。