日誌緩衝區Log_buffer是Oracle專門用於存入重做日誌的記憶體地區。
資料庫啟動時,可以看到:
SQL> startup
ORACLE 常式已經啟動。
Total System Global Area 85006980 bytes
Fixed Size 453252 bytes
Variable Size 46137344 bytes
Database Buffers 37748736 bytes
Redo Buffers 667648 bytes
資料庫裝載完畢。
資料庫已經開啟。
Redo Buffers就是分配給Log_buffer的記憶體大小。
對日誌緩衝區的大小,可以從下面的視圖中查詢的到:
SQL> select * from v$parameter;
也可以
SQL> show parameter log_buffer
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_buffer integer 524288
從這兒查詢出的資料,是在設定檔中配置的資料,設定檔有:SPFILEORA92.ORA,INITora92.ORA等。
這個值和真實的日誌緩衝區的大小不同。如果要知道真實的Log_buffer的大小,可以用下面的方法查詢:
SQL> select * from v$sgastat where name ='log_buffer';
POOL NAME BYTES
----------- -------------------------- ----------
log_buffer 656384
上面的這個值,是Oracle的SGA實際分配給Log_buffer的大小。
另外,還可以從 v$sga中查詢:
SQL> select * from v$sga;
NAME VALUE
-------------------- ----------
Fixed Size 453252
Variable Size 46137344
Database Buffers 37748736
Redo Buffers 667648
這個值也就是Oracle啟動時分配給Log_buffer的大小。
那這個值為什麼和實際的大小有差別呢?
SQL> select (667648-656384)/1024 ||'K' from dual;
(66
---
11K
相差11K,那這11K幹什麼用呢?
這11K是Oracle為了保護Log_buffer,分配出來的日誌保護頁。