首页 >
问答 >
云计算 >
Ubuntu上Oracle配置常见问题
Ubuntu上Oracle配置常见问题
小樊
36
2025-12-04 22:23:54
Ubuntu上Oracle配置常见问题与对策
一 支持性与版本选择
在生产环境优先选择受支持的发行版与内核。以客户端为例,Oracle官方支持列表包含:Ubuntu 22.04.1 LTS(5.15.0-1016 或更高) ,且仅支持64位 安装;更早或未经列出的版本(如部分旧版 Ubuntu)不在官方支持范围。若需长期稳定运行与官方支持,建议优先选用 Oracle Linux、RHEL、SLES 等受支持平台。对于 11gR2 等老版本,官方支持矩阵中通常不包含 Ubuntu,这也是很多安装与配置问题的根源之一。
二 环境与权限导致的命令不可用
现象与根因:执行 sqlplus / as sysdba 、lsnrctl 、emctl 提示“未找到命令”或“环境变量未定义”,多为 ORACLE_HOME、ORACLE_SID、PATH 等未正确设置,或未切换到 oracle 用户执行。
处理要点:
以 oracle 用户操作,并在其环境配置中设置(示例):
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.0.0/dbhome_1
export ORACLE_SID=orcl
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export PATH=$ORACLE_HOME/bin:$PATH
使配置生效:source ~/.bashrc 或 source /etc/profile
不建议将 $ORACLE_HOME/bin 下的可执行文件硬拷贝到 /bin ,应通过环境变量与 PATH 正确暴露命令。
若图形化安装器或某些工具报缺依赖库(如旧版 libstdc++5 ),需按提示安装对应版本,避免随意替换系统库导致不稳定。
三 监听与连接类错误
典型报错与处置:
ORA-12162:TNS:net service name is incorrectly specified
原因多为未设置 ORACLE_SID 。执行:export ORACLE_SID=orcl(写入环境文件以持久化)。
ORA-12514:TNS:listener does not currently know of service requested in connect descriptor
通常是监听未识别数据库服务。编辑 $ORACLE_HOME/network/admin/listener.ora ,在 SID_LIST_LISTENER 中显式注册 SID:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = orcl)
(ORACLE_HOME = /u01/app/oracle/product/19.0.0/dbhome_1)
)
)
然后重启监听:lsnrctl stop;lsnrctl start。
首次登录数据库未启动实例:sqlplus / as sysdba 后执行 startup (必要时先 startup nomount/mount,再 open)。
四 企业管理器 EM 无法启动
常见报错与修复:
Environment variable ORACLE_UNQNAME not defined
执行:export ORACLE_UNQNAME=orcl(与 ORACLE_SID 一致),再启动 EM。
OC4J Configuration issue 或 EM Configuration issue(目录不存在)
说明 dbconsole 配置与实例/SID 不匹配或目录缺失。先确保监听已启动,再执行重建:
emca -config dbcontrol db -repos recreate
按提示输入 SYS、DBSNMP、SYSMAN 口令,完成后使用:emctl start dbconsole 访问 https://<主机名>:1158/em 。
五 简化部署与后续维护建议
快速落地方案:在受支持的 Ubuntu 上,优先考虑使用 Docker 运行 Oracle(示例):
拉取镜像:docker pull store/oracle/database-enterprise:19.3.0.0
启动容器:docker run -d --name oracle-db -p 1521:1521 -p 5500:5500 store/oracle/database-enterprise:19.3.0.0
适合开发/测试与快速验证,规避宿主机环境差异带来的依赖与库冲突。
传统手工部署的维护要点:
使用 /etc/oratab 管理实例自启:例如 orcl:/u01/app/oracle/product/19.0.0/dbhome_1:Y
配置 systemd 服务(示例):
[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 $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
启用:systemctl daemon-reload;systemctl enable oracle.service;systemctl start oracle.service
若必须在 Ubuntu 上安装老版本(如 11gR2),需预期会遇到库路径、依赖与安装器兼容性等额外工作量,务必做好备份与回滚预案。