Oracle 11g数据库在企业核心业务系统中应用广泛,日常维护过程中会因为配置不当、资源不足、操作失误等原因出现各类错误,掌握常见错误的排查和解决方法,是运维人员必备的技能。

一、连接类常见错误
连接类错误是维护中最常遇到的问题,通常表现为客户端无法连接到数据库实例。
1. ORA-12170: TNS连接超时
该错误一般是网络不通或者监听服务未正常启动导致,排查步骤如下:
- 检查服务器防火墙是否开放了数据库监听端口,默认端口为1521
- 在服务器本地执行
tnsping命令测试监听是否正常 - 查看监听日志,确认是否有连接请求到达
如果是监听未启动,执行以下命令重启监听:
-- 停止监听 lsnrctl stop -- 启动监听 lsnrctl start -- 查看监听状态 lsnrctl status
2. ORA-01034: ORACLE not available
该错误说明数据库实例未启动,需要登录服务器检查实例状态:
-- 登录数据库 sqlplus / as sysdba -- 查看实例状态 select status from v$instance; -- 如果实例未启动,执行启动命令 startup
二、空间类常见错误
空间不足会导致数据无法写入,甚至数据库无法正常运行。
1. ORA-01653: 表空间无法扩展
该错误说明对应表空间已无剩余空间,可通过以下语句查看表空间使用情况:
select a.tablespace_name as 表空间名称, a.bytes/1024/1024 as 总大小MB, (a.bytes - b.bytes)/1024/1024 as 已使用MB, b.bytes/1024/1024 as 剩余大小MB, round(((a.bytes - b.bytes)/a.bytes)*100,2) as 使用率 from (select tablespace_name, sum(bytes) bytes from dba_data_files group by tablespace_name) a, (select tablespace_name, sum(bytes) bytes from dba_free_space group by tablespace_name) b where a.tablespace_name = b.tablespace_name order by 使用率 desc;
如果表空间使用率过高,可通过添加数据文件的方式扩展表空间:
-- 为USERS表空间添加数据文件,初始大小100MB,自动扩展,每次扩展50MB,最大到10GB alter tablespace USERS add datafile '/u01/app/oracle/oradata/orcl/users02.dbf' size 100m autoextend on next 50m maxsize 10g;
2. ORA-00257: 归档程序错误
该错误是归档日志空间不足导致,需要清理过期归档日志,或者扩大归档日志存储空间:
-- 查看归档日志存储路径 show parameter log_archive_dest -- 使用RMAN清理过期归档 rman target / crosscheck archivelog all; delete expired archivelog all;
三、备份恢复类常见错误
备份恢复过程中也可能出现各类错误,影响数据安全保障。
1. ORA-19502: 写入文件时出错
该错误通常是备份目标路径空间不足,或者备份文件权限不足导致,排查时先检查备份路径的剩余空间,再确认Oracle用户是否有该路径的读写权限。
2. ORA-01194: 文件需要更多的恢复
数据库异常关闭后启动可能出现该错误,需要执行恢复操作:
-- 登录数据库 sqlplus / as sysdba -- 执行恢复 recover database; -- 恢复完成后打开数据库 alter database open;
四、性能类常见错误
性能类错误通常表现为SQL执行缓慢、数据库响应延迟。
1. ORA-00060: 检测到死锁
该错误说明出现了事务死锁,Oracle会自动回滚其中一个事务,可通过以下语句查看死锁信息:
select sid, serial#, username, status, sql_id, event from v$session where event like '%deadlock%';
找到对应的阻塞会话后,可根据业务情况决定是否手动终止会话。
2. 高并发下的锁等待
出现大量锁等待时,可通过以下语句查看当前锁情况:
select l.session_id as 会话ID, s.serial# as 序列号, s.username as 用户名, l.locked_mode as 锁模式, o.object_name as 被锁对象 from v$locked_object l, dba_objects o, v$session s where l.object_id = o.object_id and l.session_id = s.sid;
日常维护中除了掌握这些错误的解决方法,还需要定期查看数据库告警日志,很多错误在出现前都会在告警日志中留下预警信息,提前处理可以避免故障扩大。
Oracle_11g数据库维护ORA错误数据库故障排查修改时间:2026-06-06 22:21:19