Shell Limits設定問題導致使用者不能登入
| 故障現象
前幾天,突然間某資料庫主機不能su切換到grid使用者。
發生故障的環境為:RHEL 6.7,ORACLE 11gR2 RAC,其中叢集節點1發生此故障,而節點2狀態正常。
故障現象如下:
點選(此處)摺疊或開啟
-
本地節點從oracle使用者su到grid使用者,錯誤如下:
-
[oracle@node1 /home/oracle]$su - grid
-
su: cannot set user id: Resource temporarily unavailable
-
透過叢集中的另外一個節點錯誤提示如下:
-
[grid@node2:/home/grid]$ssh node1
-
Write failed: Broken pipe
-
[oracle@node2:/home/oracle]$ssh node1
-
Last login: Thu May 10 12:28:22 CST 2018
-
而oracle使用者正常
-
透過遠端連線工具使用grid使用者登入錯誤提示如下:
-
Connection closed by foreign host.
-
/var/log/secure報錯如下:
-
su: pam_keyinit(su-l:session): Unable to change UID to 500 temporarily
- su: pam_keyinit(su-l:session): Unable to change UID to 500 temporarily
| 故障分析
參考MOS文件號:1174073.1,可能是limits設定不合理導致的,而Shell Limits會限制使用者資源的使用。
同時根據文件788064.1,進行如下步驟診斷:
1. 檢視叢集狀態,資料庫狀態以及相關日誌資訊。
檢查結果:除了上述現象外,叢集狀態正常,資料庫告警日誌此段時間內沒有任何錯誤,資料庫中也沒有發現異常的等待,客戶的業務也正常。
2. 檢視使用者的程式數。
點選(此處)摺疊或開啟
-
[oracle@node1 /home/oracle]#ps -u grid -L |wc -l
- 1560
點選(此處)摺疊或開啟
-
[oracle@node1 /home/oracle]$ lsof -u grid | wc -l
- 4000
上述結果表明:當前環境中開啟檔案數較多,而透過檢查使用者的程式,並沒有發現有異常的程式。那極有可能就是設定的limits過小導致。
4. 檢查/etc/security/limits.conf,檢視grid使用者的nproc和nofile設定。
點選(此處)摺疊或開啟
-
[grid@node1 /home/oracle]$cat /etc/security/limits.conf
-
# /etc/security/limits.conf
-
#
-
#Each line describes a limit for a user in the form:
-
#
-
#<domain> <type> <item> <value>
-
#
-
#Where:
-
#<domain> can be:
-
# - an user name
-
# - a group name, with @group syntax
-
# - the wildcard *, for default entry
-
# - the wildcard %, can be also used with %group syntax,
-
# for maxlogin limit
-
#
-
#<type> can have the two values:
-
# - "soft" for enforcing the soft limits
-
# - "hard" for enforcing hard limits
-
#
-
#<item> can be one of the following:
-
# - core - limits the core file size (KB)
-
# - data - max data size (KB)
-
# - fsize - maximum filesize (KB)
-
# - memlock - max locked-in-memory address space (KB)
-
# - nofile - max number of open files
-
# - rss - max resident set size (KB)
-
# - stack - max stack size (KB)
-
# - cpu - max CPU time (MIN)
-
# - nproc - max number of processes
-
# - as - address space limit (KB)
-
# - maxlogins - max number of logins for this user
-
# - maxsyslogins - max number of logins on the system
-
# - priority - the priority to run user process with
-
# - locks - max number of file locks the user can hold
-
# - sigpending - max number of pending signals
-
# - msgqueue - max memory used by POSIX message queues (bytes)
-
# - nice - max nice priority allowed to raise to values: [-20, 19]
-
# - rtprio - max realtime priority
-
#
-
#<domain> <type> <item> <value>
-
grid soft nproc 2048
-
grid hard nproc 4096
-
grid soft nofile 2048
-
grid hard nofile 4096
- ……
/etc/security/limits.conf檔案為每個使用者設定系統資源的限制。從以上輸出:從該設定和結合之前查詢結果來看,當前
nproc和nofile這兩個值設定得太小。這兩個引數設定除需參照Oracle建議值外還需考慮是否符合實際環境。
| 解決方案
根據上述分析中得出:由於設定的nproc和nofile值太小而導致,因此需要修改這兩個值。
1.手動修改/etc/security/limits.conf中的設定。
這兩個值設定參考系統本身的資源情況以及業務情況。因此暫定該環境修改值如下:
點選(此處)摺疊或開啟
-
[grid@node1 /home/oracle]$cat /etc/security/limits.conf
-
grid soft nproc 16384
-
grid hard nproc 16384
-
grid soft nofile 16384
- grid hard nofile 16384
注:可以使用官方提供的oracle-validated包來修改/etc/security/limits.conf,這個包提供修改核心引數,使用者limits等。該RPM包可以從網站獲取。如果是執行在OL6/RHEL6中的Oracle database 11gR2該包名被替換為 oracle-rdbms-server-11gR2-preinstall。
2.檢查故障是否存在。
點選(此處)摺疊或開啟
-
[oreacl@node1 /home/oracle]#su – grid
-
Password:
- Last login: Thu May 10 13:28:22 CST 2018
透過oracle使用者再次切換到grid使用者時恢復正常。
3.檢視使用者limits。
點選(此處)摺疊或開啟
-
[grid@node1:/home/grid] $ ulimit -Su
-
16384
-
[grid@node1:/home/grid] $ ulimit -Hu
-
16384
-
[grid@node1:/home/grid] $ ulimit –Sn
-
16384
-
[grid@node1:/home/grid] $ ulimit -Hn
- 16384
修改之後grid使用者的nproc和nofile為最新值。
4.附錄:當達到其他limits設定時出現的不同錯誤。
A. 當達到’open files’限制時錯誤。
B.當達到’max user processes’限制時錯誤。
| 作者簡介
楊波,沃趣科技資料庫技術專家
主要參與公司產品實施、測試、維護以及最佳化。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28218939/viewspace-2155099/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 在settings加入AUTHENTICATION_BACKENDS設定導致root使用者無法登入問題
- vsftpd不能登入問題FTP
- 解決memory_target設定過小導致不能啟動資料庫的問題資料庫
- 錯誤的使用者名稱密碼登入導致的資料庫效能問題密碼資料庫
- DNS導致資料庫登入緩慢的問題解決DNS資料庫
- mysql 本機不能登入問題解決MySql
- Standby OS i/o問題導致Primary 庫不能正常歸檔問題
- crontab設定導致的伺服器程式異常問題伺服器
- vsftp本地使用者不能登入FTP
- MSN messenger登入時報防火牆設定錯誤問題Messenger防火牆
- 設定允許root使用者登入SSH
- 設定Telnet root使用者的登入
- mysql設定複雜密碼中含$特殊符號導致無法命令列登入MySql密碼符號命令列
- win10 guest賬戶不能登入怎麼設定_win10 guest賬戶不能登入如何修復Win10
- 解決對時間列運算導致不能走索引的問題索引
- ipf導致sendmail不能正確轉發郵件的問題解決AI
- C 語言宣告與定義不一致導致的問題
- Oracle 11g 中 cursor_sharing 設定為SIMILAR 導致的問題OracleMILA
- Laravel artisan 寫入日誌的使用者和 fpm 不一致,導致無法寫入日誌問題Laravel
- Linux使用者密碼後不能登陸(回到原登陸狀態)問題Linux密碼
- 關於xmanager不能遠端登入Solaris 10主機問題
- 軟體版本不同導致配置資訊不能匯入
- selinux導致sqlplus登入失敗LinuxSQL
- db_recovery_file_dest_size設定小 導致聯機日誌不能歸檔 Oracle不能起來Oracle
- Apache HttpClient 沒有設定time out導致應用長時間阻塞的問題ApacheHTTPclient
- memory_target設定不當導致資料庫無法啟動的問題資料庫
- ANALYZE導致的阻塞問題分析
- MySQL Flush導致的等待問題MySql
- ORACLE_HOME設定錯誤導致本地sqlplus無法登陸OracleSQL
- SYS使用者可以登入,其他使用者無法登陸的問題處理
- 資料庫預設安裝配置導致的問題資料庫
- 定時重啟tomcat指令碼導致的亂碼問題Tomcat指令碼
- 關於同一使用者不能同時在兩臺電腦上登入問題的解決方案
- 雲伺服器設定多使用者遠端登入伺服器
- Windows遠端桌面設定多使用者同時登入Windows
- LInux下環境變數配置錯誤導致不能登入的及命令失效解決方案Linux變數
- SCHEDULER呼叫XDB程式導致效能問題
- sqlplus 可以登入 plsql 不能登入SQL