作者:胖头鱼的鱼缸(尹海文)
Oracle ACE Associate: Database(Oracle与MySQL)
PostgreSQL ACE Partner
10年数据库行业经验,现主要从事数据库服务工作
拥有OCM 11g/12c/19c、MySQL 8.0 OCP、Exadata、CDP等认证
墨天轮MVP、认证技术专家、年度墨力之星,ITPUB认证专家、专家百人团成员,OCM讲师,PolarDB开源社区技术顾问,OceanBase观察团成员
圈内拥有“总监”、“保安”、“国产数据库最大敌人”等称号,非著 名社恐(社交恐怖分子)
公众号:胖头鱼的鱼缸;CSDN:胖头鱼的鱼缸(尹海文);墨天轮:胖头鱼的鱼缸;ITPUB:yhw1809。
除授权转载并标明出处外,均为“非法”抄袭
其实吧,这个功能在去年还是23c就已经知晓了,昨天凌晨正式更名成Oracle Database 23ai,是时候又翻出来玩玩了。
True Cache是一个在Oracle数据库之前的in-memory和只读的缓存。和Oracle ADG类似,True Cache是一个仅需很少磁盘的主库(Primary database)的全功能只读数据副本。
True Cache是用于应对大规模数据库连接和快速低延迟访问数据,适用于读远多于写的场景,通过True Cache读取数据不会对主库产生任何影响。同一般缓存不同的是,True Cache自动将最频繁访问的数据至于缓存之中,并确保与主库、统一缓存的其他对象以及其他缓存保持一致。同时可以缓存Oracle数据库的所有对象和数据类型(包括JSON)。
Oracle数据库的安全策略同样适用于True Cache,因此可以控制对缓存的访问。这使得可以不将敏感数据放入缓存之中。

True Cache带来了多项面向于应用程序开发和性能的好处:
在uniform配置中,可以部署多个,使用统一True Cache数据库应用服务的完全相同的True Cache。客户端会话会平均分发到各个要用用相同数据集的True Cache中。
上面使用uniform配置的示例有以下一些元素:
当True Cache启动时,FAL_CLIENT参数将设置为本机True Cahce的网络名称(TCDB1I或TCDB2I),而FAL_SERVER参数将设置为主库的网络名称(PRIMDBI)。如果应用程序人工管理连接,通过True Cache数据库的应用服务发送使用True Cache的查询至True Cache,而使用主库的应用服务发送其他的查询和更新操作至主库。
为了实现更高的应用程序透明度,可以使用JDBC方法,并将主数据库应用服务与True Cache数据库应用服务相关联。上面示例的数据库应用服务:
通过将主库应用服务(SALES)的TRUE_CACHE_SERVICE参数设置为SALES_TC,可以将这两个服务关联起来。应用程序的代码只需要了解主数据库应用服务(SALES)。要使用SALES_TC数据库应用程序服务,应用程序将更改SALES JDBC连接的setReadOnly标志(TRUE或FALSE)。
True Cache和主库共享一个远程监听sale_rl。如果有多个True Cache并服务与同一个数据库应用服务,监听将自动将会话分发并负载均衡到每个缓存。
在partitioned配置中,数据是分散在不同的True Cache中,即每个缓存存放不同的数据子集。所有True Cache的叠加起来的缓存数据量可能远大于主库或uniform配置的缓存数据量。
使用COLOCATION_TAG的partitioned配置和uniform配置类似,不同的是应用程序将网络别名配置在CONNECT_DATA参数的COLOCATION_TAG中,这将不会使用到负载均衡。监听将尝试使用有COLOCATION_TAG配置的所有连接发送到同一个True Cache中。
上面使用COLOCATION_TAG的partitioned配置示例有以下一些元素:
当True Cache启动时,FAL_CLIENT参数将设置为本机True Cahce的网络名称(TCDB1I或TCDB2I),而FAL_SERVER参数将设置为主库的网络名称(PRIMDBI)。如果应用程序人工管理连接,通过True Cache数据库的应用服务发送使用True Cache的查询至True Cache,而使用主库的应用服务发送其他的查询和更新操作至主库。
为了实现更高的应用程序透明度,可以使用JDBC方法,并将主数据库应用服务与True Cache数据库应用服务相关联。上面示例的数据库应用服务:
通过将主库应用服务(SALES)的TRUE_CACHE_SERVICE参数设置为SALES_TC,可以将这两个服务关联起来。应用程序的代码只需要了解主数据库应用服务(SALES)。要使用SALES_TC数据库应用程序服务,应用程序将更改SALES JDBC连接的setReadOnly标志(TRUE或FALSE)。
True Cache和主库共享一个远程监听sale_rl。
上面的示例中,partitioned配置中的每个True Cache使用不同的数据库应用服务缓存不同的数据,有以下一些元素:
当True Cache启动时,FAL_CLIENT参数将设置为本机True Cahce的网络名称(TCDB1I或TCDB2I),而FAL_SERVER参数将设置为主库的网络名称(PRIMDBI)。如果应用程序人工管理连接,通过True Cache数据库的应用服务发送使用True
为了实现更高的应用程序透明度,可以使用JDBC方法,并将主数据库应用服务与True Cache数据库应用服务相关联。上面示例的数据库应用服务:
通过将主库应用服务(SALE和HR)的TRUE_CACHE_SERVICE参数分别设置为SALES_TC和HR_TC,可以将这两组服务关联起来。应用程序的代码需要了解主数据库应用服务(SALES和HR)。要使用SALES_TC和HR_TAC数据库应用程序服务,应用程序将更改SALES JDBC连接的setReadOnly标志(TRUE或FALSE)。
True Cache和主库共享一个远程监听sale_rl。
本期对Oracle Database 23ai True Cache的基本概念、好处、配置模式以及搭建流程进行了讲解。后面将尝试利用多台虚拟机进行搭建测试。
老规矩,知道写了些啥。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31466763/viewspace-3014385/ ,如需转载,请注明出处,否则将追究法律责任。