[20160323]关于FULL_HASH_VALUE2.txt
--前一阵子firefox遇到问题,测试插件Calculate Hash.链接:
http://blog.itpub.net/267265/viewspace-2023144/
--实际上许多工具命令是相同的,linux下也有一个命令md5sum也可以拿来计算FULL_HASH_VALUE.测试看看:
1.环境:
SCOTT@book> @ &r/ver1
PORT_STRING VERSION BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx 11.2.0.4.0 Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
SCOTT@book> select * from dept where deptno=10;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
--sql_id=4xamnunv51w9j
SCOTT@book> select sql_id,hash_value,sql_text from v$sql where sql_id='4xamnunv51w9j';
SQL_ID HASH_VALUE SQL_TEXT
------------- ---------- ------------------------------------------------------------
4xamnunv51w9j 911274289 select * from dept where deptno=10
SCOTT@book> select name,full_hash_value from V$DB_OBJECT_CACHE where hash_value=911274289 and rownum=1;
NAME FULL_HASH_VALUE
---------------------------------------- --------------------------------
select * from dept where deptno=10 1431c45dbddbb9e74eaa74d53650f131
2.使用md5sum 命令看看.
--在使用前要注意几点
--1. oracle 的计算要在后面补充chr(0).
--2. 使用echo 缺省有一个回车在最后,要加入-n参数.不要输出尾部newline.
$ echo -n -e 'select * from dept where deptno=10\0000' | md5sum
5dc43114e7b9dbbdd574aa4e31f15036 -
-- 前面的blog已经提到,oracle计算出来的把顺序颠倒一些.例如后面8位31f15036,颠倒1下3650f131,正好复合.
5dc43114 e7b9dbbd d574aa4e 31f15036
颠倒
1431c45d bddbb9e7 4eaa74d5 3650f131
--这样正好与前面计算的1431c45dbddbb9e74eaa74d53650f131一样.
2.写一个脚本看看:
--注意:实际sql_id的计算,oracle对语句文本做"格式化"处理的,写这个脚本意义不大,权当作一次学习.对一些简单的语句还是有用的.
--参考链接:http://blog.itpub.net/267265/viewspace-1701985/ [20150616]关于sql_id.txt
$ cat aa.sh
#! /bin/bash
a=$(echo -n -e 'select * from dept where deptno=10''\0000' | md5sum| cut -f1 -d' ')
echo $a
b=${a: -8}
echo $b
c=$(echo "${b: -2:2}${b: -4:2}${b: -6:2}${b: -8:2}"| tr [a-f] [A-F])
echo $c
echo -e "ibase=16;hash_value=$c;print \"hash_value=\";hash_value;"| bc -l
$ . aa.sh
5dc43114e7b9dbbdd574aa4e31f15036
31f15036
3650F131
hash_value=911274289