oracle in-memory database 使用,手把手教你应用Oracle Database 19c新特性-创建和填充外部表到In-Memory...

a8187357c7e574f2d01f6bfafeae8471.png

Oracle Database 18c支持将外部表中的数据填充到内存列存储(IM列存储)中。这个功能充许用户将外部文件中的数据加载到IM列存储中。只是这个填充过程必须通过执行DBMS_INMEMORY.POPULATE来手动完成。

在Exadata上运行的Oracle Database 19c环境中,对外部表使用IM列存储进行了增强,如果启用了内存的外部表功能,就会自动将外部数据填充到IM列存储中。在实际的项目中利用Oracle Database In-Memory的功能极大加速对外部数据的查询和数据聚合,这个功能可以很好的帮助在某些数据仓库或报表项目中需要将存储在外部表的历史冷数据纳入统计分析,从而帮助应用加速运行。

a8187357c7e574f2d01f6bfafeae8471.png

接下来我们就通过例子来看看这项功能是如何使用的吧。

一、环境准备

1、Oracle 19c数据库

2、一个CDB和一个PDB

3、一个外部源文件d0219.txt,放在/opt/txt下,内容是以逗号进行分隔的文本数据,如下图所示:

56ead5a562d3222f6587ad12ece0354f.png

二、配置In-Memory Column Store Size

要使用内存列格式存储数据,我们首先要分配一部分内存区域用来存储列格式数据,我们只需要配置一个参数INMEMORY_SIZE既可启用列格式内存。如下图:

ad3eda64f695718e12a33eae550b2fea.png

重启数据库并打开我们的目标数据库orclpdb1。

a0770e52e74e7391cf999cd4709c5725.png

三、创建数据库目录对象

创建数据库目录对象,用于访问处于文件系统上的外部数据。

ff444fa28bbb5d1b42ac09538a6f7edf.png

四、创建In-Memory外部表

在orclpdb1里面创建一个用户,此用户拥有In-Memory外部表对象,同时将数据库目录对象授权给此用户。

a468cf3ea01f24a1bf82df31529bf3dd.png

创建内存外部表,使用INMEMORY MEMCOMPRESS FOR CAPACITY HIGH子句。

03d4f435f47ed2fd109895a61735b5ac.png

检查此外部表的In-Memory是否开启,如下图所示,可以看到此外部表已经启用In-Memory了。

8e48731ab52eb1100240a13562552472.png

五、查询In-Memory外部表

内存中外部表的查询必须先将QUERY_REWRITE_INTEGRITY参数设置为stale_tolerated。

535bbfbf644a57d2a2c20361c73cc2d1.png

检查一下此外部表数据是否被加载到In-Memory内存中,如下图所示可以看到此外部表已成功加载到In-Memory内,从而验证了19c可以自动装载外部表的数据到In-Memory中,无需手动装载。

8d58eb4f1539de9bebd700e407b258d7.png

六、确认查询In-Memory外部表是否使用In-Memory数据访问

我们使用执行计划检查是否使用了In-Memory访问外部表的数据。如下图所示:外部表的访问使用了In-Memory内存中的数据。

68467afb9b85dc77c22da49b0f22b411.png

七、总结

上面的例子验证了Oracle database 19c In-Memory在外部表中的增强,可以自动装载外部表的数据到In-Memory,中无需手动装载,从而加快了数仓、报表用到外部表数据的应用,简单、直接、自动化。

手把手系列文章:

a8187357c7e574f2d01f6bfafeae8471.png

扫描下方QR Code即刻预约ADW演示

编辑:殷海英

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值