Oracle 什麼時候會觸發DBWR

2021-08-20 04:47:49 字數 1042 閱讀 6778

checkpoint會觸發dbwr寫髒塊時是根據checkpoint queue來的,而lru-w是負責dbwr的其他寫出條件的觸發。

dbwr作為乙個後台程序,只有在某些條件滿足了才會觸發。這些條件包括:

當程序在輔助lru鍊錶和主lru鍊錶上掃瞄以查詢可以覆蓋的buffer header時,如果已經掃瞄的buffer header的數量到達一定的限度(由隱藏引數:_db_block_max_scan_pct決定)時,觸發dbwr程序。_db_block_max_scan_pct表示已經掃瞄的buffer header的個數佔整個lru鍊錶上buffer header總數的百分比。這時,搜尋可用buffer header的程序掛起,在v$session_wait中表現為等待「free buffer wait」事件,同時增加v$sysstat中的「dirty buffers inspected」的值。

當dbwr在主lruw鍊錶上查詢已經更新完而正在等待被寫入資料檔案的buffer header時,如果找到的buffer header的數量超過一定限度(由隱藏引數:_db_writer_scan_depth_pct決定)時,dbwr就不再繼續往下掃瞄了,而轉到輔助lruw鍊錶上將其上的髒資料塊寫入資料檔案。_db_writer_scan_depth_pct表示已經掃瞄的髒資料塊的個數佔整個主lruw鍊錶上buffer header總數的百分比。

如果主lruw鍊錶和輔助lruw鍊錶上的髒資料塊的總數超過一定限度,也將觸發dbwr程序。該限度由隱藏引數:_db_large_dirty_queue決定。

發生增量檢查點(incremental checkpoint)或完全檢查點(complete checkpoint)時觸發dbwr。

每隔三秒鐘啟動一次dbwr。

將表空間設定為離線(offline)狀態時觸發dbwr。

發出命令:alter tablespace … begin backup,從而將表空間設定為熱備份狀態時觸發dbwr。

將表空間設定為唯讀狀態時,觸發dbwr。

刪除物件時(比如刪除某個表)會觸發dbwr。

layoutSubviews什麼時候觸發呼叫

ayoutsubviews在以下情況下會被呼叫 1 init初始化不會觸發layoutsubviews 2 addsubview會觸發layoutsubviews 3 設定view的frame會觸發layoutsubviews,當然前提是frame的值設定前後發生了變化 4 滾動乙個uiscroll...

思考? 什麼時候會觸發這個策略呢?

當出現以下幾種情況時,kafka會進行一次分割槽分配操作,也就是kafka consumer的rebalance 1.同乙個consumer group內新增了消費者 2.消費者離開當前所屬的consumer group,比如主動停機或者宕機 3.topic新增了分割槽 也就是分割槽數量發生了變化 ...

什麼時候用exists 什麼時候用in

in not in exists not exists 使用exists,oracle會首先檢查主查詢,然後執行子查詢直到它找到第乙個匹配項,這就節省了時間。oracle在執行in子查詢時,首先執行 子查詢,並將獲得的結果列表存放在乙個加了索引的臨時表中。在執行子查詢之前,系統先將主查詢掛起 待子查...