zoukankan      html  css  js  c++  java
  • [20191012]使用bash从sql_id计算hash_value.txt

    [20191012]使用bash从sql_id计算hash_value.txt

    --//没有什么实际意义,仅仅验证方法是否可行.
    --//sql_id的计算是使用MD5算法进行哈希,生成一个128位的Hash Value,其中低32位作为HASH VALUE显示,SQL_ID则取了后64位。
    --//实际上sql_id使用32进制表示,hash_value使用10进制表示。

    1.测试数据:

    select * from emp where deptno=10;
    --//查询可以知道sql_id='557p4j1ggw222'.

    SCOTT@book> select sql_text c70,sql_id,hash_value  from v$sql where sql_id = '557p4j1ggw222';
    C70                                SQL_ID        HASH_VALUE
    ---------------------------------- ------------- ----------
    select * from emp where deptno=10  557p4j1ggw222 1593706562

    SCOTT@test01p> select /*+ 12345678abdef */ sysdate from dual ;
    SYSDATE
    -------------------
    2019-10-11 22:34:56
    ---//sql_id=0p0rzks2gkrj6

    SCOTT@test01p> select name c70,hash_value,full_hash_value from V$DB_OBJECT_CACHE where  hash_value=83451430;
    C70                                           HASH_VALUE FULL_HASH_VALUE
    --------------------------------------------- ---------- --------------------------------
    select /*+ 12345678abdef */ sysdate from dual   83451430 ef5a2c4876c9e93d0a82ff9604f95e26
    select /*+ 12345678abdef */ sysdate from dual   83451430 ef5a2c4876c9e93d0a82ff9604f95e26

    --//sql_id = 557p4j1ggw222 ,HASH_VALUE = 1593706562
    --//sql_id = 0p0rzks2gkrj6 ,HASH_VALUE = 83451430

    2.测试:
    $ echo 557p4j1ggw222  0p0rzks2gkrj6 | xargs.exe -n 1  ./s2p.sh
    sql_id=557p4j1ggw222 hash_value = 1593706562
    sql_id=0p0rzks2gkrj6 hash_value = 83451430
    --//对比上面都能对上.

    3.执行脚本s2p如下:

    $ cat s2p.sh
    #! /bin/bash
    # convert sql_id to hash_value

    odebug=${ODEBUG:-0}

    sql_id="$*"
    v1=$(echo $sql_id | tr $(echo {0..9} {a..z} | tr -d 'eilo ') $( echo {0..9} {a..v}| tr -d ' '))
    v2=$(( 32#$v1 % 2**32 ))
    if [ $odebug -eq 1 ] ; then
    echo "sql_id=$sql_id v1=$v1 v2=$v2"
    fi
    echo "sql_id=$sql_id hash_value = $v2"

  • 相关阅读:
    myeclipse优化
    如何修改myeclipse的内存?eclipse.ini中各个参数的作用
    java日期处理
    拖放浮动效果——javascript
    4.什么时候加ing
    3.有些英语没有什么道理可讲的,不讲道理的习惯,必须要遵守
    数据库分页问题,跳页不正常问题解决办法
    谷歌地图计算两个坐标点的距离函数
    增加tomcat多实例 不忘初心
    ansible部署,规划 不忘初心
  • 原文地址:https://www.cnblogs.com/lfree/p/11664138.html
Copyright © 2011-2022 走看看