oracle 9i 32位系統 使用VLM 突破SGA 1.7G限制
最近公司有幾臺舊環境的機器,32位RHEL AS 4.8的系統,oracle 9i的資料庫,資料庫的壓力比較大,記憶體都是8GB的,但是oracle在32位系統中,SGA只能使用不超過1.7G,多出來的記憶體空置著,頂多快取下系統檔案,我開始想辦法把這部分記憶體利用起來,還是要靠oracle的VLM特性,實際上就是利用linux的tmpfs(記憶體檔案系統)。
1、啟動資料庫,檢視原有主要引數配置情況:
1、啟動資料庫,檢視原有主要引數配置情況:
啟動sqlplus,匯出初始化引數檔案:
SQL>create pfile from spfile
備份init和spfile。
2、配置linux引數
(1)修改/etc/fstab 的shm,並新增許可權
tmpfs /dev/shm tmpfs defaults,size=4G,uid=500,gid=500 0 0
tmpfs /dev/shm tmpfs defaults,size=4G,uid=500,gid=500 0 0
(2)增加 max locked memory ulimit
為了適應VLM 視窗大小(預設為512M)需要調整Oracle鎖定的記憶體地址空間的大小(在預設情況下為4k),本次中將Oracle鎖定的記憶體設定為接近4G,新增如下內容到/etc/security/limits.conf
oracle soft memlock 4194303
oracle hard memlock 4194303
注:在32位的Oracle中,鎖定記憶體的大小不能超過4G,計算公式:4*1024*1024-1。
(3)切換到Oracle使用者,輸入如下命令,使第(2)步的設定生效:
$ ulimit
(4)輸入“ulimit -l”可以檢視當前設定的結果
3、配置Oracle
(1)修改initorcl.ora檔案中如下引數設定,如果引數檔案中沒有,則新增下述引數設定。
*.use_indirect_data_buffers=true
*.db_block_buffers = 510000
*.shared_pool_size = 252984832 (這個值不能太大,也不能太小,如果太小了,在載入這個pfile時系統會提示你把這個值放到多少at least,按照系統提示的值放就行了)
(本次計劃將SGA區調整到接近4G,由於db_block_size=8192,所以設定db_block_buffers為510000,計算公式:4*1024*1024/8.192-200)
將db_cache_size引數設定刪除(使用VLM技術增大SGA到2.6G時db_cache_size引數將失效,必須使用db_block_buffers引數。)
將sga_target引數刪除(預設沒配置)
刪除:
*.db_cache_size=xxxxxx
*.java_pool_size= xxxxxx
*.large_pool_size= xxxxxx
*.shared_pool_size= xxxxxx
**************************
#我的設定如下(4G):
*.use_indirect_data_buffers=true
*.db_block_buffers = 510000
*.shared_pool_size = 419430400
*.pga_aggregate_target=629145600
*.pga_aggregate_target=629145600
*******************************
(2)以initorcl.ora引數檔案啟動並關閉資料庫,檢視引數設定是否生效:
SQL>startup pfile='/opt/app/oracle/product/9.2.0/dbs/initorcl.ora'
啟動沒問題,再建立spfile
SQL> create spfile from pfile;
正常重啟資料庫。
可以發現, data buffer部分的共享記憶體來自VLM,但SGA的其他部分,如shared_pool使用的共享記憶體來自系統的普通共享記憶體;
kernel.shmmax的設定應大於等於除data buffer以外的其他SGA元件之和;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/14184018/viewspace-1982267/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Windows32位系統下Oracle記憶體突破1.7G的設定WindowsS3Oracle記憶體
- oracle 9i 突破win2003記憶體限制Oracle記憶體
- Oracle HowTo:如何在Linux上擴充套件SGA超過1.7GOracleLinux套件
- 9i增大SGA操作
- [轉載]在32 bit windows設定大於1.7G SGAWindows
- ORACLE 9i statspack使用Oracle
- windows 2003 x86 32位中Oracle 10G資料庫使用超過1.7G的sga的方法WindowsOracle 10g資料庫
- AIX 使用者的系統資源使用限制AI
- UNIX系統下的使用者限制(轉)
- oracle體系結構梳理---SGA+PGAOracle
- win10系統下遠端桌面功能被限制如何使用CredSSP加密OracleWin10加密Oracle
- oracle 10g on windows 2003 32bit sga限制問題Oracle 10gWindows
- Oracle 10G 如何使用超過1.7G的記憶體Oracle 10g記憶體
- Oracle 9i statspack 使用手冊Oracle
- oracle中sequence使用的限制Oracle
- 32位windows系統下oracle10g認記憶體超過1.7G的設定WindowsOracle記憶體
- 【限制】32G,作業系統限制?資料庫限制?作業系統資料庫
- 9i並行執行的限制並行
- 設定系統全域性區SGA命令
- Oracle 體系結構 SGA 和PGA 總結Oracle
- oracle sga相關Oracle
- oracle sga構成Oracle
- 突破oracle for win2K的2G記憶體限制Oracle記憶體
- 9i 下sga_max_size 和SGA中各記憶體分配項的關係記憶體
- Windows系統崩潰後恢復Oracle 9i資料庫WindowsOracle資料庫
- Oracle 9i中監視索引的使用Oracle索引
- 作業系統使用者最大程式數限制maxuproc作業系統
- 突破oracle for win2K的2G記憶體限制 (轉)Oracle記憶體
- 突破 DockerHub 限制,全映象加速服務Docker
- oracle 9i 在XP系統上無法安裝的問題Oracle
- oracle10g SGAOracle
- oracle SGA配置和管理Oracle
- ORACLE SGA 的分配(轉)Oracle
- Oracle 9i LogMiner工具使用說明Oracle
- windows 2008作業系統不支援oracle 9i 和oracle 10.1版本Windows作業系統Oracle
- oracle 9i 系統空間很有限的情況下的遷移Oracle
- C++ 突破私有成員訪問限制C++
- ORACLE SGA之shared poolOracle