AIX系統的非計算記憶體最大值設定過大導致Oracle資料庫有些不能連線上
錯誤描述:
AIX系統、Oracle資料庫以及其監聽器都沒有做任何的修改,發現連線遠端的資料庫,有時可以連線上,有時連線不上資料庫。
1、連線不上資料庫時:回報ORA-12537:TNS連線己關閉
2、發現alert_SID.log沒有發現錯誤
3、檢視$ORACLE_HOME/network/log/listener.log日誌錯誤如下:
25-MAY-2010 18:54:26 * (CONNECT_DATA=(SERVICE_NAME=testoms)(CID=(PROGRAM=D:\專案資料\plsqldev\plsqldev.exe)(HOST=89587D60816246E)(USER=Administrator))) * (ADDRESS=(PROTOCOL=tcp)(HOST=10.88.22.77)(PORT=4954)) * establish * testoms * 12518
TNS-12518: TNS:listener could not hand off client connection
TNS-12547: TNS:lost contact
TNS-12560: TNS:protocol adapter error
TNS-00517: Lost contact
IBM/AIX RISC System/6000 Error: 32: Broken pipe
原因分析:
連線資料庫,有時可以連線,有時連線不上。
用ping 資料庫ip -t 發現網路很穩定
一般出現上面的ora-12537錯誤,一般是因為資料庫的listener.ora檔案沒有配置好,導致這樣的錯誤。但沒有改變過該檔案,原來連線資料庫一直很正常,突然發現有時能連線有時不能連線的現象。
用lsnrct status檢視該監聽正常。
該庫為測試庫,嘗試了關閉資料庫,再啟動
>shutdown immediate 關閉正常
但啟動時出現下面的錯誤
SQL> startup
Could not load program oracletestoms:
Could not load module /usr/lib/libperfstat.a(shr_64.o).
Dependent module liblvm.a(shr_64.o) could not be loaded.
Could not load module liblvm.a(shr_64.o).
System error: Not enough space
Could not load module oracle.
Dependent module /usr/lib/libperfstat.a(shr_64.o) could not be loaded.
Could not load module .
ORA-12547: TNS:lost contact
再次啟動的錯誤又不一樣:
SQL> startup
ORA-00443: background process "MMAN" did not start
感到這是AIX系統出現的問題,檢視下交換空間
omstestdb:/> lsps -a
Page Space Physical Volume Volume Group Size %Used Active Auto Type
Could not load program /usr/bin/sed:
Dependent module libc.a(shr.o) could not be loaded.
Could not load module libc.a(shr.o).
Could not load program /usr/bin/awk:
Dependent module libc.a(shr.o) could not be loaded.
Could not load module libc.a(shr.o).
0517-041 lsps: Cannot list paging space .
提示不能列出交換空間的大小,從這可以知道這是由於AIX的記憶體耗盡。
用topas 檢視目前的AIX檢視記憶體及其交換空間的使用情況。
AIX的comp(計算記憶體)使用了4 GB,而nocomp(非計算記憶體)也使用了4GB,而交換空間則有很多的空閒。系統總共8GB的記憶體,而oracle中記憶體一般使用comp記憶體。而oracle的快取則使用nocomp,有很多sql語句一直沒有釋放,使用了4GB的記憶體,而AIXnocomp的最大值也為4GB,導致記憶體不足。
限制AIX的nocomp(非計算)記憶體最大值。
把AIX的
minperm% = 20
maxclient% = 80
maxperm% = 80
調整更低。
解決步驟:
檢視原來的AIX的minperm%、maxclient% 、maxperm%的值。如下:
Root使用者檢視:
>vmo –a
minperm% = 20
maxclient% = 80
maxperm% = 80
把minperm%設定成10,maxclient%設定成20,maxperm%設定成20
用root命令列執行:
1、
vmo -p -o minperm%=10
2、
vmo -p -o maxclient%=20
3、
vmo -p -o maxperm%=20
執行上面的操作,AIX的nocomp還不能釋放記憶體,重啟了AIX系統
# reboot
重啟之後,重啟oracle以及監聽器
SQL>startup
$lsnrctl start
啟動資料庫及其監聽器均正常,連線資料庫則正常。
備註:
minperm 和 maxperm 引數的值
作業系統透過把在曾經讀寫的記憶體頁留在實記憶體一滿足不同要求。如果檔案頁面在它們的頁幀被重新分配前被請求,那就節省了輸入輸出操作。該檔案頁面可以來自本地的或遠端的(如 NFS)系統。
頁幀使用的檔案相對用於計算的(工作或程式文字)段的檔案的比例是鬆散地受控於 minperm 和 maxperm 的值的:
如果 RAM 中檔案頁面所佔的百分比高於 maxperm,頁面替換的竊取只用於檔案頁。
如果 RAM 中檔案頁面所佔的百分比低於 minperm,頁面替換的竊取同時用於檔案頁和計算頁。
如果 RAM 中檔案頁面所佔的百分比介於 minperm 和 maxperm之間,頁面替換隻竊取檔案頁,除非檔案頁的重調入數量大於計算頁數。
其中Noncomp在20%-80%之間,此時記憶體頁交換演算法通常只交換檔案快取頁,但如果檔案快取頁的交換率大於程式頁時,程式頁也同樣被交換。由於SGA屬於Comp頁,資料檔案快取屬於Noncomp頁,而在資料大量訪問時,檔案快取頁的交換率大於程式頁(SGA),因此大量的SGA頁面被交換;為避免大量SGA頁被交換,需要降低maxperm%值到35%以下,這樣就只有檔案快取頁面被交換,減少了SGA交換的次數。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28371090/viewspace-1992381/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 從Oracle資料庫故障到AIX記憶體管理Oracle資料庫AI記憶體
- file-max設定過小導致oracle資料庫hang住Oracle資料庫
- 【大頁記憶體】Oracle資料庫配置大頁記憶體記憶體Oracle資料庫
- 異常連線導致的記憶體洩漏排查記憶體
- 資料庫伺服器記憶體不夠,DBW0 hang死導致sqlplus連不上資料庫伺服器記憶體SQL
- SQL Server 因設定最大記憶體過小導致無法啟動SQLServer記憶體
- Oracle - 資料庫的記憶體結構Oracle資料庫記憶體
- Oracle - 資料庫的記憶體調整Oracle資料庫記憶體
- 一次JVM記憶體問題導致的線上事故JVM記憶體
- 【AIX】記憶體AI記憶體
- PostgreSQL資料庫連線保持設定SQL資料庫
- 直播系統開發,pymssql連線資料庫 並設定資料格式為字典SQL資料庫
- 資料庫週刊46丨阿里雲釋出記憶體資料庫Tair;Oracle連線數過高案例;MySQL崩潰怎麼辦…資料庫阿里記憶體AIOracleMySql
- linq如何設定連線資料庫的字串資料庫字串
- oracle資料庫連續相同資料的統計方法Oracle資料庫
- 作業系統HugePage配置導致記憶體驟降探究作業系統記憶體
- Oracle:記憶體設定注意事項Oracle記憶體
- 一個導致JVM實體記憶體消耗大的BugJVM記憶體
- Python 連線 Oracle資料庫PythonOracle資料庫
- 計算機作業系統——虛擬記憶體與實體記憶體計算機作業系統記憶體
- 非易失性記憶體技術及資料庫記憶體資料庫
- 不能連線資料庫如何解決資料庫
- 資料庫的連線過程資料庫
- [Navicate]Navicate連線Oracle資料庫Oracle資料庫
- 使用instantclient連線oracle資料庫clientOracle資料庫
- C#連線Oracle資料庫,通過EF自動生成與資料庫表相關的實體類C#Oracle資料庫
- wait_type SOS_WORKER導致資料庫連線失敗AI資料庫
- 域名解析導致資料庫連線緩慢(hosts :files dns)資料庫DNS
- win11系統設定虛擬記憶體記憶體
- android Handler導致的記憶體洩露Android記憶體洩露
- oracle資料庫透過sqlplus連線的幾種方式介紹Oracle資料庫SQL
- ORACLE DSG資料同步軟體程式導致資料庫無法正常關閉Oracle資料庫
- Linux記憶體子系統——Locking Pages(記憶體鎖定)Linux記憶體
- Python連線三大資料庫MS Sql Server、Oracle、MySQLPython大資料資料庫ServerOracleMySql
- 【記憶體資料庫】TimesTen記憶體資料庫
- 資料庫:系統設計的核心資料庫
- Oracle dos連線資料庫基本操作Oracle資料庫
- ORACLE 配置連線遠端資料庫Oracle資料庫
- 計算機系統引導過程計算機