确保Ubuntu系统与Oracle数据库服务器之间的网络连通性正常,使用ping <服务器IP>
命令测试连接。若无法ping通,需排查网络配置、路由器或防火墙问题(如服务器IP是否正确、网络线路是否故障)。
ps -ef | grep ora_*
,确认Oracle数据库进程(如ora_pmon_<SID>
、ora_dbw0_<SID>
)正在运行。若未运行,使用sqlplus /nolog
登录并执行startup
命令启动数据库。lsnrctl status
,查看监听器是否处于“RUNNING”状态,且监听的端口(默认1521)正确。若未启动,使用lsnrctl start
启动监听器;若启动失败,需检查listener.ora
文件(位于$ORACLE_HOME/network/admin
)中的主机名、端口配置是否正确。若通过客户端连接,需安装Oracle Instant Client并配置环境变量:
/opt/oracle/instantclient_19_20
)。~/.bashrc
文件,添加以下内容(替换为实际路径):export ORACLE_HOME=/opt/oracle/instantclient_19_20 export LD_LIBRARY_PATH=$ORACLE_HOME:$LD_LIBRARY_PATH export PATH=$ORACLE_HOME/bin:$PATH
执行source ~/.bashrc
使变量生效。确保tnsnames.ora
文件(位于$ORACLE_HOME/network/admin
)中的连接信息准确,格式如下:
<连接别名> = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = <服务器IP>)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = <数据库服务名>) ) )
重点检查HOST
(服务器IP)、PORT
(端口)、SERVICE_NAME
(服务名)是否与数据库实际配置一致。
sqlplus / as sysdba
登录数据库,执行SELECT username, account_status FROM dba_users WHERE username = '<用户名>';
,确认用户状态为“OPEN”。若未授权,执行GRANT CONNECT, RESOURCE TO <用户名>;
授予连接权限。sudo ufw allow 1521/tcp
允许Oracle端口通过,再执行sudo ufw reload
生效。iptables -A INPUT -p tcp --dport 1521 -j ACCEPT
),并保存规则。若数据库因归档日志满无法连接,需清理归档文件:
rman target / CROSSCHECK ARCHIVELOG ALL; DELETE NOPROMPT EXPIRED ARCHIVELOG ALL; DELETE NOPROMPT ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE - 7'; # 删除7天前的归档 EXIT;
若以上步骤无法解决,查看Oracle告警日志(位于$ORACLE_HOME/diag/rdbms/<数据库名>/<实例名>/trace/alert_<实例名>.log
),通过日志中的错误代码(如ORA-12541、ORA-12514)进一步定位问题。例如:
tnsnames.ora
或listener.ora
配置)。