以下的文章主要是對Oracle Flashback buffer的實際應用的參數研究,我們大家知道在Oracle 10g中Oracle數據庫可以啟用flashback功能,以下的文章主要是介紹在Oracle shared pool中如何分配Flashback buffer,以下是Oracle部分啟動日志,可以清楚的看到Oracle Flashback buffer在shared pool分配了3981204 bytes。
引用
- Wed Dec 30 15:20:40 2009
- Allocated 3981204 bytes in shared pool for Flashback generation buffer
- Starting background process RVWR
- RVWR started with pid=16, OS id=724
同樣在數據字典中也可以看到Oracle Flashback buffer的大小:
引用
- SQL> select name,bytes from V$sgastat
- 2 where pool=’shared pool’
- 3 and name like ‘%Flash%’;
- NAME BYTES
- ————————– ———-
- Flashback generation buff 3981204
當flashback buffer空間緊張時,可能會出現Flashback buf free by RVWR等待事件,Oracle並沒有提供參數調節Oracle Flashback buffer,對於高吞吐量,並發量系統初始大小並不能滿足系統要求
目前系統中log_buffer大小為7012352 bytes,將其改為10M,重啟數據庫,觀察Flashback buffer變化。
引用
- SQL> show parameter log_buffer
- NAME TYPE VALUE
- ———————————— ———– ——————————
- log_buffer integer 7012352
- SQL> alter system set log_buffer=10000000 scope=spfile;
- System altered.
- SQL> select name,bytes from V$sgastat
- 2 where pool=’shared pool’
- 3 and name like ‘%Flash%’;
- NAME BYTES
- —————————— ———-
- Flashback generation buff 3981204
- SQL> startup force
- Oracle instance started.
- Total System Global Area 536870912 bytes
- Fixed Size 1262764 bytes
- Variable Size 155192148 bytes
- Database Buffers 369098752 bytes
- Redo Buffers 11317248 bytes
- Database mounted.
- Database opened.
- SQL> select name,bytes from V$sgastat
- 2 where pool=’shared pool’
- 3 and name like ‘%Flash%’;
- NAME BYTES
- —————————— ———-
- Flashback generation buff 3981204
可以看到Flashback generation buff大小並沒有發生變化。
進一步,觀察和Flashback相關的隱含參數