我的应用程序运行了将近一年,没有任何问题。但最近有人为一份报告执行了一个大选择,Oracle 的 TEMP 数据文件从 5GB 增长到了 30GB。然后服务器空间就用完了。
用户的表空间/数据文件没有受到影响,因为我创建的文件足够大,可以长时间容纳所有数据,事实上,我们仍在使用最初分配的用户表空间的约 15%。所以我猜问题不在这里。没有报告或检测到数据丢失。
服务器空间不足后,我删除了一些旧的备份文件并执行以下操作:
- 创建临时表空间 temp2 临时文件 '/u02/oradata/db/temp02.dbf' 大小 50m;
- 更改数据库默认临时表空间 temp2;
- 删除表空间 temp,包括内容和数据文件;
- 创建临时表空间 temp TEMPFILE '/u02/oradata/db/temp01.dbf' 大小 100M 自动扩展至下一个 100M 最大大小 5000M;
- 更改数据库默认临时表空间 temp;
- 删除表空间 temp2 包括内容和数据文件;
一小时后,我开始接到用户的电话,说应用程序非常慢,他们无法登录,一切都很慢,应用程序冻结。但问题在 2-3 分钟后自行“解决”。当我进行一些测试,检查内存/io/cpu 时,一切都很好。我问了用户,他说现在一切都很好,我什么也没做。
我尝试重建索引并重新计算统计数据。但问题仍然存在。
在应用程序端,当用户呼叫我时,我记录了很多 Oracle 错误:
- ORA-12571: TNS: 数据包写入器失败
- ORA-01012: 未登录
- ORA-00028:您的会话已被终止
- ORA-12170: TNS: 连接超时
2-3 分钟后,不再出现错误,性能良好。
这种情况发生在白天有 80 个用户登录,而晚上只有 2 个用户登录,系统使用率非常低的情况下。
Oracle 版本 11.2.0.1.0 服务器 Linux CentOS
有人有什么想法吗?
谢谢你!
埃德加
答案1
好吧,我们在 TEMP 文件方面遇到了这个问题,应用程序变得不稳定。所以我的注意力集中在数据库上。我花了很多时间重新创建数据库和另一台应用程序服务器,做了很多测试,包括网络流量,我们意识到我们的应用程序服务器实际上正在受到某种攻击,我们只是更改了应用程序服务器的 IP,现在一切都好了!在临时文件出现问题的同时还出现这个网络问题,真是倒霉,我把注意力放在了错误的地方。
只是为了检查,我在工作站/桌面上使用了这个 IP 地址,工作站开始丢失网络数据包并变得不稳定。
@Alex-Poole,非常感谢您的关注!
埃德加