關於32位oracle擴充套件SGA的一些問題
由於32位下作業系統的程式訪問4g(2的32次方)以下的虛擬地址,而這4g的地址又要為核心、可執行程式碼、共享庫等保留地址空間,所以,實際上可以留給SGA的空間只有1.7G左右。
但32位的linux 為可執行程式碼、共享庫保留的地址空間太大,我們可以降低這部分的地址空間,騰出更多的虛擬地址空間給SGA,從而達到擴充套件SGA的目的。
關於32位oracle擴充套件SGA的一些問題:
一、擴充套件的基本步驟
1. lowering the mapped_base in Linux
降低linux程式的mapped_base。這步需要用shell修改程式的mappend_base。
步驟如下:
1)建立一個shell指令碼,假設叫/usr/bin/lower_mapped_base.sh,指令碼內容如下:
#/bin/sh
echo 268435456 > /proc/$PPID/mapped_base
2)修改指令碼的屬性
分別執行如下命令:
chown root.root lower_mapped_base.sh
chmod 755 lower_mapped_base.sh
3)授權,使其他使用者可以透過sudo執行該指令碼
echo "oracle ALL=NOPASSWD: /usr/bin/lower_mapped_base.sh" >> /etc/sudoers
4)讓oracle使用者登入時自動執行指令碼
在oracle使用者下執行:
echo "sudo /usr/local/bin/ChangeMappedBase" >> ~/.bash_profile
或者直接編輯~/.bash_profile檔案,假如下面這一句:
sudo /usr/local/bin/ChangeMappedBase
到這裡,這一步工作就算完成了。
注意:
1)程式與oracle共享庫的mapped_base必須一致,否則會出錯。如用修改了程式的mapped_base的伺服器的sqlplus連線沒有編譯過共享庫的資料庫,就會報錯。
2)這一步驟只需要在Linux as 2.1上執行,在linux as3/4上,共享庫的mapped_base已經降得很低,不需要再手工去降低它了。
2. lowering the sga_base in Oracle
降低SGA的起點,也就是sga_base。這步需要編譯oracle的共享庫。步驟如下:
1)關閉資料庫,並進入相關目錄
SQL> shutdown
cd $ORACLE_HOME/rdbms/lib
2)在修改前做備份
如果ksms.s檔案不存在可跳過這一步
[[ ! -f ksms.s_orig ]] && cp ksms.s ksms.s_orig
3)修改SGA起點地址
genksms -s 0x12000000 > ksms.s
其中0x12000000表示300M,可以從下面查到(預設是0x40000000,相當於1G)
SQL> select to_number('12000000','xxxxxxxxxxxxxxx') from dual;
TO_NUMBER('12000000','XXXXXXXX
------------------------------
301989888
4)新建ksms檔案
make -f ins_rdbms.mk ksms.o
5)重新編譯
實際上是重新生成$ORACLE_HOME/bin/oracle這個檔案:
make -f ins_rdbms.mk ioracle
到此,降低SGA起點得工作就完成了。
二、不同版本的linux必須執行的步驟
其中1表示lowering the mapped_base in Linux
2表示lowering the sga_base in Oracle
9iR2 10gR1 10gR2*
====================================
RHEL 2.1 x86 1,2 1,2 ---
RHEL 3 x86 2 2 2*
RHEL 4 x86 2 2 2*
SLES 8 x86 1,2 --- ---
SLES 9 x86 1,2 1,2 1,2**
從以上圖表可以看出,要擴充套件SGA:
. linux 2.1需要執行兩個步驟
. linux as3/4都只需要執行第二個步驟。
. 10g r1需要執行第二步
. 10g r2兩個步驟都不需要執行
執行了擴充套件SGA的步驟後,理論上可使用的SGA大小為:
. 9i/10g r1在smp kernel 核心下為2.7 G
. 9i/10g r1在hugemem kernel下為3.42G(不擴充套件的話為2.7G)
. 10g r2在smp kernel 核心下為2.2 G
. 10g r2在smp kernel 核心下為3.3 G
三、其它問題
1、以上討論都是基於不使用VLM前提的。實際上,在LINUX AS 2.1/3可以使用VLM,可以把32位的linux虛擬成36位的,這樣就不需要以做以上步驟來擴充套件SGA了。
2、不同的linux核心下在不同的oracle版本下可使用的最大SGA是不一樣的
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/231499/viewspace-63749/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 關於Interceptor擴充套件問題套件
- 關於使用擴充套件包的問題。套件
- 請教關於JAVA動態擴充套件問題Java套件
- RHEL4.5 for x86的ORACLE SGA擴充套件Oracle套件
- 關於一些nginx的高階擴充套件應用Nginx套件
- WINDOWS平臺上擴充套件SGAWindows套件
- 關於一些nginx的高階擴充套件應用薦Nginx套件
- WINDOWS平臺上擴充套件SGA (zt)Windows套件
- 關於控制檔案的擴充套件問題 (全面) - Expanded controlfile section套件
- ORACLE 擴充套件Oracle套件
- Sentinel 的一些小擴充套件套件
- 關於block的ITL和dump的擴充套件BloC套件
- 關於給apache新增PHP擴充套件的方法ApachePHP套件
- oracle 關閉資料檔案的擴充套件Oracle套件
- 關於基於 Jdon+Disruptor 的 橫向擴充套件套件
- 關於“50% CPU 佔有率”題目的內容擴充套件套件
- 擴充套件的持久化上下文問題套件持久化
- chrome擴充套件推薦:此刻、今天、最近~一個關於時間管理的擴充套件 – MomentumChrome套件
- chrome擴充套件推薦:此刻、今天、最近~一個關於時間管理的擴充套件 - MomentumChrome套件
- 斐波那契問題和擴充套件套件
- 分享一些好用的 Chrome 擴充套件Chrome套件
- oracle logfile 擴充套件Oracle套件
- Oracle HowTo:如何在Linux上擴充套件SGA超過1.7GOracleLinux套件
- PHPWAMP安裝Redis擴充套件的方式與相關擴充套件的下載PHPRedis套件
- 關於翻譯包的擴充套件 dimsav/Laravel-translatable套件Laravel
- 分享自己寫的關於順豐同城配送的擴充套件包套件
- kotlin 擴充套件(擴充套件函式和擴充套件屬性)Kotlin套件函式
- C# 擴充套件方法 借籤於 Objective-C 擴充套件類.C#套件Object
- 記錄一些有關資料庫操作的擴充套件包資料庫套件
- 基於MongoDB.Driver的擴充套件MongoDB套件
- 基於 Bootstrap 的 UI 擴充套件:StyleBootstrapbootUI套件
- centos安裝php的oracle擴充套件CentOSPHPOracle套件
- 表空間無法擴充套件問題處理套件
- chrome擴充套件chrome.extension.getBackgroundPage()為undefined的問題原因Chrome套件Undefined
- WCF擴充套件:行為擴充套件Behavior Extension套件
- 基於 GatewayWorker 開發的 Laravel 擴充套件GatewayLaravel套件
- 基於PHP擴充套件的WAF實現PHP套件
- 關於Redis的一些小問題Redis