1. 程式人生 > 其它 >關於糾結的recycle pool的設定(r3筆記第5天)

關於糾結的recycle pool的設定(r3筆記第5天)

現在生產環境中目前有一個很大的中繼表,作為多個流程的資料流動所用,資料量很大。裡面有clob欄位,加上龐大的資料量,表就顯得很臃腫了。

目前在做大批量的資料處理的時候發現了一些問題,事物數在不斷增加的情況下,資料的處理速度也在不斷的降低。最後出現了一些資源的問題。

在抓取了awr和同事的分析之後,產品部門建議把對應的clob放入recycle pool裡面。一方面能夠降低buffer cache的負載。讓clob的部分儘快的從快取中不斷的重新整理。

對於recycle pool的設定沒有問題,可以設定db_recycle_cache_size來實現,但是這些操作在生產環境中一定要多評估和分析,因為有一些潛在的問題和風險。

首先就是來看sga中是否有足夠的空間,因為這個庫在開始的時候沒有考慮recycle,keep pool的設定,根據很多的專案的反饋,目前用處還不是很大,所以就沒有分配足夠的空間,sga絕大部分都給了shared pool, buffer_cache,其他的pool都相應的分配了較少的一部分快取。

這樣如果要分配足夠快取,留給recycle pool的部分就很有限了。估算下來,不到200M左右的樣子,直觀感覺,這樣的設定還不如不設定,可能沒達到預期的目標還可能使問題更加嚴重。

第2個思路就是從sga的其他池中拿出一部分的快取來,分配給recycle pool,這個思路也是很自然的。或者考慮設定sga_target來調高實現,不過這個部分,自己還是有陰影的。

一條sql語句導致的資料庫宕機問題及分析 http://blog.itpub.net/23718752/viewspace-1141131/

所以我是不敢自己往槍口上撞的。

還有一個思路就是根據系統的資源情況來分配更多的sga資源,可以調高sga_max_size,這個部分需要重啟資料庫例項。如果調高的幅度較大,還需要看看核心引數是否有潛在的影響,是否也需要相應的調高。

這個部分還是有影響的。

伺服器增加記憶體後無法重啟資料庫的問題及解決 http://blog.itpub.net/23718752/viewspace-1137256/

考慮瞭如上的一些情況,就給產品部門去了封郵件,讓他們來幫助評估一下設定的recycle pool最小或者建議值是多少,我來根據這個引數來考慮使用哪種方法。因為產品部門這方面要更專業一些。

自己琢磨了半天,最後的結果也不一定就是最優的。

過了一會,產品部門回郵件了,綜合了我的顧慮,他們認為這部分的修改可以稍微延後一些,影響不是特別大,至少從目前的評估來看,不過從長遠的情況來看他們建議還是需要這個變更。建議值為500M。

有了這些思路,我查看了這兩天的系統負載。資料庫負載時相當的高。如果做了以上的變更,可能得不償失。所以就先把這部分的變更做了更為詳細的實現步驟,在測試環境測試之後才能提交給客戶。

最後的結果就是下面的步驟。

1.
Alter system set sga_max_size=20G scope=spfile;
Alter system set db_recycle_cache_size=2G scope=spfile;
2.
Bring down DB instance
Restart DB instance.
3.
Run below sql statement under PRDAPPO.
alter table trb1_pub_log modify lob(GENERAL_DATA_C) (storage (buffer_pool recycle) cache);    
4.
and  use below statement to check if recycle setting is properly, column buffer_pool value should be RECYCLE.
set linesize 200
col table_name format a30
col column_name format a30
col segment_name format a30
col buffer_pool format a20
set pages 50
select table_name,column_name,se.segment_name,buffer_pool from user_segments se,user_lobs sl
where se.segment_name=sl.segment_name
and sl.table_name='TRB1_PUB_LOG';
example like below.
TABLE_NAME                     COLUMN_NAME                    SEGMENT_NAME                   BUFFER_POOL
------------------------------ ------------------------------ ------------------------------ --------------------
PUB_LOG                       GENERAL_DATA_C                 SYS_LOB0002403829C00014$$      RECYCLE
PUB_LOG                       GENERAL_DATA_C                 SYS_LOB0002403829C00014$$      RECYCLE
PUB_LOG                       GENERAL_DATA_C                 SYS_LOB0002403829C00014$$      RECYCLE
PUB_LOG                       GENERAL_DATA_C                 SYS_LOB0002403829C00014$$      RECYCLE
PUB_LOG                       GENERAL_DATA_C                 SYS_LOB0002403829C00014$$      RECYCLE
PUB_LOG                       GENERAL_DATA_C                 SYS_LOB0002403829C00014$$      RECYCLE
PUB_LOG                       GENERAL_DATA_C                 SYS_LOB0002403829C00014$$      RECYCLE
PUB_LOG                       GENERAL_DATA_C                 SYS_LOB0002403829C00014$$      RECYCLE
PUB_LOG                       GENERAL_DATA_C                 SYS_LOB0002403829C00014$$      RECYCLE
PUB_LOG                       GENERAL_DATA_C                 SYS_LOB0002403829C00014$$      RECYCLE
PUB_LOG                       GENERAL_DATA_C                 SYS_LOB0002403829C00014$$      RECYCLE
PUB_LOG                       GENERAL_DATA_C                 SYS_LOB0002403829C00014$$      RECYCLE
PUB_LOG                       GENERAL_DATA_C                 SYS_LOB0002403829C00014$$      RECYCLE
PUB_LOG                       GENERAL_DATA_C                 SYS_LOB0002403829C00014$$      RECYCLE
PUB_LOG                       GENERAL_DATA_C                 SYS_LOB0002403829C00014$$      RECYCLE
PUB_LOG                       GENERAL_DATA_C                 SYS_LOB0002403829C00014$$      RECYCLE
PUB_LOG                       GENERAL_DATA_C                 SYS_LOB0002403829C00014$$      RECYCLE
PUB_LOG                       GENERAL_DATA_C                 SYS_LOB0002403829C00014$$      RECYCLE
18 rows selected.