国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > Oracle > 正文

自動調整 Oracle9i Database :Oracle SGA(1)

2024-08-29 13:39:05
字體:
來源:轉載
供稿:網友

  隨著數據庫治理員在自調整工作方面變得更加成熟,許多 Oracle 規格可能變為自調整。在 Oracle Database 10 g 中,我們將看到比以前更多的自調整功能。
  
  例如, Oracle Database 10 g 的動態內存分配特性使得創建一個自調整的 Oracle SGA 成為可能。通過演示,在本文中我將說明如何檢查 Oracle 9 i Database 中的 Oracle 例程,以及根據服務器上和數據庫內的處理需求來調整 sort_area_size 或 pga_aggregate_target 、 large_pool_size 、 sga_max_size 和 db_cache_size 的內存區域。這里討論的技巧的基礎是使用 Statspack 來隨時監控內存區域并顯示系統資源利用率的信號圖。
  
  我還將討論如何創建一種智能機制,以根據當前的處理需求來自動地重新配置 Oracle9 i Database ,并提供了示例代碼,這些示例代碼將使您能夠開始編寫自己的能夠有效地仿效 Oracle Database 10 g 功能的自動化腳本;例如,我將提供一個腳本,它將自動識別小型、常用的程序段,并將它們分配給 KEEP 池,以全部進行緩存。(重要注重事項:這種仿效僅考慮外部的行為,但不反映新版本的內部實施。)因為每個數據庫都各不相同,所以為了清楚起見,這些腳本特意進行了省略和簡化。因此,您將需要擴展這些示例并編寫適合您的環境的自定義的自動化腳本。
  
  具有以下特性的商店將從自動化的自調整中最大程度的獲益:
  
  雙模式系統 — 在在線事務處理 (OLTP) 和數據倉庫處理模式之間轉換的系統尤其將從自調整 RAM 區域中獲益。
  
  32 位的商店 — 運行 32 位服務器的商店受其 RAM 區域大?。ㄗ畲蠹s為 1.7GB )的限制。對于這些商店,最有效地使用 RAM 資源尤為重要。
  
  記住擁有一個非常大的 db_cache_size 的趨勢正在下降也很重要。雖然對數據的直接訪問是利用散列法來完成的,但有時數據庫必須檢查 RAM 緩存中的所有內存塊:
  
  高失效率的系統 — 無論何時當程序產生一個截斷表、使用臨時表或運行一次大型的數據清除時, Oracle 必須清除 db_cache_size 中的所有內存塊,以除去已被使用的內存塊。對于擁有大于 10 g B 的 db_cache_size 的系統,這種方法可能造成過多的開銷。
  
  更新率高的系統 — 當執行一次異步寫操作時,數據庫寫入器 (DBWR) 過程必須清除 db_cache_size 中的所有內存塊。擁有一個巨大的 db_cache_size 可能給數據庫寫入器造成過重的負擔。
  
  首先,讓我們回顧一下創建自調整數據庫背后的準則。
  
  自調整背后的準則
  重新配置一個 Oracle 例程的最常用的技巧是使用一個腳本,并通過 dbms_job 或一個外部調度程序(如 UNIX cron )來調用這個腳本。為了說明一個簡單的例子,考慮一個白天在 OLTP 模式下運行,而晚上在數據倉庫模式下運行的數據庫。對于這種類型的數據庫,您可以安排一項作業來將例程 SGA 內存重新配置成最適合于在該 Oracle 例程中執行的處理類型的配置。
  
  列表 1 包含一個 UNIX 腳本,該腳本用來重新配置 Oracle ,以便進行決策支持處理。注重為了適應數據倉庫行為,對 shared_pool 、 db_cache_size 和 pga_aggregate_target 中的配置作了重要的修改。該腳本被安排在每晚 6:00pm 通過 dbms_job 來調用。
  
  在 列表 1 中,我們看到了建立了自調整 Oracle Database 10 g 的基礎的 alter system 命令。記住 RAM 是一種昂貴的 Oracle 服務器資源, DBA 有責任在服務器上充分地分配 RAM 資源。未得到利用的 RAM 將浪費昂貴的硬件資源。
  
  即使得到了充分的分配,分配過度的 RAM 也是一種浪費。例如,當您只需要 200m 時,分配一個 shared_pool_size= 400m 是效率低下的,因為 RAM 可以被 SGA 的另一個區域(如 db_cache_size )使用。
  
  為了說明 RAM 重新配置的概念,考慮下面這個例子,一個分配不足且數據緩沖命中率很低的 16K 數據緩沖區,和一個分配過度且數據緩沖命中率很高的 32K 數據緩沖區(參見 圖1)。
  
 自動調整 Oracle9i Database :Oracle SGA(1)(圖一)

  
圖 1:分配過度和分配不足的 RAM 區域

  使用 alter system 命令,我們可以在數據緩沖區之間調整 RAM,以將 RAM 重新分配給最需要的地方(參見圖2)。
  
自動調整 Oracle9i Database :Oracle SGA(1)(圖二)

  
圖 2:RAM 的動態重分配

  您可以在很多種 Oracle 腳本(包括動態 SQL 、 dbms_job 和 shell 腳本)中使用 alter system 命令。 列表 2 是調整 RAM 緩存大小的一個簡單的 SQL*Plus 腳本;這個腳本向您提示緩存的名稱和大小,并發出適當的 alter system 命令來調整 RAM 區域的大小。
下面是輸出的內容:
  
  SQL> @dyn_sga
  
  Enter cache to decrease:shared_pool_size
  
  Enter cache to increase:db_cache_size
  
  Enter amount to change: 1048576
  
  alter system set shared_pool_size = 49283072;
  
  System altered.
  
  alter system set db_cache_size = 17825792;
  
  System altered.
  
  現在我們看到了在 Oracle Database 10 g 中,如何輕易地改變 RAM 區域,下面讓我們研究一下調用 RAM 區域自動調整的一些規則。
  
  何時觸發動態重配置
  無論何時當監控腳本的例程指示有一個負擔過重的 RAM 區域時,您必須選擇從哪一個區域中 “ 竊取 ” 內存。 表 1 顯示了閾值條件的一個簡單的示例,該閾值條件觸發 SGA 的三個主要區域的動態內存修改。當然,每個系統都各不相同,您將要根據您的需求來調整這些閾值。例如,許多商店實施了多個 blocksize ,并分離了 db_32k_cache_size (用于索引表空間)、 db_keep_cache_size (用于小型、引用頻繁的對象)等的 RAM 區域。
  
  記住數據庫的需求將根據正在執行的 SQL 不斷變化是很重要的;在 9:00am 最優的一個 SGA 可能在 3:00pm 就不是最優了。為了了解處理特性的變化,您可以運行 Statspack 報表來查明 Oracle 改變 RAM 存儲需求的那些時間。您還可以運行 v$db_cache_advice 、 v$pga_target_advice 、 v$java_pool_advice 和 v$db_shared_pool_advice 實用程序來查看 RAM 區域大小的變化帶來的邊際效益。
  
  一種使動態 SGA 重新配置自動化的流行的方法是識別趨勢。您可以使用 Statspack 來猜測那些處理特性變化的時間,并使用 dbms_job 程序包或動態 SQL 來執行特定的 SGA 修改。讓我們具體了解一下基于趨勢的方法。
  
  顯示系統信號圖
  基于趨勢的重新配置的一種常見的方法是使用 Statspack 歷史數據來顯示可猜測的趨勢,并根據信號圖用這些趨勢來修改數據庫。
  
  這種方法與零庫存生產很相似,其中零部件正好在需要組裝時才出現在工廠車間里。 Oracle Database 10 g 使 DBA 能夠預見處理需求并定期地安排適當的干預操作,從而確保為處理需求的變化即時地提供 SGA 資源。
  
  自調整 Oracle 的內存區域涉及到改變幾個 Oracle 參數的值。雖然存在 250 多個 Oracle Database 10 g 參數來治理數據庫的各方面配置,但只有少數幾個參數對自動的 Oracle SGA 調整很重要:
  
  db_cache_size — db_cache_size 確定 Oracle SGA 中的數據庫塊緩沖的數量,并且代表著 Oracle 內存最重要的一個參數。
  db_keep_cache_size — 這個數據緩沖池是 Oracle8 i 中 db_block_buffers 的一個子緩沖池,但從 Oracle9 i Database 開始成為一個單獨的 RAM 區域。
  db_nn_cache_size — Oracle Database 10 g 有單獨的數據緩沖池,您可以使用這些數據緩沖池來分離數據并分離具有不同 I/O 特性的對象。
  shared_pool_size — shared_pool_size 定義系統中由所有用戶共享的池,包括 SQL 區域和數據字典緩存。
  pga_aggregate_target — pga_aggregate_target 定義為系統范圍的排序和散列連接保留的 RAM 區域。
  您可以看到,甚至不需要對您的 Oracle 數據庫狀況的最重要的量度進行歸零校正。讓我們從檢查庫緩存中的趨勢開始,并確定如何自動調整 shared_pool_size 。
  
  使用 Oracle Database 10 g 顧問實用程序
  Oracle Database 10 g 擁有完整的顧問實用程序,它們將準確地猜測改變任意的 RAM 區域大小將帶來的變化。 Oracle Database 10 g 中的顧問實用程序包括:
  
  共享池建議 — v$shared_pool_advice
  PGA 目標建議 — v$pga_target_advice
  數據緩存建議 — v$db_cache_advice
  Java 池建議 — v$java_pool_advice
  這些實用程序是確保自調整變化正確合理的一種極好的方式。以下內容將顯示如何調用和解釋這些顧問實用程序;當您能夠輕松地解釋它們的輸出時,您就可以編寫自動化的腳本來生成建議、解釋輸出,并自動改變 RAM 區域的大小。
  
  共享池建議實用程序
  這一顧問功能在 Oracle9 i Database Release 2 中得到了擴展,包含了一個稱為 v$shared_pool_advice 的新的建議實用程序,在將來的版本中它可能最終將被擴展至所有的 SGA RAM 。
  
  從 Oracle9 i Database Release 2 開始,當共享池的大小從當前值的 10% 變為當前值的 200% 時, v$shared_pool_advice 視圖將顯示 SQL 分析的邊際差異。
  
  共享池建議實用程序非常易于配置:安裝后,您可以運行一個簡單的腳本來查詢 v$shared_pool_advice 視圖,并查看不同 shared_pool 大小的 SQL 分析的邊際變化。
以下腳本的輸出將告訴您動態增加或減少 shared_pool_size 參數帶來

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 渭南市| 务川| 大兴区| 阿尔山市| 韩城市| 公主岭市| 固阳县| 阿合奇县| 平南县| 滨海县| 平泉县| 安宁市| 吉安市| 西和县| 灌南县| 应城市| 紫阳县| 平定县| 东安县| 元谋县| 金阳县| 林周县| 宣武区| 万全县| 德格县| 文化| 三亚市| 微山县| 马公市| 威远县| 依兰县| 舒城县| 福贡县| 大埔区| 溧水县| 石狮市| 民丰县| 通许县| 金溪县| 郧西县| 乌兰察布市|