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

首頁 > 數據庫 > Oracle > 正文

我的學習總結: Oracle軟件結構

2024-08-29 13:49:49
字體:
來源:轉載
供稿:網友
  Oracle數據庫服務器主要由兩個部分組成:數據庫和實例。  實例  .實例的內存結構:SGA(system global areas)和PGA(PRogram global areas)  .實例的進程結構:服務進程和后臺進程  內存結構:  SGA(system global areas)  1、數據庫緩存    db_cach_size   .keep緩存池    buffer_pool_keep   .recycle緩存池    buffer_pool_recycle   .default緩存池      db_cache_size-(buffer_pool_keey+buffer_pool_recycle)  2、重做日志緩存    log_buffer  3、共享池    shared_pool_size  庫緩存:用于緩存已經解析并執行過的SQL和PL/SQL程序代碼   .享SQL工作區:存放有SQL語句的語法分析結果和執行計劃。假如共享SQL工作區已經沒有空閑空間,Oracle將利用LRU算法換出最近很少使用過的SQL語句----->SGA    .有SQL工作區:SQL語句的另一部分被保存到私有SQL工作區中,包括SQL語句中的綁定變量、環境和會話參數等信息,這些信息是屬于執行該語句的用戶所私有的,其他用戶即使執行相同的SQL語句也不能使用這些信息。只有在共享服務器(servers=shared)時,私有SQL工作區才會在SGA中創建。一般情況下私有SQL工作區位于PGA中?! ?庫緩存的大小與open_cursors密切相關。open_cursors參數用于指定數據庫中能夠同時打開的游標數量,每條查詢語句都需要一個游標?! 祿熳值渚彺妫哼@是一種“行緩存”,即在其中保存的是一條條的記錄,而不像其他緩存那樣保存的是緩存塊?! ?、java池  5、大型池    large_pool_size   .進行數據庫備份和恢復操作   .執行具有大量排序操作的SQL語句   .招待并行化的數據庫操作  #假如沒有在SGA區中創建大型池,上述操作所需的緩存空間將在共享池或PGA中分配?! GA(program global areas)  保存服務進程的數據和控制信息的內存結構,這個內存結構是非共享的,只有服務進程本身才能夠訪問它自已的PGA區。每個服務進程都有它自已的PGA區,各個服務進程PGA的總和即為實例的PGA區的大小?! ?、私有SQL工作區  在執行比較復雜的查詢時(比如決策支持系統中的查詢語句),經常會需要在PGA中創建一個比較大的動態緩存區,用來專門執行如下一些必須在內存中進行的操作:  .排序(order by,group by)
  sort_area_size
  sort_area_retained_size  .連接(inner join )
  hash_area_size  .集合運算(union,interset,minus)
  create_bitmap_area_size  #servers=dedicated
  私有SQL工作區將保存在服務進程的PGA中  #servers=shared
  私有SQL工作區的一部分將保存在SGA區中  2、會話內存區  用于保存用戶會話的變量(登錄信息)以及其他與會話相關的信息
  #servers=dedicated  會話內存區將保存在為這個會話提供服務的專用服務進程的PGA中。這時只有這個服務進程需要使用該會話的會話信息。
  #servers=shared  會話內存區將位于SGA區中而不是PGA區中,因為會話信息被所有的共享服務進程使用。  workarea_size_policy=auto
  pga_aggregate_target=XXX  進程結構  服務進程:  1、專用服務進程:一個專用服務進程只能為一個用戶提供服務  2、共享服務進程:一個共享服務進程可以為多個用戶提供服務  .解析并執行用戶所提交的SQL語句?! ?在SGA區的數據庫緩存中搜索用戶進程所訪問的數據,假如數據不在緩存中,則需要從硬盤數據文件中讀取所需的數據,而將它們復制到緩存中。  .將數據返回給用戶進程。  后臺進程  DBWn  db_writer_processes  .當用戶執行insert或update等操作時,會首先將插入的數據寫入數據庫緩存。在這個過程中,假如Oracle在數據庫緩存的LRU列表中搜索了一定數據(db_block_max_scan)的緩存塊后,仍然沒有找到可用的空閑緩存塊,DBWR進程將啟動,由DBWR進程將臟緩存塊寫入數據文件之后,數據庫緩存將獲得更多的空閑緩存塊?! ?當檢查點發生時,將啟動DWBR進程  .當數據庫緩存LRU列表的長度達到db_block_write_batch指定值的一半時,DBWR進程將啟動?! ?若發生超時(大約3秒內未被啟動),DBWR進程被啟動?! GWR  .用戶通過commit語句提交當前事務  .重做日志緩存寫滿三分之一  .DBWR進程開始將臟緩存塊寫入數據文件  .若發生超時(大約3秒),此時會啟動LGWR  CKPT  log_checkpoint_timeout

  log_checkpoint_interval
  l


上一篇:oracle中關于null排序的問題

下一篇:優化Oracle .Net配置

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

主站蜘蛛池模板: 柳河县| 昌江| 镇雄县| 孟津县| 南乐县| 长寿区| 伊川县| 永年县| 饶阳县| 弥勒县| 龙游县| 漳州市| 玉山县| 铁力市| 共和县| 双流县| 泰州市| 沭阳县| 上林县| 龙游县| 明水县| 横峰县| 邳州市| 望江县| 永泰县| 上栗县| 信丰县| 司法| 白河县| 武冈市| 南宁市| 玉山县| 波密县| 华容县| 肥乡县| 赤城县| 炎陵县| 天峨县| 儋州市| 含山县| 台南县|