在AIX5.3中將Oracle SGA定在記憶體中的詳細步驟
在一些作業系統平臺中,我們可以將Oracle的SGA定在記憶體裡,這樣可以避免頁交換,從而提高Oracle的效能。在AIX下,要把作業系統的v_pinshm引數設定為1,否則即使在Oracle中將LOCK_SGA設定為TRUE也是不管用的。然而僅僅知道這兩個引數還遠不夠用的,必須對AIX記憶體管理有一定了解。本文要求作業系統是5.3 ML01以上,Oracle在9.2.0.4以上。
首先我們來檢查一下作業系統版本:
XXIBM:# oslevel -r
5300-07
可見作業系統版本滿足我們的要求。如果這個輸出是5300-00,那麼就先要給作業系統打補丁。Oracle很多的問題都和作業系統有緊密的聯絡。
接下來看看有多少記憶體。檢視記憶體的方法有很多,隨便用哪一種吧。
XXIBM:# bootinfo -r
64749568
上面的輸出顯示作業系統有64G記憶體。
再用rmss -p來看看當前可用記憶體是否與實際記憶體一致。因為有的時候可能出於測試的考慮,我們可能用rmss把記憶體模擬到某個大小(當然只能向小模擬)。
XXIBM:# rmss -p
Simulated memory size is 63231.9375 Mb.
如果上面的輸出小於實際的記憶體,就要考慮用rmss -r來將記憶體恢復到實際大小。
接下來讓我們檢查幾個有關記憶體的引數設定。AIX5.3的預設記憶體引數
首先檢查lru_file_repage的設定。這是5.3新增的引數,這個引數預設為1,但IBM推薦在ML01之後,將這個引數設定為0。
XXIBM:# vmo -L lru_file_repage
NAME CUR DEF BOOT MIN MAX UNIT TYPE DEPENDENCIES
--------------------------------------------------------------------
lru_file_repage 1 1 1 0 1 boolean D
在上面的輸出中,CUR代表引數的當前值,DEF代表引數預設值,BOOT代表下次啟動值。
用下面的命令把lru_file_repage設定為0。下面的設定只是在當前生效,不改變重啟的設定。
XXIBM:# vmo -o lru_file_repage=0
Setting lru_file_repage to 0
接下來檢查v_pinshm,應該改成1。
XXIBM:# vmo -L v_pinshm
NAME CUR DEF BOOT MIN MAX UNIT TYPE DEPENDENCIES
--------------------------------------------------------------------
v_pinshm 1 0 0 0 1 boolean D
XXIBM:# vmo -o v_pinshm=1
Setting v_pinshm to 1
檢查一下minperm%、maxperm%等引數。在使用lru_file_repage之前,我們習慣把maxperm%設定很小,如20%。但從5.3開始,IBM建議改大。這個引數預設是80,IBM建議可以考慮改成90。至於minperm%,預設是20。如果記憶體在32G-64G,可以改成10,小於32G,改成5,大於64G,保持預設20。
XXIBM:# vmo -o minperm%=10
Setting minperm% to 10
XXIBM:# vmo -o maxperm%=90
Setting maxperm% to 90
作業系統的引數調整好了之後,剩下的工作就簡單了。登入到Oracle,檢視一下LOCK_SGA引數的設定:
XXIBM:# su - oracle
$ sqlplus /nolog
SQL*Plus: Release 9.2.0.6.0 - Production on Fri Sep 19 08:40:10 2008
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
SQL> conn / as sysdba
Connected.
SQL> show parameter lock_sga
NAME TYPE VALUE
------------------------------------ -----------
lock_sga boolean FALSE
這個引數當前為FALSE。要想把SGA定在記憶體中,要把這個引數改成TRUE。
SQL> alter system set lock_sga=true scope=spfile;
System altered.
接下來計算一下當前SGA的大小:
SQL> select sum(value)/1024/1024 from v$sga;
SUM(VALUE)/1024/1024
--------------------
35941.0215
這個大小一般不要超過實體記憶體的60%。太小也不好,利用不充分。從上面的輸出來看,當前的SGA大小基本合適。當然可進一步檢視DB_CACHE_SIZE等引數設定是否合理,以確定是否要調整,這裡略過。
設定好之後要重新啟動資料庫。如果資料庫能夠順利啟動,那麼說明設定沒問題。
那麼怎樣才能看出ORACLE的SGA是否定在記憶體裡呢?可以透過svmon命令來檢視。這個命令要用超級使用者才可以執行。
$ su -
root's Password:
XXIBM:# svmon -P -t 100|grep -p Pid|head
--------------------------------------------------------------------
Pid Command Inuse Pin Pgsp Virtual 64-bit Mthrd 16MB 225546 oracle 9313207 9270407 2232 9308982 Y N N
--------------------------------------------------------------------
Pid Command Inuse Pin Pgsp Virtual 64-bit Mthrd 16MB
119692 oracle 9312614 9270438 2232 9308978 Y N N
--------------------------------------------------------------------
Pid Command Inuse Pin Pgsp Virtual 64-bit Mthrd 16MB
注意上面輸出的Inuse和Pin,還有Command。Command對應oracle,說明程式資訊是Oracle的。Inuse代表使用中的記憶體頁,Pin代表定在記憶體中的頁數量,每頁大小4KB。這兩個值如果相差甚遠,則說明隨SGA沒有定在記憶體裡,如果相差很近,則說明定在了記憶體裡。
如果想在作業系統重啟後Oracle也能把SGA定在記憶體裡,並且正常工作,就要把本文一開始設定的v_pinshm、lru_file_repage等設定為重起作業系統後也是想要的值。例如:
XXIBM:# vmo -p -o v_pinshm=1
Setting v_pinshm to 1 in nextboot file
Setting v_pinshm to 1
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29067253/viewspace-2142354/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 將SGA全部PIN到記憶體中記憶體
- Linux中設定hugepages 在記憶體中 lock SGALinux記憶體
- Oracle Stream配置詳細步驟Oracle
- oracle12c之 控制pdb中sga 與 pga 記憶體使用Oracle記憶體
- ORACLE 記憶體管理 之四 SGAOracle記憶體
- 記憶體_SGA記憶體
- Oracle記憶體結構:ProcessMemory的詳細資訊Oracle記憶體SSM
- Oracle記憶體結構研究-SGA篇Oracle記憶體
- TimesTen記憶體碎片(高水位)回收步驟詳解記憶體
- Linux中更換yum源為阿里的詳細步驟Linux阿里
- AIX5.3安裝oracle 10g 步驟AIOracle 10g
- oracle記憶體結構:SGA的區域資訊Oracle記憶體
- 【SGA】【PGA】普適的Oracle記憶體分配策略Oracle記憶體
- 增加虛擬記憶體的操作步驟記憶體
- Swift 中的記憶體管理詳解Swift記憶體
- Java中的記憶體模型詳解Java記憶體模型
- ORACLE資料庫升級詳細步驟Oracle資料庫
- Oracle記憶體結構(三)----Process Memory的詳細資訊Oracle記憶體
- SGA與共享記憶體記憶體
- SGA中各池記憶體分配顆粒大小與SGA_TARGET引數的關係記憶體
- 9i 下sga_max_size 和SGA中各記憶體分配項的關係記憶體
- Oracle記憶體結構(一)----SGA的區域資訊Oracle記憶體
- LVM建立的詳細步驟LVM
- MySQL的安裝步驟(詳細)MySql
- Oracle Stream配置詳細步驟(使用者模式)Oracle模式
- aix 中SMITTY LV 操作的詳細步驟擴充目錄空間AIMIT
- 將Hibernate配置到Weblogic JNDI上的詳細步驟Web
- Oracle Exadata與SGA快取記憶體CQOracle快取記憶體
- oracle例項記憶體(SGA和PGA)調整Oracle記憶體
- oracle資料庫記憶體分配(sga和pga)Oracle資料庫記憶體
- 陣列在記憶體中的變化陣列記憶體
- Oracle中SQL語句解析的步驟OracleSQL
- 配置PLSQL Developer詳細步驟SQLDeveloper
- IOS之GCD詳細步驟iOSGC
- Oracle記憶體結構(三)----Process Memory的詳細資訊(轉)Oracle記憶體
- Oracle記憶體結構(二)----Shared Pool的詳細資訊Oracle記憶體
- Oracle記憶體結構(一)----SGA的區域資訊(轉)Oracle記憶體
- Oracle體系結構之記憶體結構(SGA、PGA)Oracle記憶體