racle 10G 如何使用超過1.7G的記憶體
Oracle
(2009-10-21 18:20:17)
標籤: | |
如果你的版本是32位的,如果不做一些配置你是無論如何使用不到
前兩天公司裡一個系統,需要配置這樣的環境,對於我這樣的ORACLE所謂的高手,有點不知所措,甚至要硬著頭皮去搞定它,這可是到新公司接到的第一件活。必須搞定,否則ORACLE 就圖有虛名了。於是馬上上網搜一下,文章果然,但是大都雷同,而且針對的是ORACLE9I的。我在的時候,也把客戶的環境搞雜了,實在慚愧呀。不過經過一天多的折騰,也算是搞出來了。
軟體環境:
Oracle
OS:Windows 2003 SP2 32bit
硬體環境:記憶體:
CPU:Intel Core(TM)2 6300 1.86Ghz
這個環境很重要,特別是ORACLE的版本,跟ORACLE9i的配置肯定是不一樣的。
1)作業系統配置AWE,主要是修改boot.ini檔案
右擊"我的電腦",選擇"屬性"-->高階選項卡,找到“啟動與故障”,單擊“設定”,然後單擊“編輯”,
加/PAE選項,修改後的檔案如下:
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(2)WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(2)WINDOWS=" Server 2003, Enterprise" /noexecute=optout /fastdetect/pae
multi(0)disk(0)rdisk(0)partition(1)WINDOWS="Microsoft Windows XP Professional" /fastdetect /NoExecute=OptIn
2)配置oracle可以使用的記憶體,修改登錄檔。
找到ORACLE的登錄檔項HKEY_LOCAL_MACHINESOFTWAREORACLEKEY_OraDb
新增一個字串值項:AWE_WINDOW_MEMORY,這個值是你準備分配給用的最大記憶體數(以BYTE為單位),例如你想分配
4*1024*1024*1024
3)獲取可編輯的ORACLE初始化引數檔案
Windows命令列
Sqlplus "/ as sysdba" REM (如果登陸不進去將當前使用者加入到ora_dba組中)
SQLPLUS>CREATE PFILE='初始化引數檔案的路徑' from spfile
SQLPLUS>Shutdown immediate
SQLPLUS>exit
4)編輯ORACLE初始化引數檔案請用Ulatra editor(當然其他的也可以,但是千萬不要用記事本)開啟在第三步生成的初始化引數檔案(最好能一下,以便出現差錯的時候還可以使用最初的檔案啟動)
第一登出掉以下行:
sga_max_size
sga_target
DB_CACHE_SIZE
修改或者新增以下引數
*.db_block_buffers=262144 #等於原來的DB_CACHE_SIZE/db_block_size,例如你希望DB_CACHE_SIZE的大小是
*.SHARED_POOL_SIZE=419430400 #是以byte為單位的
*.log_buffer=73400320 #是以byte為單位的
*.use_indirect_data_buffers=true #這個引數的含義是我們是透過設定db_block_buffers來計算得到DB_CACHE_SIZE
5)啟動ORACLE,並重新建立spfile。
Windows命令列下執行:
Sqlplus "/ as sysdba"
SQLPLUS>Startup pfile='第四步修改後的初始化引數檔案的路徑'
SQLPLUS>Create Spfile from pfile='第四步修改後的初始化引數檔案的路徑' #你會發現在你的ORACLE HOME/Database目錄下新生成了一個檔案SPFILEOracleSID.ORA
SQLPLUS>Shutdown immediate
6)將第三步生成的檔案ORACLE HOME/Database/SPFILEOracleSID.ORA複製到ORACLE HOME/dbs下
前面兩步的目的是恢復預設的以spfile引數檔案方式啟動資料庫,否則你的設定都將無效
7)重新啟動Oracle
Windows命令列
Sqlplus "/ as sysdba"
SQLPLUS>Startup
本文來自:http://www.cnblogs.com/SharkXu/archive/2009/03/31/oracle10g_awe.html
google_protectAndRun("ads_core.google_render_ad", google_handleError, google_render_ad);
oracle中
來源:自學網 釋出日期:
由於工作需要,單位的進行升級,使用至強CPU,記憶體為8GB,系統為windows2003,資料庫為oracle8i所以一直在查詢如何在32位系統中使oracle使用超過
1、由於32位系統記憶體定址只能到
2、在作業系統中啟用PAE(Physical Address Extensions)功能,這樣oracle便可以透過windows的AWE(Address Windowing Extensions)API使用多餘
3、給執行Oracle資料庫的作業系統帳戶,授予"Lock Pages in Memory"的系統許可權。執行gpedit.msc開啟“組策略”控制檯
“計算機配置”->“Windows設定”->“安全設定”->“本地策略”->“使用者權利指派”雙擊右邊“鎖定記憶體中的頁”(或名為"記憶體中鎖定頁"),在“本地安全策略設定”對話方塊中,單擊“新增”按鈕,在“選擇使用者或組”對話方塊中,新增有權執行oracle的帳戶。
4、配置oracle資料庫的引數檔案(init*.ora),新增USE_INDIRECT_DATA_BUFFERS=TRUE引數,表示使用擴充套件的記憶體。
5、修改登錄檔中的AWE_WINDOW_MEMORY鍵值為合適值。該值表示在3GB記憶體中(如果使用了/3GB開關,如果沒有使用該開關則為2GB)有多少用於資料庫塊快取。注意:(1)該值位置在HKEY_LOCAL_MACHINESOFTWAREORACLEHOME0為二進位制型別,單位為bytes。(2)如果不存在表示使用預設值1GB。(3)該值太大或太小都有可能導致資料庫無法啟動。這裡解釋一下:儘管我們現在擁有超過4GB的記憶體,但是這些多餘的記憶體並不是oracle可以隨便使用的,這些記憶體只能用於資料庫塊快取(即db_buffer),而像share Pool,log buffer等只能儲存在應用程式可訪問的3GB記憶體中(如果使用了/3GB開關,如果沒有使用該開關則為2GB)。在這裡我將4GB以外記憶體中的資料庫塊快取叫做AWE資料塊快取(自己起的名字:-))。這裡又有問題了,oracle緩衝的資料塊並不能全部儲存到4GB以外的記憶體中,還必須在應用程式可直接訪問的3GB記憶體(如果使用了/3GB開關,如果沒有使用該開關則為2GB)中使用一部分空間來儲存,這一部分記憶體我稱為直接資料塊快取(自己起的名字:-))。也就是說“資料塊快取=AWE資料塊快取+直接資料塊快取”,為什麼會這樣呢,因為oracle緩衝到記憶體中的每個資料塊的頭部必須儲存到“直接資料塊快取”中,是不能夠儲存到“AWE資料塊快取”中的,並且每個資料塊的大小(db_block_size)和資料塊的多少(db_block_buffers)都會影響到頭部佔用空間的多少。並且訪問“直接資料塊快取”要比“AWE資料塊快取”快,因此AWE_WINDOW_MEMORY一般來講需要設定的儘量大(但不能無限大,比如必須小於3GB),oracle建議以預設值為基礎,以20%遞增擴大,進行測試。比如先測試1GB大小,在測試1.2GB大小等等。一般來講AWE_WINDOW_MEMORY有一個最小公式
min(AWE_WINDOW_MEMORY)=(4096 * db_block_size * db_block_lru_latches)/8其中:
max buffer pools是一個常量=8
sets_per_tool=2*cpu_cou
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26015009/viewspace-1059906/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle 10G 如何使用超過1.7G的記憶體Oracle 10g記憶體
- 32位windows系統下oracle10g認記憶體超過1.7G的設定WindowsOracle記憶體
- ORACLE 使用超過2G記憶體Oracle記憶體
- [zt] 如何使作業系統使用超過4G的記憶體作業系統記憶體
- windows 2003 x86 32位中Oracle 10G資料庫使用超過1.7G的sga的方法WindowsOracle 10g資料庫
- MongoDB 如何使用記憶體?為什麼記憶體滿了?MongoDB記憶體
- MongoDB如何使用記憶體?為什麼記憶體滿了?MongoDB記憶體
- Windows32位系統下Oracle記憶體突破1.7G的設定WindowsS3Oracle記憶體
- UIScrollView調優——節省超過50%記憶體UIView記憶體
- 記憶體使用過高點檢checklist記憶體
- Oracle HowTo:如何在Linux上擴充套件SGA超過1.7GOracleLinux套件
- 【記憶體管理】Oracle如何使用ASMM自動共享記憶體管理記憶體OracleASM
- 如何檢視linux系統中空閒記憶體/實體記憶體使用/剩餘記憶體Linux記憶體
- ArrayMap是如何提高記憶體的使用效率的?記憶體
- 實體記憶體過高怎麼辦 實體記憶體使用率高的解決方法記憶體
- 如何在Java中讀取超過記憶體大小的檔案Java記憶體
- aix的記憶體使用AI記憶體
- Linux記憶體不夠了?看看如何開啟虛擬記憶體增加記憶體使用量Linux記憶體
- Oracle 10g的記憶體調整報告Oracle 10g記憶體
- Oracle 10g中,記憶體引數Oracle 10g記憶體
- 記一次使用windbg排查記憶體洩漏的過程記憶體
- 通過減少記憶體使用改善.NET效能記憶體
- Redis 記憶體突增時,如何定量分析其記憶體使用情況Redis記憶體
- 如何配置 SQL Server 使用 2 GB 以上的實體記憶體SQLServer記憶體
- 如何檢視Linux的記憶體使用狀況Linux記憶體
- 如何避免JavaScript的記憶體洩露及記憶體管理技巧JavaScript記憶體洩露
- JavaScript對記憶體的使用JavaScript記憶體
- RMAN 對記憶體的使用記憶體
- ORACLE RAC 記憶體SGA,PGA配置超過300G的問題Oracle記憶體
- OpenResty 和 Nginx 的共享記憶體區是如何消耗實體記憶體的RESTNginx記憶體
- MySQL記憶體使用MySql記憶體
- oracle 10g 自動共享記憶體管理Oracle 10g記憶體
- Linux如何通過命令檢視伺服器的記憶體條使用情況Linux伺服器記憶體
- Windows10系統提示記憶體使用率過高如何解決Windows記憶體
- 透過proc看記憶體記憶體
- redis的記憶體滿了之後,redis如何回收記憶體嗎Redis記憶體
- eclispe 出現超記憶體錯誤Lisp記憶體
- go是如何分配記憶體的?Go記憶體