以前写了一个通过dbms_lob.getlength来比对lob长度的脚本,后来通过实践发现有点问题,发现很多长度一样的lob但是内容可能不一样,oracle目前只有使用dbms_lob.compare来比对lob字段,但是这个有个局限就是不能使用dblink来比对两个库的lob,下面是一个举例脚本,通过两张表tb1和tb2通过主键id来进行lob的比对
如果发现lob不一致,则打印出id号
. /home/oracle/.bash_profile sqlplus -silent test/test <<EOF set serveroutput on set pagesize 0 feedback off verify off heading off echo off Declare CURSOR c1 is select id from test.tb1; varC1 blob; varC2 blob; ln number(4); Begin for v1 in c1 loop select data into varC1 from test.tb1 where id = v1.id; select data into varC2 from test.tb2 where id = v1.id; ln := DBMS_LOB.Compare(varC1,varC2); if ln <>0 then DBMS_output.put_line(v1.id); end if; end loop; End; /