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

配置AWS DMS Binary Reader访问ASM做CDC遇TNS解析失败,如何通过SCAN授权?

解决AWS DMS通过SCAN访问ASM的TNS解析及权限问题

一、排查TNS解析失败的核心原因

数据库连接正常但ASM连接失败,说明SCAN的解析逻辑在ASM侧存在配置缺失:

  • 检查Grid Infrastructure的SCAN监听状态:
    登录Grid用户执行以下命令,确认SCAN监听正常运行且ASM实例已注册:
    srvctl status scan_listener
    srvctl config scan
    srvctl status asm -detail
    
    确保输出中ASM实例状态为RUNNING,且SCAN监听已注册+ASM服务。
  • 验证ASM SCAN的DNS解析:
    在AWS VPC内的测试机器(如EC2)上执行tnsping <ASM_SCAN_NAME>,确认能解析到ASM节点的私有IP。如果解析失败,需检查VPC的DNS配置(如Route 53私有托管区)是否添加了ASM SCAN的A记录,指向所有ASM节点的私有IP。

二、配置ASM访问权限

DMS的ASM用户需要专属系统权限才能访问ASM存储:

  • 授予ASM系统权限:
    登录ASM实例(通过Grid用户或ASM SYSDBA用户),执行SQL命令为DMS用户授予权限:
    GRANT ASM_SYSDBA TO <DMS_ASM_USER>;
    
    (注:ASM_SYSASM权限用于完全管理ASM,ASM_SYSDBA足够满足CDC的读取需求)
  • 配置ASM远程登录:
    确保ASM实例的参数文件(spfile或init.ora)中设置:
    ALTER SYSTEM SET remote_login_passwordfile=EXCLUSIVE SCOPE=SPFILE;
    
    重启ASM实例后,将ASM的密码文件(位于$ORACLE_HOME/dbs/orapw+ASM)同步到所有ASM节点的相同目录,保证远程登录一致性。

三、调整DMS端点的ASM连接配置

  • 连接字符串必须使用ASM的SCAN名称,格式示例:
    (DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=<ASM_SCAN_NAME>)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=+ASM)))
    
    注意:SERVICE_NAME固定为+ASM(ASM默认服务名),不要使用数据库的服务名。
  • 检查VPC安全组规则:
    确保DMS所在的安全组允许出站访问ASM节点的TCP 1521端口;同时ASM节点的安全组允许DMS的IP/安全组访问1521端口。

四、验证连接有效性

在VPC内的EC2实例上安装Oracle客户端,配置TNS指向ASM SCAN,用DMS的ASM用户登录测试:

sqlplus <DMS_ASM_USER>/<PASSWORD>@<ASM_SCAN_TNS_ENTRY>

如果能成功登录,说明网络、权限、解析均正常,再重新配置DMS端点即可。

常见坑点

  • 不要混淆数据库SCAN和ASM SCAN:如果Grid配置了独立的ASM SCAN,必须使用ASM专属的SCAN名称;若共用SCAN,需确认SCAN监听同时注册了数据库和ASM服务。
  • 确认AWS DMS版本兼容你的Oracle ASM版本(如DMS 3.4.5及以上支持Oracle 12cR2+ ASM)。

内容的提问来源于stack exchange,提问作者M Sriram

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 19:52:48