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

WSO2 API Manager 3.2.0新实例无法读取Oracle现有数据库数据问题排查

排查WSO2 API Manager 3.2.0重装节点无法读取Oracle共享数据库的问题

可能的原因

  • 数据库连接配置错误:重装后的节点未正确配置Oracle JDBC参数(URL、用户名、密码),或缺失驱动包,导致无法连接数据库读取数据。
  • 集群节点标识冲突:新节点的member_id重复或集群配置异常,导致节点无法加入集群并同步数据状态。
  • 本地缓存干扰:新节点启动时加载了本地旧缓存文件,未从数据库拉取最新的API和配置数据。
  • 数据库权限不足:新节点使用的数据库用户没有读取carbon_db、wso2am_db、wso2_shared.db的权限,查询数据失败。
  • 配置文件不一致:重装节点的核心配置(如deployment.toml、api-manager.xml)与正常节点存在差异,导致数据读取逻辑不兼容。

解决方法

1. 核对数据库连接配置

  • 复制正常节点的<APIM_HOME>/repository/conf/datasources/master-datasources.xml到新节点,确保三个数据库的JDBC URL、用户名、密码完全一致。示例Oracle配置:
    <datasource>
        <name>WSO2AM_DB</name>
        <description>The datasource used for API Manager database</description>
        <jndiConfig>
            <name>jdbc/WSO2AM_DB</name>
        </jndiConfig>
        <definition type="RDBMS">
            <configuration>
                <url>jdbc:oracle:thin:@//oracle-host:1521/ORCLPDB1</url>
                <username>am_db_user</username>
                <password>[encrypted-password]</password>
                <driverClassName>oracle.jdbc.OracleDriver</driverClassName>
                <maxActive>50</maxActive>
                <maxWait>60000</maxWait>
                <testOnBorrow>true</testOnBorrow>
                <validationQuery>SELECT 1 FROM DUAL</validationQuery>
                <validationInterval>30000</validationInterval>
            </configuration>
        </definition>
    </datasource>
    
  • 确认新节点<APIM_HOME>/repository/components/lib目录下存在对应版本的Oracle JDBC驱动包(如ojdbc8.jar),与正常节点保持一致。

2. 修复集群节点标识

  • 修改新节点的<APIM_HOME>/repository/conf/deployment.toml,设置唯一的member_id,确保集群配置与正常节点匹配:
    [clustering]
    enabled = true
    member_id = "apim-node-2"
    domain = "wso2.apim.domain"
    local_member_host = "192.168.1.102"
    local_member_port = 4000
    membership_scheme = "wka"
    [clustering.members]
    member1 = ["192.168.1.101", 4000]
    
  • 检查节点间的集群通信端口(默认4000、7700)是否开放,负载均衡器是否正确路由新节点的请求。

3. 强制刷新缓存

  • 启动新节点前,删除<APIM_HOME>/repository/conf/deployment/server/synapse-configs/default/api下的所有本地API文件,强制节点从数据库加载最新API数据。
  • 节点启动后,登录API Publisher控制台,点击右上角的刷新按钮,触发API数据同步。

4. 验证并修复数据库权限

  • 使用新节点配置的数据库用户登录Oracle,执行以下查询验证数据访问权限:
    -- 检查wso2am_db中的API数据
    SELECT API_ID, API_NAME FROM WSO2AM_DB.AM_API;
    -- 检查carbon_db中的身份数据
    SELECT USER_ID, USER_NAME FROM CARBON_DB.IDN_USER;
    
  • 如果查询失败,给用户授予三个数据库的必要权限:
    GRANT SELECT, INSERT, UPDATE, DELETE ON CARBON_DB.* TO am_db_user;
    GRANT SELECT, INSERT, UPDATE, DELETE ON WSO2AM_DB.* TO am_db_user;
    GRANT SELECT, INSERT, UPDATE, DELETE ON WSO2_SHARED_DB.* TO am_db_user;
    

5. 同步所有核心配置文件

  • 将正常节点的deployment.toml、api-manager.xml、registry.xml、identity.xml等核心配置文件复制到新节点,确保配置完全一致。
  • 重启新节点,观察启动日志(<APIM_HOME>/repository/logs/wso2carbon.log)是否有数据库连接或数据加载的报错信息。

内容的提问来源于stack exchange,提问作者Ali farahzadi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 03:17:36