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

  • 相关阅读:
    hadoop项目放在tomcat服务器中遇见的问题
    hadoop-hdfs间文件复制
    fastdfs扩容
    mysql-8.0修改密码方式
    同一个服务器启动两个redis服务记录!
    springboot+vue完美跨域 解决sessionId不一致问题
    docker 拉取fastDFS镜像
    共享锁、排他锁、互斥锁、悲观锁、乐观锁、行锁、表锁、页面锁、不可重复读、丢失修改、读脏数据
    linux下后台运行node-js项目
    概念解释:分组密码、流密码、对称密码、非对称密码
  • 原文地址:https://www.cnblogs.com/lhdz_bj/p/9013777.html
Copyright © 2011-2022 走看看