Oracle 12cR1中效能最佳化新特性之全資料庫緩衝模式

sqysl發表於2016-06-17


通常情況下,Oracle會決定哪些資料會留在緩衝區中。當沒足夠的空間時,資料會被寫出記憶體。此外,為了避免大量讀取將有用的資訊擠出緩衝區,Oracle對有些操作也許會才去繞過緩衝區的措施。Oracle12cR1 (12.1.0.2)引入了全資料緩衝的概念。如果Oracle認為緩衝區大的足以容納整個資料庫,那麼,它將會緩衝所有的資料塊。此外,可以強制啟用全資料緩衝模式。
1.   強制開啟全資料庫緩衝模式
不是讓Oracle自己決定是否開啟全資料庫緩衝模式,你可以透過ALTER DATABASE命令強制開啟該模式。
要想強制開啟該模式,需要先將關閉並將庫置於mount狀態,否則,在開啟的資料庫上執行該ALTER DATABASE命令將會報錯。
SQL>ALTER DATABASE FORCE FULL DATABASE CACHING;
ALTERDATABASE FORCE FULL DATABASE CACHING
*
ERRORat line 1:
ORA-01126:database must be mounted in this instance and not open in any
instance
 
SQL>
 
CONN/ AS SYSDBA
SHUTDOWNIMMEDIATE;
STARTUPMOUNT;
ALTERDATABASE FORCE FULL DATABASE CACHING;
ALTERDATABASE OPEN;
然後,查詢V$DATABASE檢視就會看到修改結果。
SELECTforce_full_db_caching FROM v$database;
 
FOR
---
YES
 
SQL>
2.   強制禁用全資料庫緩衝模式
強制禁用全資料庫緩衝模式和強制開啟類似。
CONN/ AS SYSDBA
SHUTDOWNIMMEDIATE;
STARTUPMOUNT;
ALTERDATABASE NO FORCE FULL DATABASE CACHING;
ALTERDATABASE OPEN;
透過查V$DATABASE檢視也可以看到修改後的變化。
SELECTforce_full_db_caching FROM v$database;
 
FOR
---
NO
 
SQL>
3.   注意
1)  COMPATIBLE引數必須設定為12.0.0或更高。
2)  如果正使用AMM或 ASMM,可能會調整緩衝大小,從而導致緩衝太小而容不下整個資料庫。需要合理調整記憶體引數或DB_CACHE_SIZE引數為稍大點的正確值。
3)  資料物件不會被預先載入到緩衝區,而是在被存取時被載入。
4)  當強制開啟全資料庫緩衝模式時,被定義為非緩衝的LOB資料也會被緩衝,在常規模式時,這些LOB資料不會被緩衝。
5)  當使用多宿主庫選項時,強制開啟全資料庫緩衝模式會多CDB和所有PDB起作用。
6)  如需恢復控制檔案,應先檢查全資料庫緩衝模式是否開啟。
 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8484829/viewspace-2120390/,如需轉載,請註明出處,否則將追究法律責任。

相關文章