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

首頁 > 數據庫 > Oracle > 正文

讀書總結:Oracle 軟件結構

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


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參數用于指定數據庫中能夠同時打開的游標數量,每條查詢語句都需要一個游標。
數據庫字典緩存:這是一種“行緩存”,即在其中保存的是一條條的記錄,而不像其他緩存那樣保存的是緩存塊。
4、java池
5、大型池    large_pool_size
.進行數據庫備份和恢復操作
.執行具有大量排序操作的sql語句
.招待并行化的數據庫操作
#如果沒有在sga區中創建大型池,上述操作所需的緩存空間將在共享池或pga中分配。


pga(program global areas)
保存服務進程的數據和控制信息的內存結構,這個內存結構是非共享的,只有服務進程本身才能夠訪問它自已的pga區。每個服務進程都有它自已的pga區,各個服務進程pga的總和即為實例的pga區的大小。
1、私有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進程被啟動。
lgwr
.用戶通過commit語句提交當前事務
.重做日志緩存寫滿三分之一
.dbwr進程開始將臟緩存塊寫入數據文件
.若發生超時(大約3秒),此時會啟動lgwr
ckpt
log_checkpoint_timeout
log_checkpoint_interval
log_checkpoint_to_alert

smon
pmon
arcn
archive_log_start

reco
dnnn

 
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 邛崃市| 怀宁县| 宜阳县| 和龙市| 平定县| 拉萨市| 长武县| 湘潭县| 广德县| 浪卡子县| 卫辉市| 孙吴县| 惠来县| 南投县| 武平县| 临海市| 利津县| 宁都县| 商河县| 遂平县| 金沙县| 南昌县| 墨江| 府谷县| 光泽县| 虞城县| 吴桥县| 宁乡县| 洛扎县| 杨浦区| 农安县| 中山市| 滨海县| 卫辉市| 兴国县| 北川| 独山县| 波密县| 静宁县| 阜新市| 文山县|