oracle數據庫連接緩慢


今天連接數據庫時非常的慢,大概將近1分鍾,才能連上,感覺不對,登錄數據庫所在的服務器,進行檢查,常規的內存、硬盤、CPU全都正常,然后想要進入oracle用戶時報錯了:su: cannot set user id: Resource temporarily unavailable  百度一下,沒有足夠的資源,原來是這的問題,解決步驟:
1、檢查oracle用戶的資源上限:
cat /etc/security/limits.conf
oracle soft nproc 2047  # oracle告警線程
oracle hard nproc 16384  # oracle最大線程
oracle soft nofile 1024 # oracle用戶最大告警文件打開數量
oracle hard nofile 65536 # oracle用戶最大文件打開數量
這是oracle用戶的配置,然后目前oracle使用的最大進程是多少呢 ?

2、檢查oracle用戶使用的最大進程 

[root~]# ps -U oracle |wc -l

2007

進程使用沒問題,文件數呢?

3、檢查oracle用戶使用的文件打開數

[root~]# lsof |grep oracle |wc -l

60896

4、發現文件數60896,比最大告警數1024 多出60倍!!問題就在這里了,查看了一下網上,多是改大limits上限,我嘗試改了一下,雖然管用,但是打開的文件數卻一直增長,治標不治本

5、所以查看一下oracle用戶所打開的文件都是什么很有必要

[root]# lsof |grep oracle > oracle.txt

打開oracle.txt文件,發現大部分文件都是sendmail或者postdrop,光這倆就占了5.4W多個文件數,百度sendmail和postdrop,發現是因為定時任務會啟動郵件postfix進行發送郵件,但是服務器中沒有進行sendmail配置,所以導致postdrop,這些就變成僵屍文件,一直打開無法關閉了,在oracle用戶下6、把定時任務設置成不發郵件

 crontab -e

MAILTO ="" --不發郵件

7、然后刪除sendmail和postdrop相關的進程

 ps -ef | grep sendmail | grep -v grep | awk '{print $2}' | xargs kill

 ps -ef | grep postdrop | grep -v grep | awk '{print $2}' | xargs kill

8、再查oracle用戶文件打開數

[root]# lsof |grep oracle |wc -l

8476

到此解決問題~~o(∩_∩)o 記錄下來方便以后使用


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM