在32位的操作系統(如windows server 2003)oracle使用的總內存有2G限制。無論你為系統配置多大的物理內存,正常情況下都不能使oracle使用超過2G的內存(包含SGA、PGA等)。windows 提供了一種叫4GT(4G Tuning)的技術,使得oracle使用超過2G(不超過3G)的內存成為可能。
oracle使用超過2G內存,不超過3G內存的具體設置步驟:
1 首先應卸載實例,關閉oracle服務。
2 打開操作系統3G開關:
....修改boot.ini文件,在啟動windows項中添加 /3G 參數。修改過后的boot.ini文件應該類似以下內容:
[boot loader]
timeout=8
default=multi(0)disk(0)rdisk(0)partition(1)
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)="Microsoft Windows 2000 Advanced Server" /3G /fastdetect
注意在啟動win2K AdvServer的一欄里,多了一個 /3G 參數。這個參數的作用,就是讓windows啟動時,將自己的內核及支持程序裝載到內存地址 0xC0000000 到 0xFFFFFFFF 之間,給應用程序留出3G的空間來。
3 修改oralce 的 init.ora 文件
方法: (sid以szhii為例)
A、 在“運行”輸入cmd
B、 C:\Documents and Settings\Administrator>sqlplus /nolog
C、 Sql> conn sys/oracle@szhii as sysdba
D、 Sql> create pfile from spfile;
說明:(建創文件放在$ \ora92\database \下,文件名稱為init+(sid名稱).ora (如sid名稱為 szhii,則initszhii.ora) 備份此文件,然后到此文件進行修改)
修改內容如下:
..1) 確定oracle的緩沖區及共享池大小,假設作如下定義:
........ db_block_size = 4096
........db_block_buffers = 262144 # 緩沖區大小為1G (此項與文件中的db_cache_size沖突,因此刪除此項或屏閉此項)
........ share_pool_size = 314572800 # 使用300M共享池
..2) 添加下列各項內容:
........ use_indirect_data_buffers = true
........ # 告訴oracle可以使用間接內存(即可以使用windows讓出來的1G內存作為數據緩沖區) ........ pre_page_sga = true
........ # 把oracle SGA鎖定到內存中,不產生頁面交換文件(8i的參數可能是lock_sga = true)
........ # 對于一個有4G物理內存的系統來講,可能這一個參數并不是必須的
4 修改注冊表,定義oracle的DBbuffer使用常規內存大小
... AWE_WINDOW_MEMORY參數值,也就是在HKEY_LOCAL_MACHINE\ Software\Oracle\HOME0下中添加一個二進制值,名稱為AWE_WINDOW_MEMORY ,值的單位為字節,大小為你需要讓oracle使用普通內存作為緩存的大小(不是windows讓出來的1G,而是內存地址在0x00000000 到 0x7FFFFFFF 之間的內存大小)。假如設為209715200,即200M大小,那么oracle的數據緩沖區將占用200M的普通內存,其余部分(1G - 200M = 824M)則使用間接內存。
(說明:修改完成以后看量否正確可以使用修改的文件啟動數據庫,具體方法如下:
Sql> startup pfile=' D:\oracle\ora92\database\INITszhii.ORA';
正常啟動說明修改成功,否則修改不成功。
修改成功以后,調用生成spfile
Sql> create spfile from pfile
5 重新啟動操作系統,啟動數據庫。OK,你現在的 oracle 可以使用2G + 824M內存了。
oracle使用超過2G內存,不超過3G內存的具體設置步驟:
1 首先應卸載實例,關閉oracle服務。
2 打開操作系統3G開關:
....修改boot.ini文件,在啟動windows項中添加 /3G 參數。修改過后的boot.ini文件應該類似以下內容:
[boot loader]
timeout=8
default=multi(0)disk(0)rdisk(0)partition(1)
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)="Microsoft Windows 2000 Advanced Server" /3G /fastdetect
注意在啟動win2K AdvServer的一欄里,多了一個 /3G 參數。這個參數的作用,就是讓windows啟動時,將自己的內核及支持程序裝載到內存地址 0xC0000000 到 0xFFFFFFFF 之間,給應用程序留出3G的空間來。
3 修改oralce 的 init.ora 文件
方法: (sid以szhii為例)
A、 在“運行”輸入cmd
B、 C:\Documents and Settings\Administrator>sqlplus /nolog
C、 Sql> conn sys/oracle@szhii as sysdba
D、 Sql> create pfile from spfile;
說明:(建創文件放在$ \ora92\database \下,文件名稱為init+(sid名稱).ora (如sid名稱為 szhii,則initszhii.ora) 備份此文件,然后到此文件進行修改)
修改內容如下:
..1) 確定oracle的緩沖區及共享池大小,假設作如下定義:
........ db_block_size = 4096
........db_block_buffers = 262144 # 緩沖區大小為1G (此項與文件中的db_cache_size沖突,因此刪除此項或屏閉此項)
........ share_pool_size = 314572800 # 使用300M共享池
..2) 添加下列各項內容:
........ use_indirect_data_buffers = true
........ # 告訴oracle可以使用間接內存(即可以使用windows讓出來的1G內存作為數據緩沖區) ........ pre_page_sga = true
........ # 把oracle SGA鎖定到內存中,不產生頁面交換文件(8i的參數可能是lock_sga = true)
........ # 對于一個有4G物理內存的系統來講,可能這一個參數并不是必須的
4 修改注冊表,定義oracle的DBbuffer使用常規內存大小
... AWE_WINDOW_MEMORY參數值,也就是在HKEY_LOCAL_MACHINE\ Software\Oracle\HOME0下中添加一個二進制值,名稱為AWE_WINDOW_MEMORY ,值的單位為字節,大小為你需要讓oracle使用普通內存作為緩存的大小(不是windows讓出來的1G,而是內存地址在0x00000000 到 0x7FFFFFFF 之間的內存大小)。假如設為209715200,即200M大小,那么oracle的數據緩沖區將占用200M的普通內存,其余部分(1G - 200M = 824M)則使用間接內存。
(說明:修改完成以后看量否正確可以使用修改的文件啟動數據庫,具體方法如下:
Sql> startup pfile=' D:\oracle\ora92\database\INITszhii.ORA';
正常啟動說明修改成功,否則修改不成功。
修改成功以后,調用生成spfile
Sql> create spfile from pfile

5 重新啟動操作系統,啟動數據庫。OK,你現在的 oracle 可以使用2G + 824M內存了。