数据库管理-第183期 23ai:惊喜的全功能缓存True Cache-3配置使用(20240506)

来源:这里教程网 时间:2026-03-03 19:57:42 作者:

数据库管理-第183期 23ai:惊喜的全功能缓存True Cache-3配置使用(20240506)

作者:胖头鱼的鱼缸(尹海文) 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。 除授权转载并标明出处外,均为“非法”抄袭

演示了如何部署单实例数据库以及搭建True Cache的过程,本期将进一步深入探索True Cache,并对True Cache进行相关配置,使其可以用于加速读取操作。

1 创建service

1.1 主库创建service

需要在主库创建用于访问主库及True Cache的服务,由于数据访问都在PDB级别,因此服务都在PDB中创建:

  • 在单实例数据库使用DBMS_SERVICE来创建
  • 在RAC集群使用srvctl命令带上-true_cache_service参数进行配置,srvctl仅用于集群管理的实例

    由于本次都是单实例操作所以用第一种方式来展示:

    alter session set container=primpdb1;DECLARE
        db_params dbms_service.svc_parameter_array;BEGIN
       -- create a database application service for True Cache called PROD_TC using PROD_TC tnsname
       DBMS_SERVICE.CREATE_SERVICE('PROD_TC', 'PROD_TC', db_params);   -- create a database application service PROD for primary database using PROD tnsname and associate it to the PROD_TC service name using TRUE_CACHE_SERVICE attribute
       db_params('true_cache_service') := 'PROD_TC';
       DBMS_SERVICE.CREATE_SERVICE('PROD', 'PROD', db_params);   -- or, modify an already existing primary database application service called PROD to associate it to the PROD_TC service name using the TRUE_CACHE_SERVICE attribute
       -- db_params('true_cache_service') := 'PROD_TC';
       -- DBMS_SERVICE.MODIFY_SERVICE('PROD', db_params);END;
    /

    1.2 验证service

    SELECT name, true_cache_service FROM DBA_SERVICES WHERE name='PROD' or name='PROD_TC';

    image.png

    1.3 修改True Cache监听

    $ORACLE_HOME/network/admin/listener.ora

    SID_LIST_LISTENER =
      (SID_LIST =
        (SID_DESC =
          (GLOBAL_DBNAME = TCCDB1)
          (ORACLE_HOME = /u01/app/oracle/product/23.0.0/dbhome_1)
        (SID_NAME = TCCDB1)
        )    ##添加以下内容
        (SID_DESC =
          (GLOBAL_DBNAME = PROD_TC)
          (ORACLE_HOME = /u01/app/oracle/product/23.0.0/dbhome_1)
        (SID_NAME = TCCDB1)
        )
      )
    lsnrctl reload
    lsnrctl status

    image.png

    1.4 启动service

    True Cache节点:

    alter session set container=primpdb1;SELECT database_role FROM v$database;SELECT name, true_cache_service FROM DBA_SERVICES WHERE name='PROD' or name='PROD_TC';
    EXEC DBMS_SERVICE.START_SERVICE('PROD_TC');SELECT service_id, name FROM v$active_services WHERE name='PROD_TC';

    image.png

    主库:

    alter session set container=primpdb1;SELECT database_role FROM v$database;SELECT name, true_cache_service FROM DBA_SERVICES WHERE name='PROD' or name='PROD_TC';
    EXEC DBMS_SERVICE.START_SERVICE('PROD');SELECT service_id, name FROM v$active_services WHERE name='PROD';

    image.png

    1.5 验证service

    image.png image.png

    2 访问True Cache

    这里使用True Cache中配置的remote_listener参数对应的监听即可常规使用True Cache(这一部分仅从架构图分析得出,有待考证):

    sql sh/sh@prod

    更多的应用程序侧的配置则参看:https://docs.oracle.com/en/database/oracle/oracle-database/23/odbtc/using-oracle-true-cache-your-applications.html

    3 监控True Cache

    可以在任意实例使用视图v$true_cache对True Cache进行监控:

    SELECT * FROM v$true_cache;

    image.png

    4 DML重定向

    如果需要配置DML重定向则需要在pfile中添加:

    ADG_REDIRECT_DML=ture

    5 启停True Cache

    shutdown
    startup

    image.png 这里需要注意,重启True Cache后使用DBMS_SERVICE创建的service不会自启动,可以尝试写一个触发器实现。

    6 True Cache

    6.1 物理结构

    我们在基础概念那期就讲过,True Cache节点仅仅只有控制文件、参数文件和临时文件,这里由于还没有涉及临时表空间使用,所以还没有临时文件产生。 image.png

    6.2 数据库内容

    在True Cache的缓存实例中,PDB的逻辑结构与主库一致,在PRIMPDB1中也可以正常检索到sample schemas中的数据: image.png

    总结

    本期对True Cache的后续配置以及其本身一些物理及数据相关进行了探索。后续等到可以部署RAC的时候,再来一次。 老规矩,知道写了些啥。

  • 相关推荐

    热文推荐