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

 

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lhdz_bj

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值