您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關在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
以上就是在AIX5.3中將Oracle SGA定在內存中的步驟是怎樣的,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。