当前位置: 首页
数据库
Oracle 19c 利用ADG实现实时报表业务分流

Oracle 19c 利用ADG实现实时报表业务分流

热心网友 时间:2026-07-21
转载

利用Oracle19cADG实现报表分流,前提是备库启用Real-TimeQuery且以只读方式打开。需为备库配置专属服务名,确保报表应用连接备库。验证查询走备库并实时读取数据,同时注意权限、同义词等对象需手动同步至备库。

### 能,但前提是备库必须是 Active Data Guard(ADG)模式且已启用 Real-Time Query 先说几个核心判断:利用 ADG 分流报表业务确实是一个行之有效的方案,但并非“开启 ADG 就自动生效”。Real-Time Query 是 ADG 的一项运行时特性,依赖于 Redo Apply 是否实时运行、备库是否以只读方式打开。若条件不满足,执行 `SELECT` 查询时会直接报错 `ORA-16000` 或导致会话卡死。 如何在Oracle 19c中利用ADG实现实时的报表业务分流? #### 确认备库是否已启用 Real-Time Query 这是实现报表分流的前提条件,不能简单认为“ADG 已配置就自动可用”。Real-Time Query 是 ADG 的一个运行时状态,它要求底层 Redo Apply 进程持续运行,并且数据库以只读模式打开。 - 检查备库当前打开模式:`SELECT open_mode, database_role FROM v$database;` —— 该查询应返回 `READ ONLY WITH APPLY` - 如果返回 `READ ONLY`(缺少 `WITH APPLY`),说明 MRP 进程未启动,重做日志没有实时应用,此时查询到的只是“某个时间点的快照”,并非实时数据 - 如果返回 `MOUNTED`,说明备库尚未打开,无法接受任何查询连接 - 启用 Real-Time Query 的关键命令:`ALTER DATABASE OPEN READ ONLY;`(注意:不是 `OPEN`,也不是 `OPEN RESETLOGS`) #### 配置监听与服务名,让报表应用连接到备库 报表程序不能直接使用主库的服务名,否则流量无法正确分流。需要为备库单独注册一个专用服务名,并确保应用能够解析并路由到该服务。 - 在备库的 `$ORACLE_HOME/network/admin/listener.ora` 中添加静态服务(或使用 `DBMS_SERVICE` 动态注册): ``` SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = orcl_stby_ro) (ORACLE_HOME = /u01/app/oracle/product/19c/dbhome_1) (SID_NAME = orcl) ) ) ``` - 在备库的 `tnsnames.ora` 中定义该服务: ``` ORCL_STBY_RO = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = oracle-standby)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl_stby_ro) ) ) ``` - 重启监听:`lsnrctl reload`;然后使用 `tnsping ORCL_STBY_RO` 和 `sqlplus /@ORCL_STBY_RO as sysdba` 验证连通性 - 报表中间件(如 Tomcat、OBIEE、Tableau Server)的连接字符串必须指向这个新服务名,而不是主库的 `ORCL_PRI` #### 验证查询是否真的走备库并获取实时数据 仅仅连接成功并不代表备库的实时能力已生效。常见误区是应用虽连接了备库服务,但查询仍卡在旧的归档点,或者误查了主库的视图。 - 在报表连接会话中执行:`SELECT instance_name, host_name FROM v$instance;` —— 确认返回的是备库的主机名,而非主库 - 查询一条带时间戳的业务表(例如订单表的最新记录),然后在主库插入一条新记录并提交,**1~3 秒内**在备库查询应能立刻看到该新记录(延迟取决于网络和日志生成频率) - 如果延迟超过 10 秒,检查 `v$managed_standby` 中 `MRP0` 进程状态是否为 `APPLYING_LOG`,以及 `SEQ#` 和 `BLOCK#` 是否持续前进 - 禁止在备库执行 DML 或 DDL —— 即使是 `SELECT FOR UPDATE` 也会报 `ORA-16000`,因为备库是只读的 #### 容易被忽略的权限与对象可见性问题 报表用户在备库可能查不到表,这通常不是同步问题,而是权限或对象未正确暴露所致。 - 主库创建的用户和对象不会自动复制到备库 —— `CREATE USER`、`GRANT` 等 DDL 操作不属于重做日志内容,需要在备库手动执行相同的授权 - 特别注意同义词(synonym)、物化视图日志、DBA_* 视图别名等 —— 它们在备库默认不可见,除非显式创建 `CREATE SYNONYM` 或使用完整 schema 名引用 - 如果报表用到 `DBMS_STATS` 收集的统计信息,备库的统计信息不会自动同步,建议在备库定期执行 `EXEC DBMS_STATS.GATHER_SCHEMA_STATS`(只读环境下允许) - 备库的 `data dictionary` 是只读副本,某些动态性能视图(如 `v$sql`)内容为空或不准确,不要依赖它们做执行计划分析 Real-Time Query 并非“一开即用”的简单开关,它需要 MRP 持续运行、服务名正确路由、权限完整同步三个条件同时满足。最常见的故障点不在数据库配置本身,而是应用连接串写错、报表工具缓存了旧连接池、或者 DBA 忘记在备库补充授权 —— 这些排查起来比调整参数更耗时。
来源:https://www.php.cn/faq/2802358.html

游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

同类文章
更多
自增主键值从何而来?深入理解原理,告别只会auto_increment

自增主键值从何而来?深入理解原理,告别只会auto_increment

KingbaseES推荐使用serial、bigserial、显式sequence或identity列实现自增主键。serial创建integer并关联序列,bigserial对应bigint;显式sequence可自定义起始值等参数;identity有generatedbydefault(允许指定值)与always(禁止)两种模式。

时间:2026-07-25 22:22
Linux下瀚高数据库授权文件过期及替换解决方案

Linux下瀚高数据库授权文件过期及替换解决方案

在银河麒麟系统下,瀚高数据库hgdb-4 5试用授权20天到期后需替换正式授权文件。正确操作:停止服务,备份旧文件,将授权文件复制到 opt highgo hgdb-4 5 etc lic 并命名为hgdb lic,设置权限600和属主highgo:highgo,再启动服务。禁止直接修改data目录下的license info文件。

时间:2026-07-25 22:22
Oracle BLOB实时同步的5大技术挑战与难点解析

Oracle BLOB实时同步的5大技术挑战与难点解析

OracleBLOB实时同步面临分片组装、多列隔离、长事务跨窗口、事务回滚及大对象资源控制等技术挑战,必须在日志中精确还原完整字段值,才能保证源端与目标端数据完全一致,这对同步系统的稳健性提出了高要求。

时间:2026-07-25 22:22
MySQL禁用redo日志导致全备失败

MySQL禁用redo日志导致全备失败

MySQL全量备份失败是由于数据定义语言操作触发排序索引构建,禁用重做日志导致XtraBackup无法获取一致性备份。测试验证表明,优化表语句即使无数据也会触发该问题。根本原因在于排序索引构建过程跳过了重做日志记录,破坏了备份的一致性。

时间:2026-07-25 20:35
Kafka架构图优化与改进的全面详细步骤与实践指南

Kafka架构图优化与改进的全面详细步骤与实践指南

Kafka作为实时数据流处理的核心中间件,其底层架构虽已相当成熟,但在实际生产环境中,要充分发挥其性能潜力,仍需落实到具体的调优与架构改造上。核心目标可归纳为三点:如何承载更高的吞吐量、如何保障数据不丢失、以及故障发生时如何快速恢复。本文将从这几个关键方向出发,深入探讨如何真正榨干Kafka集群的性

时间:2026-07-25 20:35
热门专题
更多
刀塔传奇破解版无限钻石下载大全 刀塔传奇破解版无限钻石下载大全
洛克王国正式正版手游下载安装大全 洛克王国正式正版手游下载安装大全
思美人手游下载专区 思美人手游下载专区
好玩的阿拉德之怒游戏下载合集 好玩的阿拉德之怒游戏下载合集
不思议迷宫手游下载合集 不思议迷宫手游下载合集
百宝袋汉化组游戏最新合集 百宝袋汉化组游戏最新合集
jsk游戏合集30款游戏大全 jsk游戏合集30款游戏大全
宾果消消消原版下载大全 宾果消消消原版下载大全
  • 热门数据榜