Oracle 12cR1中性能优化新特性之全数据库缓冲模式

通常情况下,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

扫描二维码关注公众号,回复: 211841 查看本文章

 

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)  如需恢复控制文件,应先检查全数据库缓冲模式是否开启。

猜你喜欢

转载自www.cnblogs.com/lhdz_bj/p/9013777.html