简述
Oracle总会莫名奇妙得挂掉,现记录常见问题得排查
基本思路
1.xshell连接 linux
查看日志目录
show parameter background_dump_dest;
cd /home/oracle/app/oracle/diag/rdbms/orcl/orcl/trace
2.检查最新日志文件
cat alert_orcl.log
其他辅助文件参考.trc最新文件
列表口令 ll orcl_ora_*.trc
3.分析alert_orcl.log文件
常见问题
0.日志文件查看
分析alert_orcl.log文件
截图说明,举例说明进一步分析orcl_ora_41003.trc文件。
此处省略。
1.连接过多未释放
2.不自动释放空闲连接
3.没有共享内存
4.ORA-03113:通信通道的文件结尾
检查表空间
SELECT a.tablespace_name, a.bytes total, b.bytes used, c.bytes free, (b.bytes * 100) / a.bytes "% USED ", (c.bytes * 100) / a.bytes "% FREE " FROM sys.sm$ts_avail a, sys.sm$ts_used b, sys.sm$ts_free c WHERE a.tablespace_name = b.tablespace_name AND a.tablespace_name = c.tablespace_name ORDER BY (b.bytes * 100) / a.bytes desc,(c.bytes * 100) / a.bytes asc;
表空间使用
初步分析:
a.SYSTEM中审计表aud$在数据库编程过程中,对SQL语句的编译过程,资源占用会较大,因此在sys账户下查看,
select count(*) sum from AUD$;
会得知,该数值会非常大。
b.SYSAUX则进行的是AWR快照,也会进行占用较多的空间,
问题解决:
a.sys登录清理审计表
Truncate table AUD$;
b.清理AWR快照
select dbid, retention from dba_hist_wr_control; --查询DBID
select min(snap_id), max(snap_id) from dba_hist_snapshot where dbid =1549194399;--查看快照ID范围
exec dbms_workload_repository.drop_snapshot_range(197, 385,1549194399); --执行清理
提示执行成功
select min(snap_id), max(snap_id) from dba_hist_snapshot where dbid =1549194399; --查看快照ID范围
c.开发环境因为各种SQL执行比较频繁可以这么操作,生成环境建议把审计、快照提取到单独得表空间。