oracle緩存資料庫
『壹』 怎麼查看oracle資料庫數據緩沖區大小
日誌緩沖區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 al;
(66
---
11K
相差11K,那這11K干什麼用呢?
這11K是Oracle為了保護Log_buffer,分配出來的日誌保護頁。
『貳』 oracle 庫高速緩存和緩沖區緩存 區別
數據高速緩存跟操作系統的緩存類似,其存儲最近從數據文件中讀取的數據塊,其中的數據可以被所有的用戶所訪問。如當我們利用Select語句從資料庫中查詢員工信息的時候,其首先不是從數據文件中去查詢這個數據,而是從數據高速緩存中去查找,而沒有這個必要再去查詢磁碟中的數據文件了。只有在數據緩存中沒有這個數據的時候,資料庫才會從數據文件中去查詢。Oracle資料庫為什麼要如此設計呢?這是由於資料庫在讀取數據的時候,讀取內存的速度比讀取磁碟的速度要快很多倍,所以這種機制可以提高數據的整體訪問效率。
緩沖區緩存
重新啟動資料庫後,系統就會為資料庫分配一些空閑的緩存塊。空閑緩存塊中是沒有任何數據的,他在那邊默默的等著別寫入記錄。當Oracle 資料庫從數據文件中讀取數據後,資料庫就會尋找是否有空閑的緩存塊,以便將數據寫入其中。
一般來說,資料庫在啟動的時候,就會在內存中預先分配這些緩存塊。所以,Oracle資料庫在啟動的時候,會佔用比較多的內存。但是,這可以免去在實際需要時向內存申請的時間。所以,有時候Oracle資料庫雖然已啟動,內存的佔用率就很高,但是,其後續仍然可以正常運行的原因。而其他資料庫雖然剛啟動的時候內存佔用率不是很高,但是,但系統內存到達80%以上時,在進行數據處理就會受到明顯的影響。
『叄』 Oracle資料庫緩存大小怎麼設置,比如要設置一個緩存為8G的。這個數值是怎麼計算的
10g之前可以設置db_cache_size 來指定緩存大小
10g開始可以使用sga_target(當然你也可以不用,但是推薦用),來設定整個共享內存區域大小,包括緩存和共享池等。不需要再單獨設置db cache
11g可以設置memory_target,不光包括了sga,還包括了pga,是所有給oracle的內存的總和,就更方便了。
如果你使用了sga_target或者memory_target,還同時設置了db_cache_size的話,那麼你設置的db_cache_size成為了緩存的最小值。
需要分配給資料庫多大內存取決於你的業務需要,你可以通過db cache advisor的視圖,來估計是否需要更大的緩存。
『肆』 ORACLE 資料庫緩沖區緩存與共享池SQL查詢和PL/SQL函數結果緩存的區別
1、數團咐陵據庫緩沖區DB_BUFFER只能緩存訪問過的BLOCK,部分解決了物理讀的問題,查詢仍然需要大量的邏輯讀。
2、SQL緩存結果集/*+RESULT_CACHE*/它緩存的是查詢的結果。不在需要大量的邏輯讀,不在需要任何的復雜計算,而是直接將已經緩存的結果返回。
3、對於採用了RESULT_CACHE的函數,Oracle自動將函數的返簡胡回結果緩存,下次執行的時候,不會實際執行函數,而是直接返回結果。塌戚由於緩存的結果存儲在SGA中,因此所有的會話可以共享這個結果。
『伍』 Oracle資料庫緩存是怎麼回事
我最近也看了一個視頻,相剋軍老師的。http://www.jiagulun.com/thread-2620-1-1.html 甲骨論的,希望可以幫到你。
『陸』 清除ORACLE資料庫緩存有幾種方法,分別是哪些
10g:
alter system flush buffer_cache
9i:
alter system set events = 'immediate trace name flush_cache'