

应用程序需要更快速地处理大量数据,这给传统数据库系统带来了很大压力。为了解决这个问题,Oracle在其最新的 23ai 版本中推出了一个新功能 -- Oracle True Cache(真实缓存)。这个功能就像是数据库的"快速记忆区",可以让数据访问变得更快。本文会用简单的方式介绍 True Cache 是什么、怎么用,以及如何设置,帮助数据库管理人员和开发人员更好地使用这个实用工具。


Oracle True Cache 概述
内存缓存:True Cache 作为主数据库前的内存缓存层,存储频繁访问的数据,减少对主数据库的直接读取请求。 数据一致性:通过应用主数据库的重做日志(redo apply),True Cache 保持与主数据库的数据一致性,确保返回的始终是已提交的数据。 自动管理:True Cache 自动管理缓存的数据块,无需人工干预,简化了缓存的维护工作。

True Cache 的架构与工作原理
查询处理:当应用程序向 True Cache 发起查询请求时,True Cache 首先在其内存中查找所需数据。如果数据已缓存,则直接返回;否则,从主数据库获取数据并缓存,以备后续请求使用。 缓存填充:True Cache 启动时为空,会读取大量数据块以填充缓存,确保常用数据的快速访问。 数据更新:缓存中的数据块通过从主数据库应用重做日志(redo apply)自动更新,类似于 Oracle Active Data Guard 的更新机制。 负载均衡:如果存在多个 True Cache 实例服务于同一数据库应用服务,监听器会自动分配和负载均衡会话到各个缓存实例。

应用程序与 True Cache 的集成

双物理连接模式:应用程序维护两个物理连接:一个连接到主数据库,另一个连接到 True Cache。每个连接都有各自的数据库应用服务,应用程序根据操作类型(读取或写入)选择使用哪个连接。这种模式适用于任何现有的客户端驱动程序和编程语言。 单逻辑连接模式:应用程序维护一个逻辑连接,使用主数据库的数据库应用服务。从 Oracle Database 23c 开始,JDBC Thin 驱动程序会维护到主数据库和 True Cache 的物理连接。这种模式仅适用于 Java 应用程序。应用程序无需指定实例名称即可在 True Cache 和主数据库之间切换。通过调用特定的方法将逻辑连接标记为只读或读写:如果是只读,查询会被发送到 True Cache;否则,发送到主数据库。
// 创建逻辑连接,连接到名为 SALES 的主数据库应用服务Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@//host:port/service","username","password");// 启用 True Cache 功能((OracleConnection) conn).setUseTrueCacheDriverConnection(true);// 将连接设置为只读模式,查询将被路由到 True Cacheconn.setReadOnly(true);Statement stmt = conn.createStatement();ResultSet rs = stmt.executeQuery("SELECT * FROM your_table");// 处理结果集rs.close();stmt.close();// 将连接设置为读写模式,查询将被路由到主数据库conn.setReadOnly(false);stmt = conn.createStatement();stmt.executeUpdate("UPDATE your_table SET column = value");// 提交更改conn.commit();stmt.close();// 关闭连接conn.close();

True Cache 的配置策略

统一配置(Uniform Configuration)
主数据库: PRIMDBITrue Cache 实例: TCDB1I
和TCDB2I远程监听器: sales_rl应用程序:两个独立的应用程序
FAL_CLIENT参数(如
TCDB1I或
TCDB2I)指定的网络名称,注册到主数据库的网络名称(由
FAL_SERVER参数指定,如
PRIMDBI)。
主数据库( PRIMDBI
)运行名为SALES
的数据库应用服务。两个 True Cache 实例( TCDB1I
和TCDB2I
)共享名为SALES_TC
的数据库应用服务。
SALES)中设置
TRUE_CACHE_SERVICE参数为
SALES_TC,实现两者的关联。应用程序代码只需了解主数据库的应用服务(
SALES)。要使用
SALES_TC数据库应用服务,应用程序只需更改
SALESJDBC 连接的
setReadOnly标志(
TRUE或
FALSE)。
sales_rl)。如果存在多个 True Cache 实例并服务于同一个数据库应用服务,监听器会自动分配并负载均衡会话到各个缓存实例。

总结

Oracle数据库的国产化替代,应该从哪些角度考虑

Oracle数据库架构选择指南

SQL*Plus工具的继任者--Oracle sqlcl

Oracle 11.2.0.4 RAC环境节点重新添加

Oracle运维脚本分享
文章转载自DBA巫师,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




