千家信息网

如何得到给定SQL的 SQL_ID

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,本文参考盖国强老师的博文进行测试。作者:eygle |English 【转载时请标明出处和作者信息】|【恩墨学院 OCM培训传DBA成功之道】 链接:http://www.eygle.com/arch
千家信息网最后更新 2026年11月02日如何得到给定SQL的 SQL_ID本文参考盖国强老师的博文进行测试。
作者:eygle |English 【转载时请标明出处和作者信息】|【恩墨学院 OCM培训传DBA成功之道】 链接:http://www.eygle.com/archives/2017/08/dbms_sqltune_util0_sqltext_to_sqlid.html
-------------------------------------------------------------------------------------------------------------------

  1. 在 Oracle 数据库中,如何得到给定SQL的 SQL_ID ? 这是曾经被广泛讨论的一个问题。
  2. 现在,在Oracle 11g中,Oracle 给出了一个系统包,通过 dbms_sqltune_util0 可以简便的计算出给定SQL的SQL_ID。

  3. SQL> desc dbms_sqltune_util0
  4. FUNCTION EXTRACT_BIND RETURNS SQL_BIND
  5. Argument Name Type In/Out Default?
  6. ------------------------------ ----------------------- ------ --------
  7. BIND_DATA RAW IN
  8. BIND_POS BINARY_INTEGER IN
  9. FUNCTION EXTRACT_BINDS RETURNS SQL_BIND_SET
  10. Argument Name Type In/Out Default?
  11. ------------------------------ ----------------------- ------ --------
  12. BIND_DATA RAW IN
  13. FUNCTION GET_BINDS_COUNT RETURNS BINARY_INTEGER
  14. Argument Name Type In/Out Default?
  15. ------------------------------ ----------------------- ------ --------
  16. BIND_DATA RAW IN
  17. FUNCTION IS_BIND_MASKED RETURNS NUMBER
  18. Argument Name Type In/Out Default?
  19. ------------------------------ ----------------------- ------ --------
  20. BIND_POS BINARY_INTEGER IN
  21. MASKED_BINDS_FLAG RAW IN DEFAULT
  22. FUNCTION SQLTEXT_TO_SIGNATURE RETURNS NUMBER
  23. Argument Name Type In/Out Default?
  24. ------------------------------ ----------------------- ------ --------
  25. SQL_TEXT CLOB IN
  26. FORCE_MATCH BINARY_INTEGER IN DEFAULT
  27. FUNCTION SQLTEXT_TO_SQLID RETURNS VARCHAR2
  28. Argument Name Type In/Out Default?
  29. ------------------------------ ----------------------- ------ --------
  30. SQL_TEXT CLOB IN
  31. FUNCTION VALIDATE_SQLID RETURNS BINARY_INTEGER
  32. Argument Name Type In/Out Default?
  33. ------------------------------ ----------------------- ------ --------
  34. SQL_ID VARCHAR2 IN

  35. 函数 sqltext_to_sqlid 用于实现这个功能,以下测试使用了一个简单的SQL查询。
  36. 注意Oracle在SQL最后加入一个 chr(0) 的不可见字符,我们需要补齐:

  37. SYS@ r7>SELECT DBMS_SQLTUNE_UTIL0.SQLTEXT_TO_SQLID('SELECT SYSDATE FROM DUAL'||CHR(0)) SQL_ID FROM DUAL;

  38. SQL_ID
  39. ----------------------------------------------------------------------------------------------------------------------------------------------------------------
  40. c749bc43qqfz3
  41. 接下来看一下执行这个查询,数据库中自动生成的SQL_ID,与通过函数转换生成的完全一致:
  42. SYS@ r7>SELECT SYSDATE FROM DUAL;

  43. SYSDATE
  44. ---------
  45. 21-AUG-17

  46. SYS@ r7>SELECT SQL_ID FROM V$SQL WHERE SQL_TEXT='SELECT SYSDATE FROM DUAL';

  47. SQL_ID
  48. -------------
  49. c749bc43qqfz3

  50. 查看执行计划
  51. SYS@ r7>select * from table(dbms_xplan.display_cursor('c749bc43qqfz3'));

  52. PLAN_TABLE_OUTPUT
  53. ----------------------------------------------------------------------------------------------------------------------------------------------------------------
  54. SQL_ID c749bc43qqfz3, child number 0
  55. -------------------------------------
  56. SELECT SYSDATE FROM DUAL
  57. Plan hash value: 1388734953

  58. -----------------------------------------------------------------
  59. | Id | Operation | Name | Rows | Cost (%CPU)| Time |
  60. -----------------------------------------------------------------
  61. | 0 | SELECT STATEMENT | | | 2 (100)| |
  62. | 1 | FAST DUAL | | 1 | 2 (0)| 00:00:01 |
  63. -----------------------------------------------------------------

  64. 13 rows selected.

作者 函数 数据 数据库 查询 测试 生成 简便 一致 成功 信息 出处 功能 字符 学院 老师 自动生成 这是 链接 问题 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 天津市摩尔互联网科技 互联网科技公司的优势 金融科技创新监管互联网金融 与互联网科技公司 北京互联网科技有限公司 互联网科技logo设计 深圳市运趣互联网科技有限公司 昭通互联网科技选哪家 岳阳华臻互联网科技有限公司 乌苏新华互联网科技做什么的 民营互联网公司国防科技 互联网科技创新的路径 皮皮虾互联网科技有限公司 半导体是互联网高科技吗 互联网硬科技公司 福建互联网展示科技馆设计 云鲸互联网络科技有限公司 互联网科技企业商标注意事项 互联网界的黑科技 互联网的科技体现在哪里 北京互联网科技公司 互联网的科技创新 亿人帮互联网科技 互联网科技公司介绍 佛山市翊博互联网络科技有限公司 互联网金融科技公司的优势 智帮互联网科技公司最近动向 云鲸互联网络科技有限公司 互联网科技博主张洲 深圳互联网科技园地址
0