Oracle数据库短时间磁盘空间占用超过88%问题分析

1.问题描述
维护人员向中心报故障称数据库/dev/fslv00_使用率超过88%。

2.问题分析过程
经排查,发现数据库所在小型机/oracle/admin/sid/adump/目录下产生大量*.aud文件。

aud文件为Oracle数据库审计文件,在数据库审计功能关闭的情况下,只有通过sys用户(包括sysdba,sysoper权限用户)远程连接数据库时才会产生该文件。

经查,有个其他部门的新应用使用sys用户对数据库进行监控。


3.问题解决方案
临时解决方案:提供脚本定期删除*.aud文件
最终解决方案:将sys用户改为system用户即可


4.相关命令说明

查看哪个目录增长最快
du -ks * | sort -n

通过以下语句可以查看数据库审计功能是否开启(audit_trail 为 NONE,audit_sys_operations 为 FALSE 表示未开启):
SQL> show parameter audit
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
audit_file_dest string /oracle/admin/sid/adump
audit_sys_operations boolean FALSE
audit_syslog_level string
audit_trail string NONE

Audit_sys_operations:
默认为false,当设置为true时,所有sys用户(包括以sysdba,sysoper身份登录的用户)的操作都会被记录,audit trail不会写在aud$表中,这个很好理解,如果数据库还未启动aud$不可用,那么像conn /as sysdba这样的连接信息,只能记录在其它地方。如果是windows平台,audti trail会记录在windows的事件管理中,如果是linux/unix平台则会记录在audit_file_dest参数指定的文件中。

Audit_trail:
None:是默认值,不做审计;
DB:将audit trail 记录在数据库的审计相关表中,如aud$,审计的结果只有连接信息;
DB,Extended:这样审计结果里面除了连接信息还包含了当时执行的具体语句;
OS:将audit trail 记录在操作系统文件中,文件名由audit_file_dest参数指定;
XML:10g里新增的。

5.sys和system以及sysdba和sysoper区别
参考[url]http://www.cnblogs.com/afant/archive/2009/01/07/1371041.html[/url]
### Oracle 数据库连接缓慢的原因及解决方案 Oracle 数据库连接缓慢可能由多种原因引起,以下是一些常见的原因及其对应的解决方案: #### 1. 网络延迟或带宽不足 网络问题可能导致客户端与数据库服务器之间的通信变慢。如果网络延迟较高或带宽不足,数据传输效率会受到影响。 - **解决方案**:优化网络配置,确保客户端和服务器之间的网络连接稳定且带宽充足。可以使用 `ping` 或 `traceroute` 工具检查网络延迟,并考虑将数据库服务器迁移到更靠近客户端的位置[^1]。 #### 2. 监听器配置不当 监听器是 Oracle 数据库用于接收客户端连接请求的组件。如果监听器配置不正确(例如监听端口被防火墙阻止或监听器未启动),可能会导致连接延迟。 - **解决方案**:检查监听器状态,确保其正常运行。可以通过以下命令验证监听器状态: ```bash lsnrctl status ``` 如果监听器未启动,可以使用以下命令启动它: ```bash lsnrctl start ``` 此外,确保防火墙规则允许监听器使用的端口(默认为 1521)。 #### 3. 数据库性能瓶颈 数据库性能瓶颈可能是由于资源争用(如 CPU、内存、磁盘 I/O)引起的。如果数据库服务器的硬件资源不足,可能会导致连接速度变慢。 - **解决方案**:监控数据库服务器的资源使用情况,识别并解决潜在的瓶颈。可以使用以下视图分析性能问题: ```sql SELECT * FROM v$session; SELECT * FROM v$resource_limit; ``` 根据分析结果,升级硬件资源或优化数据库配置以提高性能。 #### 4. 连接池配置不合理 如果应用程序使用了连接池,但连接池的大小设置不合理,可能会导致连接缓慢。例如,连接池中的空闲连接数量不足,或者连接超时时间过短。 - **解决方案**:调整连接池参数,确保其配置合理。例如,增加最大连接数或延长连接超时时间。具体调整方式取决于所使用的连接池实现(如 UCP、DBCP 等)[^1]。 #### 5. SQL 查询优化不足 复杂的 SQL 查询或索引缺失可能导致查询执行时间过长,从而影响连接速度。 - **解决方案**:优化 SQL 查询,确保查询语句高效且使用了适当的索引。可以使用以下命令分析查询性能: ```sql EXPLAIN PLAN FOR SELECT ...; SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY); ``` 根据分析结果,添加必要的索引或重写查询语句以提高效率。 #### 6. 闲置连接过多 如果数据库中存在大量闲置连接,可能会占用系统资源,从而导致新连接建立缓慢。 - **解决方案**:定期清理闲置连接。可以通过创建存储过程并结合定时任务实现自动化管理。例如,引用中的代码片段展示了如何通过 `DBMS_JOB` 提交任务来清理闲置连接。 --- ### 示例代码:清理闲置连接的存储过程 以下是一个示例存储过程,用于检测并终止长时间未活动的会话: ```sql CREATE OR REPLACE PROCEDURE kill_idle_sessions AS CURSOR idle_sessions IS SELECT sid, serial# FROM v$session WHERE status = 'INACTIVE' AND last_call_et > 3600 -- 闲置超过 1 小时 AND username IS NOT NULL; BEGIN FOR session_info IN idle_sessions LOOP EXECUTE IMMEDIATE 'ALTER SYSTEM KILL SESSION ''' || session_info.sid || ',' || session_info.serial# || ''''; END LOOP; END; / ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值