You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle迁移至Aurora Postgres时读写状态校验等效查询方案问询

原生PostgreSQL等效查询方案

原生PostgreSQL可通过系统函数判断节点是否可写入,逻辑和你原Oracle PL/SQL的需求完全匹配:

  • 核心判断函数为pg_is_in_recovery():
    SELECT pg_is_in_recovery();
    
    返回值说明:
    • 返回f/false:节点为主节点,默认支持写入操作
    • 返回t/true:节点为备节点,默认处于只读状态
  • 若需额外校验数据库全局读写配置,可叠加查询参数:
    SHOW default_transaction_read_only;
    
    返回off即为默认允许写入,返回on即为全局默认只读。

对应PL/pgSQL的判断逻辑示例:

DECLARE
  v_is_readonly boolean;
BEGIN
  SELECT pg_is_in_recovery() INTO v_is_readonly;
  IF NOT v_is_readonly AND current_setting('default_transaction_read_only') = 'off' THEN
    -- 执行需要写入权限的业务逻辑
  END IF;
END;
Aurora PostgreSQL原生专属查询方案

Aurora PostgreSQL提供专属的系统函数和视图,可直接区分读写节点:

  1. 最简判断函数(Aurora PostgreSQL 10及以上版本支持):
    SELECT pg_is_primary();
    
    返回t即为写节点(主实例),返回f即为读节点(只读副本)。
  2. 兼容所有Aurora PostgreSQL版本的查询方案:
    SELECT count(*) FROM aurora_replica_status() WHERE session_id = 'MASTER_SESSION_ID';
    
    返回值大于0即为写节点,等于0即为读节点。

内容的提问来源于stack exchange,提问作者Harmeet Singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 22:36:05