環境:
服務器操作系統是windows2003(32位), 硬件配置為2C(CPU)8G(Memory)PC服務器, 用做Oracle服務器.
oracle版本為10.1.0.2, $oracle_home為d:/oracle/product, sid為orcl.
方案1:
--------------------------------------------------------------------------
因為服務器是32位的操作系統, 所以最大只能分2G內存給Oracle使用, 規劃如下:
SGA:1.72G
PGA:250M
操作步驟
1. 創建pfile
SQL>create pfile from spfile
這樣就在d:/oracle/product/10.1.0/db_1/database目錄下面多1個文件INITorcl.ORA
或者copy d:/oracle/product/10.1.0/admin/orcl/pfile/init.ora.XXXXXXXX到上述目錄, 名字改成INITorcl.ORA
init.ora.XXXX也是個pfile文件, 不妨試著用這個文件啟動你的數據庫
SQL>startup pfile='d:/oracle/product/10.1.0/admin/orcl/pfile/init.ora.XXXXXXXX'
特別是你改動參數導致數據庫無法啟動的情況下, 用這個文件恢復你的spfile將非常有用
SQL>create spfile from pfile='d:/oracle/product/10.1.0/admin/orcl/pfile/init.ora.XXXXXXXX'
2.修改pfile的內容
修改后主要內容為
sga_target=1700000000(1.7G左右)
lock_sga=true
pre_aggregate_tagert=250000000(250M左右)
workarea_size_policy=auto
pre_page_sga=true
sga_max_size=1720000000(1.72G左右)
3.根據pfile啟動數據庫
SQL>startup pfile='d:/oracle/product/10.1.0/db_1/database/INITorcl.ORA'
如果不能啟動, 可能是某些參數的原因, 那么就修改INIToracl.ORA的配置文件, 直到能正常啟動為止.
4.創建spfile
SQL>create spfile from pfile
上訴命令將覆蓋d:/oracle/product/10.1.0/db_1/database/下的spfile文件"SPFILEORCL.ORA"
當然你也可以顯式的指明pfile
SQL>create spfile from 'd:/oracle/product/10.1.0/db_1/database/INITorcl.ORA'
5.用spfile啟動數據庫并調整性能
SQL>startup
然后在oem中調整各種參數,調整后的參數將寫在spfile中,但是不會寫在pfile中
總結:這樣下來,感覺服務器的內存并沒有被充分利用, 8G服務器只有2G給了Oracle使用, 并不是非常理想,但是我們最終還是采用了這種方案
這是因為:
1:我們試過另外一種方案后感覺速度不但沒有提升, 反而有下降, 可能是因為服務器調整的參數有些問題
2:但是我們不愿意冒著修改服務器參數的風險, 尤其是1個在線系統
3:還有1個重要的原因就是客戶答應我們很快用64位的windows 2003操作系統
方案2:
--------------------------------------------------------------------------------------------------
我們使用AWE的方法來使得Oracle能使用大于2G的內存, 規劃如下:
DB_BUFFER_SIZE:3.2G
large_pool:150M
java_pool:150M
share_pool:800M
PGA:500M
操作步驟
1. 修改服務器啟動參數
修改c:/boot.ini文件, 在啟動的操作系統參數后加上/3GB /PAE, 如:
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows Server 2003, Enterprise" /noexecute=optout /fastdetect /3GB /PAE
2. 注冊表增加1個二進制鍵值
路徑為hkey_local_machine/software/oracle/key_Oradb10g_home1/, 鍵值為
AWE_WINDOW_MEMORY=20000000000
3. 創建pfile
SQL>create pfile from spfile
這樣就在d:/oracle/product/10.1.0/db_1/database目錄下面多1個文件INITorcl.ORA,
或者copy d:/oracle/product/10.1.0/admin/orcl/pfile/init.ora.XXXXXXXX到上述目錄, 名字改成INITorcl.ORA
init.ora.XXXX也是個pfile文件,不妨試著用這個文件啟動你的數據庫
SQL>startup pfile='d:/oracle/product/10.1.0/admin/orcl/pfile/init.ora.XXXXXXXX'
特別是你改動參數導致數據庫無法啟動的情況下, 用這個文件恢復你的spfile將會非常有用
SQL>create spfile from pfile='d:/oracle/product/10.1.0/admin/orcl/pfile/init.ora.XXXXXXXX'
2.修改pfile的內容
修改后主要內容為
db_block_buffers=400000
db_block_size=8192
java_pool_size=150000000(150M)
job_queue_processes=10
large_pool_size=150000000(150M)
shared_pool_size=800000000(800M)
lock_sga=true
pre_aggregate_tagert=500000000(250M左右)
workarea_size_policy=auto
pre_page_sga=true
use_indirect_data_buffers=true
注意1:db_buffer_size=db_block_buffers*db_block_size, db_block_size為數據庫默認值, 不要修改,
比如你的db_block_size為4096話, 那么你的db_block_buffers應該為80000, 使得它們的乘積為3.2G
注意2:pfile不要有SGA_TARGET這個參數, 也不要有db_cache_size這個參數, SGA_MAX_SIZE也不需要
3.根據pfile啟動數據庫
SQL>startup pfile='d:/oracle/product/10.1.0/db_1/database/INITorcl.ORA'
如果不能啟動, 可能是某些參數的原因, 那么就修改INIToracl.ORA的配置文件, 直到能正常啟動為止。
4.創建spfile
SQL>create spfile from pfile
上訴命令將覆蓋d:/oracle/product/10.1.0/db_1/database/下的spfile文件"SPFILEORCL.ORA"
當然你也可以顯式的指明pfile
SQL>create spfile from 'd:/oracle/product/10.1.0/db_1/database/INITorcl.ORA'
5.用spfile啟動數據庫并調整性能
SQL>startup
然后在oem中調整各種參數, 調整后的參數將寫在spfile中, 但是不會寫在pfile中
總結:這樣以來, 大概有5G的內存給服務器使用, 但是執行同樣的SQL并沒有效率上的提高, 可能并發的時候效率有所提高, 所以這種方案最終放棄, 要想使用大內存, 建議使用64位數的操作系統代替32位的操作系統, 這樣使人更放心.