討論oracle如何使用記憶體,包括各個程序總的記憶體(pga記憶體,即程序全域性區記憶體)和共享記憶體(sga)。
分析手動和自動pga記憶體管理之間的區別,以及oracle database 10g中自動記憶體管理和oracle database 11g中自動記憶體管理的區別,還會說明各種方法適用於什麼情況。
你會對oracle如何使用和管理記憶體有深入的了解
這一章將討論oracle的3個主要記憶體結構:
1.系統全域性區(system global area,sga),這是乙個大的共享記憶體段,幾乎所有oracle程序都要訪問這個區域
2.程序全域性區(process(or program)global area,pga),這是乙個程序或執行緒專用的記憶體,其他程序或執行緒不能訪問
3.使用者全域性區(user global area,uga),這個記憶體區與特定的會話相關聯。它可能在sga中分配,也可能在pga中分配。這取決於是用共享伺服器還是用專用伺服器來連線資料庫。如果使用共享伺服器,uga就在sga中分配;如果使用專用伺服器,uga就在pga中分配。
在我們討論oracle的記憶體管理時,共有以下5種設定方法:
1.自動記憶體管理(automatic memory management,amm),它是針對sga和pga的管理,並且只能用於oracle database 11g及更高版本上。這種模式下dba只需要設定乙個引數memory_target來指定資料庫使用記憶體的目標,資料庫將自行判斷每個記憶體區域的大小。
2.自動sga記憶體管理(automatice shared memory management,asmm),它是針對sga的管理,這種模式下dba通過設定引數sga_target來指定整個sga的目標大小。(使用sql*plus命令 show sga可以看一看相關記憶體大小)
3.手動sga記憶體管理(manual shared memory management),它也是針對sga的,dba可以手動設定db_cache_size、shared_pool_size等引數來調整sga中每個區域的大小。
4.自動pga記憶體管理(automatic pga memory managment),它是針對pga的,dba可以通過設定引數pga_aggregate_target來指定整個pga的大小。
5.手動pga記憶體管理(manual pga memory managment),它是針對pga的,dba可以通過設定引數sort_area_size、hash_area_size等引數來調整pga中每個區域的大小。oracle強烈建議不要使用手動pga管理。
注意:某些作業系統中的配置不能夠相容自動記憶體管理(例如,linux中的hugepages)。具體細節請參考oracle database administrator's referene for linux and unix-based operating systems。
章節內容組織形式:
首先討論pga和uga的管理,先手動後自動
然後在討論sga的管理,先手動後自動
最後討論如何用乙個引數來管理、控制sga和pga
第四章 程式設計
選擇語言的原則 最少的工作量原則 最少技巧性原則 最少錯誤原則 最少維護原則 減少記憶原則 總原則 先求正確後求快 先求清晰後求快 求快不忘保持程式正確性 保持程式整潔以求快 不要因效率而犧牲清晰 好程式標準 易於測試和除錯 易於維護 易於修改 設計簡單 高效率結構化程式設計主要包括兩方面 在編寫程...
逆向 第四章 記憶體
暫存器與記憶體的區別 1.暫存器位於cpu內部,執行速度快 2.記憶體速度相對慢,但是成本低,所以可以做得很大 3.暫存器和記憶體沒有本質區別,都是儲存資料的容器,都是定寬的 4.暫存器常用的八個 eax,ecx,edx,ebx,esp,ebp,esi,edi 5.計算機中的幾個常用計量單位 byt...
程式設計珠璣第四章
正文裡面涉及到程式設計方法學的內容。不再細述 1 加及條件是0 l u n 1 2 這個函式可以寫成如下形式 int bs int a,int begin,int end,int v if e a end e v return e a return 1 再給一段測試 include include ...