目录
一、执行数据库优化脚本 报错... 3
解决方法:... 4
1、直接注释掉RECYCLE_POOLS 赋值sql语句块... 4
2、手动修改脚本... 5
附录... 6
一、执行数据库优化脚本 报错
AutoParaAdj3.5_dm8.sql
1)manager中报错
-20001: 执行失败, -7065 数据未找到 -7065: anonymous block line 188
RECYCLE_POOLS RECYCLE缓冲区分区数赋值时报错。
2)disql中报错: --貌似不准确
[-20001]: 执行失败, -7065 数据未找到 -7065: anonymous block line 170
解决方法:
1、直接注释掉RECYCLE_POOLS 赋值sql语句块
报错:
236行
注释掉
再执行即可!!
2、手动修改脚本
select top 1 rn into RECYCLE_POOLS from t1 where rn <= RECYCLE*1024/3000/(page()/1024) order by 1 desc;
测试 RECYCLE 值最低190才可以为 RECYCLE_POOLS 赋值。
所以要求内存值 v_mem_mb 最低 4750 才可以执行脚本
注:
(仅修改v_mem_mb值不行,必须实际内存超过4750才可以
因为脚本前面会扫描实际内存是否大于v_mem_mb值:
若写的v_mem_mb 的值大于实际内存值,脚本中会重新按实际内存赋值!
SQL调式:在这里重新赋值实际内存3935
)
所以实际内存值小于4750的 直接修改 v_mem_mb 无效!!
这里需要将
select top 1 rn into RECYCLE_POOLS from t1 where rn <= RECYCLE*1024/3000/(page()/1024) order by 1 desc;
修改为
select top 1 rn into RECYCLE_POOLS from t1 where rn <= 190*1024/3000/(page()/1024) order by 1 desc;
即可
执行成功!!
附录:
测试脚本:
create table t (rn int);
declare i int;
begin
for i in 1..100 loop
insert into t values(i);
end loop;
end;
/
create table t1 as
(
select * from t where rn > 1 minus
select
ta.rn * tb.rn
from
t ta,
t tb
where
ta.rn <= tb.rn
and ta.rn > 1
and tb.rn > 1
);
select top 1 rn from t1 where rn <= 190*1024/3000/(page()/1024) order by 1 desc;
RECYCLE_POOLS 赋值 2