關於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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- WINDOWS平臺上擴充套件SGA (zt)Windows套件
- ORACLE 擴充套件Oracle套件
- Sentinel 的一些小擴充套件套件
- chrome擴充套件推薦:此刻、今天、最近~一個關於時間管理的擴充套件 – MomentumChrome套件
- centos安裝php的oracle擴充套件CentOSPHPOracle套件
- 分享一些好用的 Chrome 擴充套件Chrome套件
- 斐波那契問題和擴充套件套件
- [20221212]關於pre_page_sga引數的問題.txt
- 關於翻譯包的擴充套件 dimsav/Laravel-translatable套件Laravel
- kotlin 擴充套件(擴充套件函式和擴充套件屬性)Kotlin套件函式
- 記錄一些有關資料庫操作的擴充套件包資料庫套件
- 基於MongoDB.Driver的擴充套件MongoDB套件
- 分享自己寫的關於順豐同城配送的擴充套件包套件
- 關於Redis的一些小問題Redis
- chrome擴充套件chrome.extension.getBackgroundPage()為undefined的問題原因Chrome套件Undefined
- 基於 GatewayWorker 開發的 Laravel 擴充套件GatewayLaravel套件
- 基於PHP擴充套件的WAF實現PHP套件
- 【Kotlin】擴充套件屬性、擴充套件函式Kotlin套件函式
- [20201207]關於ORACLE IMU的一些疑問.txtOracle
- ?用Chrome擴充套件管理器, 管理你的擴充套件Chrome套件
- Swift在擴充套件中關聯物件Swift套件物件
- Robot Framework(15)- 擴充套件關鍵字Framework套件
- PHP擴充套件開發就是一個自己的PHP擴充套件PHP套件
- 安裝量終於破千了!聊聊瀏覽器擴充套件開發的相關問題與解決方案瀏覽器套件
- SQL_Postgresql-一些擴充套件和應用SQL套件
- 使用基於策略的網路擴充套件KubernetesDeployments套件
- 擴充套件工具套件
- Sanic 擴充套件套件
- Mybatis擴充套件MyBatis套件
- SpringMVC 擴充套件SpringMVC套件
- 分享一些好用的資源(擴充套件、介面、網站)套件網站
- sql教程中一些知識的實際擴充套件SQL套件
- Gorm 的使用心得和一些常用擴充套件 (一)GoORM套件
- [外掛擴充套件] 已安裝外掛板塊問題套件
- 正則的擴充套件套件
- SRAM的容量擴充套件套件
- 使用Kotlin擴充套件函式擴充套件Spring Data案例Kotlin套件函式Spring
- JMeter 擴充套件開發:擴充套件 TCP 取樣器JMeter套件TCP