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

从CloudSQL审计日志追踪PostgreSQL游标c1的原始查询

追踪CloudSQL PostgreSQL中FETCH语句对应的游标原始查询

方法一:通过Cloud Logging回溯历史会话的游标创建语句

审计日志中的进程ID和会话ID是关联同一会话操作的关键:

  • 从你的日志条目里提取两个核心标识:进程ID(980077)和会话ID(41406,对应日志里的[41406-1])
  • 在Cloud Logging中使用以下过滤条件查询同一会话的所有日志:
    logName="projects/xyz/logs/cloudsql.googleapis.com%2Fpostgres.log"
    resource.type="cloudsql_database"
    resource.labels.database_id="xyz:postgres"
    textPayload:"[980077]"
    textPayload:"[41406-"
    
  • 缩小时间范围到FETCH语句执行时间(2023-04-27T08:03:17)之前的几分钟内,在结果中查找包含DECLARE c1 CURSOR的日志条目,该语句就是游标c1对应的原始查询。

方法二:调整PostgreSQL日志配置,捕获完整游标操作日志

如果当前日志未记录游标创建语句,需要修改CloudSQL实例的日志参数:

  • 登录Cloud Console,进入目标CloudSQL实例的数据库标志页面
  • 添加或修改以下参数:
    • log_statement:设置为all(会记录所有SQL语句,包括游标声明和FETCH操作),排查完成后建议改回原配置以避免日志量过大
    • log_min_duration_statement:可选,若仅关注慢语句,可设置为1000(记录执行时间超过1秒的语句),需结合log_statement使用以确保游标声明被捕获
  • 保存参数后实例会重启生效,后续新会话的游标创建语句会被完整记录,可直接关联对应的FETCH操作

补充说明

pg_cursors视图仅能查询当前活跃会话的游标,一旦会话关闭,游标会被销毁,因此查询不到历史游标是正常现象,必须通过日志回溯历史会话的操作记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 14:42:12