智能闪存功能最初在XD中引入。从Oracle11.2.0.2开始,除了用于XD存储,还可用于任何闪盘。Oracle12c中,不需卷管理器就可以使用闪盘。

1.  简介

智能闪存在solaris和linux上都可用,允许用户把闪盘当做第二层缓冲使用来改善性能。通常,当缓存中的数据因超时而被刷出后,下次使用时需被再次从磁盘读取到内存。通过智能闪存,超时的数据可以被放在智能缓存中,当这些数据被再次使用时,比从磁盘上读取能更快些。

为了能优化性能,官方文档建议智能闪存应该为缓存的2~10倍。这里,我们有1G缓冲,因此,应该配置2G以上大小的闪存。如下,我通过两块磁盘来模拟闪存。

# dd if=/dev/zeroof=/mnt/smt_flschc1 bs=1024 count=1024000

# dd if=/dev/zeroof=/mnt/smt_flschc2 bs=1024 count=1024000

# chownoracle:oinstall /mnt/smt_flschc1 /mnt/smt_flschc2

智能闪存内容的元数据在缓存中,如果你不考虑这点,实际缓存的大小在用智能缓存时会被减小。为了计算减小的缓存大小,可以通过智能缓存中每个块占用100字节来计算。RAC中,你还需要考虑共享池的大小,每个GCS资源需要多占208个字节。

2.  启用智能缓存

DB_FLASH_CACHE_FILE参数用来鉴定用于智能闪存的闪盘。

DB_FLASH_CACHE_FILE = /mnt/smt_flschc1,/mnt/smt_flschc2

盘大小通过DB_FLASH_CACHE_SIZE参数确定。

DB_FLASH_CACHE_SIZE = 1G, 1G

这些参数可以通过ALTERSYSTEM命令来设置,也可以通过编辑pfile来进行设置,编辑pfile的方式如下。

SQL> CREATE PFILE='/tmp/pfile.txt' FROMSPFILE;

SQL>host edit;

*.db_flash_cache_file=/mnt/smt_flschc1,/mnt/smt_flschc2

*.db_flash_cache_size=1073741824,1073741824

SQL> CREATE SPFILE FROMPFILE='/tmp/pfile.txt';

重启数据库。

SHUTDOWN IMMEDIATE;

STARTUP;

重启后,可以看到配置的参数。

SQL> SHOW PARAMETER db_flash_cache

NAME                                 TYPE        VALUE

----------------------------------------------- ------------------------------

db_flash_cache_file                  string      /mnt/smt_flschc1, /mnt/smt_flschc2

db_flash_cache_size                  big integer 1G, 1G

SQL>

智能闪存使用信息可以查询视图V$FLASHFILESTAT。

SET LINESIZE 100

COLUMN name FORMAT A20

SELECT * FROM v$flashfilestat;

FLASHFILE# NAME                      BYTES    ENABLED SINGLEBLKRDSSINGLEBLKRDTIM_MICRO     CON_ID

---------- -------------------- -------------------- ------------ -------------------- ----------

1 /mnt/smt_flschc1         1073741824          1            0                    0          0

2 /mnt/smt_flschc2         1073741824          1            0                    0         0

SQL>

3.  禁用智能闪存

重置初始化参数以禁用智能闪存。

ALTER SYSTEM RESET DB_FLASH_CACHE_FILESCOPE=SPFILE;

ALTER SYSTEM RESET DB_FLASH_CACHE_SIZESCOPE=SPFILE;

SHUTDOWN IMMEDIATE;

STARTUP;

SELECT * FROM v$flashfilestat;

no rows selected

SQL>

4.  修改表的智能闪存设置

缓存中过期数据块将被默认刷到智能闪存中。ALTER TABLE命令的FLASH_CACHE子句可以进行另外设置。

-- 禁止TEST表使用智能闪存

ALTER TABLE TEST.TEST STORAGE (FLASH_CACHENONE);

-- 强制TEST表保留在智能闪存中

ALTER TABLE TEST.TEST STORAGE (FLASH_CACHEKEEP);

-- 重置TEST表的默认行为

ALTER TABLE TEST.TEST STORAGE(FLASH_CACHE);

ALTER TABLE TEST.TEST STORAGE (FLASH_CACHEDEFAULT);

5.  性能

智能闪盘对性能的提升时,我们应该注意。很多人说,把数据文件放在闪盘上比用智能闪存性能更好。不过,测试结果和使用的硬件及应用需求有很大关系,不可一概而论。

Oracle12c中性能优化增强新特性之数据库智能闪存的更多相关文章

  1. Oracle12c 中RAC功能增强新特性之ASM&Grid

    1.    自动存储管理(ASM)方面的增强 1.1.   Flex ASM 在典型的网格架构安装中,每个节点有自己的ASM实例运行并扮演该节点上数据库的存储容器的角色,对这种安装配置,存在单点失败的 ...

  2. Oracle12c中性能优化&功能增强新特性之临时undo

    临时表最有意思的特点之一是undo段也存储在常规undo表空间中,而它们的undo反过来被redo保护,这会导致一些问题. 1)  写undo表空间需要数据库以读写模式打开,因此,只读数据库和物理备库 ...

  3. java并发学习--第八章 JDK 8 中线程优化的新特性

    一.新增原子类LongAdder LongAdder是JDK8中AtomicLong的增强工具类,它与AtomicLong最大的不同就是:在多线程场景下,LongAdder中对单一的变量进行拆分成多个 ...

  4. Oracle12c中性能优化&功能增强新特性之全局索引DROP和TRUNCATE 分区的异步维护

    Oracle 12c中,通过延迟相关索引的维护可以优化某些DROP和TRUNCATE分区命令的性能,同时,保持全局索引为有效. 1.   设置 下面的例子演示带全局索引的表创建和加载数据的过程. -- ...

  5. Oracle12c中性能优化&功能增强新特性之重大突破——内存列存储新特性

    内存列存储(IM column store) 是Oracle12.1.0.2版本的主要特点.该特点允许列,表,分区和物化视图在内存中以列格式存储,而不是通常的行格式.数据存在内存中的好处显而易见,而列 ...

  6. Oracle12c中性能优化新特性之新增APPROX_COUNT_DISTINCT 快速唯一值计数函数

    Oracle11g中,为了改善DBMS_STATS包收集统计信息时的唯一值计数功能,增加了 APPROX_COUNT_DISTINCT函数,但文档中未记载.Oracle12c文档中包括了该函数,因此, ...

  7. Oracle12c中PL/SQL(DBMS_SQL)新特性之隐式语句结果(DBMS_SQL.RETURN_RESULT and DBMS_SQL.GET_NEXT_RESULT)

    隐式数据结果特性将能简化从其他数据库到Oracle12c存储过程迁移.1. 背景T-SQL中允许查询结果的隐式返回.例如:下面T-SQL存储过程隐式返回查询结果.CREATE PROCEDURE Ge ...

  8. 【译】.NET 5. 0 中 Windows Form 的新特性

    自从 Windows Form 在 2018 年底开源并移植到 .NET Core 以来,团队和我们的外部贡献者都在忙于修复旧的漏洞和添加新功能.在这篇文章中,我们将讨论 .NET 5.0 中 Win ...

  9. ABAP 7.52 中的Open SQL新特性

    S/4 HANA 1709 已经在几个月前发布,随之而来的是ABAP 7.52. 本文翻译了更新文档中有关Open SQL的部分 本文链接:http://www.cnblogs.com/hhelibe ...

随机推荐

  1. Hadoop MapReduce执行过程实例分析

    1.MapReduce是如何执行任务的?2.Mapper任务是怎样的一个过程?3.Reduce是如何执行任务的?4.键值对是如何编号的?5.实例,如何计算没见最高气温? 分析MapReduce执行过程 ...

  2. jquery的click无法触发事件

    一个页面需要在加载后勾选table中所有行的checkbox,于是就这样写 $("table thead tr th input[type='checkbox']").click( ...

  3. ~/.bashrc文件写错, 导致Linux全部命令丢失

    问题 今天写bashrc文件的时候, 不小心把PATH结尾带错了,当时不知道,直接就source了, 后来出来的时候发现命令全部提示找不到了... 解决 重新赋予环境变量PATH就行 export P ...

  4. myeclipse中文名字项目运行报错

    今天由于项目进行分支,负责开发迭代的功能对应不同的分支项目,没想到的是分支项目名称加上了功能的中文名字.要使用了resin发布项目的时候,报了 java.io.CharConversionExcept ...

  5. CSS 常用语法与盒模型分析

    CSS基础知识 CSS规则由两个主要的部分构成:选择器,以及一条或者多条声明 selector { property: value; property: value; ... property: va ...

  6. shell脚本中如何使scp不输入密码即可传输文件

    答:使用ssh密钥对 示例如下: 如果A机想要获取B机上的文件,那么需要将在A机上生成的公钥放置到B机上的指定位置~/.ssh/authorized_keys 问题一: 如何在A机上生成ssh密钥对? ...

  7. ZooKeeper 增加Observer部署模式提高性能

    Observer:在不伤害写性能的情况下扩展ZooKeeper. 虽然通过Client直接连接到ZooKeeper集群的性能已经很好了,可是这样的架构假设要承受超大规模的Client,就必须添加Zoo ...

  8. Centos下挖XMR门罗币的详细教程

    很多朋友都看过我之前写的Ubuntu下挖XMR门罗币的教程,也有很多朋友提出,为什么不写个Centos的教程出来,今天我在这里就写个Centos的教程,看这个教程前,大家先看看之前的教程,因为里面涉及 ...

  9. VC++异常处理

    1.测试代码: #include <stdio.h> #include <windows.h> void main() { __try { DWORD dwDemonObj = ...

  10. 《剑指offer》第十一题(旋转数组的最小数字)

    // 面试题:旋转数组的最小数字 // 题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. // 输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素.例如数组 // {3, ...