【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】
【 使用版本 】
【问题描述】清晰明确描述问题
【复现路径】问题出现前后相关操作
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):
【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!
0b 3.2 mysql 模式 查询正常,
最近30分钟的 慢SQL 诊断
SQL: SELECT
tenant_name, – 租户名
db_name, – 数据库名
tenant_id, – 租户id
plan_id, – 执行计划 ID(可关联计划缓存进一步分析)
svr_ip, – ip
svr_port, – port
SUBSTRING(query_sql, 1, 300), – SQL 文本
COUNT(*) AS total_executions, – 总执行次数
SUM(elapsed_time) / 1000 AS total_response_time_ms, – 总响应时间(ms)
AVG(elapsed_time) / 1000 AS avg_response_time_ms, – 平均响应时间(ms)
SUM(CASE WHEN ret_code != 0 THEN 1 ELSE 0 END) AS total_errors, – 总报错次数
AVG(EXECUTE_TIME) * 100.0 / AVG(elapsed_time) AS cpu_percentage, – CPU 占比(%),注意需处理除零
MIN(request_time) AS first_execution_time – 首次执行时间(可用于推断计划生成时间趋势)
FROM oceanbase.gv$sql_audit
WHERE request_time >= (time_to_usec(now()) - 30 * 60 * 1000000) – 近30分钟
GROUP BY tenant_name, db_name, query_sql, plan_id
ORDER BY total_response_time_ms DESC limit 10
结果集 (10 行):
tenant_name db_name tenant_id plan_id svr_ip svr_port SUBSTRING(query_sql, 1, 300) total_executions total_response_time_ms avg_response_time_ms total_errors cpu_percentage first_execution_time
1098 0 10.241.223.149 2882
0b 3.2 oracle 模式查询一直报错ErrorCode = 932, SQLState = 22001, Details = ORA-00932: inconsistent datatypes
SELECT
TRIM(TENANT_NAME),
TRIM(SVR_IP),
TRIM(PLAN_ID),
TRIM(QUERY_SQL) AS SQL_TEXT,
COUNT() AS EXEC_COUNT,
ROUND(SUM(ELAPSED_TIME) / 1000) AS TOTAL_RT_MS, – 总响应时间 (ms)
ROUND(AVG(ELAPSED_TIME) / 1000) AS AVG_RT_MS, – 平均响应时间 (ms)
ROUND(SUM(EXECUTE_TIME) / 1000) AS TOTAL_CPU_MS, – 总 CPU 时间 (ms)
SUM(AFFECTED_ROWS) AS TOTAL_ROWS
FROM
GV$SQL_AUDIT
WHERE
– 核心过滤:计算 30 分钟前的微秒时间戳
REQUEST_TIME >= (SYSDATE - TO_DATE(‘1970-01-01’, ‘YYYY-MM-DD’)) * 86400 * 1000000 - (30 * 60 * 1000000)
– 可选:过滤掉系统内部 SQL,只看业务 SQL
– AND (QUERY_SQL NOT LIKE '/%autotask%*/’ OR QUERY_SQL IS NULL)
GROUP BY
TRIM(TENANT_NAME), TRIM(SVR_IP), TRIM(PLAN_ID), TRIM(QUERY_SQL)
ORDER BY
TOTAL_RT_MS DESC;
3.请给出0b 3.2 oracle 模式查询 的正确SQL