在Ubuntu上配置Oracle前,需确保系统满足基础要求并安装必要依赖,否则会导致安装失败或功能异常:
sudo apt update
sudo apt install alien libaio1 unixodbc build-essential gcc make binutils
sudo groupadd oinstall # 归属组
sudo groupadd dba # 数据库管理员组
sudo useradd -g oinstall -G dba -d /home/oracle -s /bin/bash oracle # 创建用户
sudo passwd oracle # 设置密码
环境变量未正确设置是Oracle无法启动或连接的常见原因,需确保ORACLE_HOME(Oracle安装目录)、LD_LIBRARY_PATH(库文件路径)、PATH(可执行文件路径)配置正确。
~/.bashrc文件(或系统级/etc/profile),添加以下内容(替换为实际安装路径):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使配置生效,通过echo $ORACLE_HOME验证变量是否正确。监听器未启动或配置错误会导致无法远程连接数据库,需检查listener.ora文件并启动监听器。
$ORACLE_HOME/network/admin/listener.ora(默认端口1521)。lsnrctl status # 查看监听器状态(若未启动,会提示“Listener is not running”)
lsnrctl start # 启动监听器
若端口被占用,可修改listener.ora中的PORT参数(如改为1522),并重启监听器。实例启动失败可能因系统参数、权限或数据文件损坏导致,需逐步排查:
/etc/sysctl.conf,添加以下内核参数(优化系统性能):kernel.shmmax = 3147483648 # 最大共享内存段大小(建议为物理内存的一半)
kernel.shmmni = 4096 # 共享内存段最大数量
kernel.shmall = 2097152 # 共享内存总页数
fs.file-max = 65536 # 最大文件描述符数
net.ipv4.ip_local_port_range = 1024 65000 # 本地端口范围
执行sudo sysctl -p使参数生效。sudo chown -R oracle:oinstall /u01/app/oracle # 设置Oracle基目录权限
sudo chmod -R 755 /u01/app/oracle # 设置目录权限为755
sysdba身份登录,启动数据库:sqlplus / as sysdba
STARTUP # 启动数据库(若数据库未挂载,可添加NOMOUNT参数)
连接失败可能因网络、防火墙或tnsnames.ora配置错误导致:
sqlnet.ora文件($ORACLE_HOME/network/admin/sqlnet.ora)中未启用严格认证(注释SQLNET.AUTHENTICATION_SERVICES=(NTS))。sudo ufw allow 1521/tcp。tnsnames.ora文件($ORACLE_HOME/network/admin/tnsnames.ora),添加数据库连接信息:ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = your_server_ip)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
sqlplus username/password@ORCL(替换为实际用户名、密码)。部分Oracle版本(如19c)在较新的Ubuntu(如22.04)上可能因内核版本过高导致安装失败,需通过环境变量绕过检查:
CV_ASSUME_DISTID环境变量(模拟Oracle支持的Linux版本,如Oracle Linux 8):export CV_ASSUME_DISTID=ol8 # 模拟Oracle Linux 8
可将其添加到~/.bashrc中永久生效。若手动安装复杂,可使用Docker容器快速部署Oracle,避免环境配置问题:
sudo apt update
sudo apt install docker.io
sudo systemctl start docker
sudo systemctl enable docker
docker pull store/oracle/database-enterprise:19.3.0.0 # 拉取Oracle 19c企业版镜像
docker run -d --name oracle-db -p 1521:1521 -p 5500:5500 store/oracle/database-enterprise:19.3.0.0
运行后,通过sqlplus或Oracle客户端工具连接localhost:1521即可。/etc/systemd/system/oracle.service,实现Oracle开机自启:[Unit]
Description=Oracle Auto Start Service
After=network.target
[Service]
Type=simple
User=oracle
Group=oinstall
ExecStart=/u01/app/oracle/product/19.0.0/dbhome_1/bin/dbstart
ExecStop=/u01/app/oracle/product/19.0.0/dbhome_1/bin/dbshut
Restart=on-failure
RestartSec=30s
[Install]
WantedBy=multi-user.target
执行sudo systemctl daemon-reload和sudo systemctl enable oracle启用服务。rman target /
CROSSCHECK ARCHIVELOG ALL; # 校验归档日志
DELETE NOPROMPT EXPIRED ARCHIVELOG ALL; # 删除过期日志
DELETE NOPROMPT ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7'; # 删除7天前的日志
EXIT;
通过以上步骤,可解决Ubuntu环境下Oracle配置的大部分常见问题。若仍无法解决,建议参考Oracle官方文档或社区论坛(如Oracle Community)获取针对性支持。