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包可以從http://oss.oracle.com網站獲取。如果是執行在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使用者無法登入問題
- shell 中的 set -e 導致的退出問題
- [20221214]limits.conf裡面關於memlock設定問題.txtMIT
- [20191204]sqlplus特殊定義導致的問題.txtSQL
- 設定允許root使用者登入SSH
- win10 guest賬戶不能登入怎麼設定_win10 guest賬戶不能登入如何修復Win10
- Laravel artisan 寫入日誌的使用者和 fpm 不一致,導致無法寫入日誌問題Laravel
- ANALYZE導致的阻塞問題分析
- 雲伺服器設定多使用者遠端登入伺服器
- Windows遠端桌面設定多使用者同時登入Windows
- ant design 中,使用dva/fetch 設定導致無法從後臺匯出excel的問題Excel
- 親測ubuntu18系統下解決MySQL5.7版本的root使用者密碼沒提示輸入問題不能登入問題UbuntuMySql密碼
- alicdn邊緣節點不穩定導致頁面崩潰問題
- Solaris 11 設定root使用者允許SSH遠端登入
- K8Sdashboard登入問題(chrome無法訪問以及使用使用者名稱和密碼登入)K8SChrome密碼
- MSSQL不能遠端登入--使用者 'sa' 登入失敗。 (Microsoft SQL Server,錯誤: 18456)SQLROSServer
- 帝國cms編輯器設定指南:登入後臺,導航到“系統設定”>“基本設定”>“其它配置”
- 多路徑配置問題和ACFS啟用原因導致rac二節點不能正常啟動
- MyBatis版本升級導致OffsetDateTime入參解析異常問題覆盤MyBatis
- 獲取登入驗證碼失敗及前後端不同域導致session丟失問題分析記錄後端Session
- golang slice使用不慎導致的問題Golang
- CAS導致的ABA問題及解決
- 分散式鎖導致的超賣問題分散式
- MySQL8.0 view導致的效能問題MySqlView
- Vmware相容問題導致電腦藍屏
- linux 設定ssh 免密登入Linux
- 多使用者環境下GOPATH的設定問題Go
- win10如何設定自動登入 win10設定自動登入的方法Win10
- 安全:列出linux中所有可登入shell/ssh/sudo的使用者Linux
- 記一次使用easyexcel匯入excel導致cpu跑滿的問題Excel
- Laravel+swoole post 登入問題Laravel
- 在sqlnet.ora中設定引數限制使用者登入時間SQL
- 關於 Laravel mix 導致 Bootstrap 失效的問題Laravelboot
- str_replace導致的注入問題彙總
- 未使用 `deleteLater` 而直接使用 `delete` 導致問題delete
- chorme自動升級導致跨域問題ORM跨域
- win10 自動登入如何設定_windows10自動登入的設定步驟Win10Windows
- 多次密碼錯誤導致登入介面鎖定,可以刪除網站的 runtime 資料夾密碼網站