select /*+ use_hash(cc,bb) */ cc.prod_inst_id, CC.val
from ods2.osor_prod_inst_attr cc, tmp_DKH_BUSI_INF_003 bb
where bb.attr_id = cc.attr_id;一张表有2KW条数据,一张表有7W条数据,用use_hash会运行5个小时之后出现
ORA-01652: unable to extend temp segment by 4096 in tablespace DKH_DAT
错误,这个应该是临时表空间不足的错?再次重跑还是跑这个错误,求解决办法,或者不用use_hash的优化方法不加use_hash的执行计划如下
from ods2.osor_prod_inst_attr cc, tmp_DKH_BUSI_INF_003 bb
where bb.attr_id = cc.attr_id;一张表有2KW条数据,一张表有7W条数据,用use_hash会运行5个小时之后出现
ORA-01652: unable to extend temp segment by 4096 in tablespace DKH_DAT
错误,这个应该是临时表空间不足的错?再次重跑还是跑这个错误,求解决办法,或者不用use_hash的优化方法不加use_hash的执行计划如下
create index tmp_DKH_BUSI_INF_inx on tmp_DKH_BUSI_INF(attr_id);
Alter tablespace 表空间 add datafile 文件名(带路径)size Xm;
--method1
SQL> alter database datafile 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\NEWORCL\NEWORCL01.DBF' resize 1000m;Database altered
--method2
SQL> alter database datafile 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\NEWORCL\NEWORCL01.DBF' autoextend on;Database altered
--method3
SQL>Alter tablespace temp add datafile 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\NEWORCL\NEWORCL02.DBF')size 10m; Database altered
SQL>
不过做Hash连接,基本上都要用到磁盘。选择出来的数据是在7W左右还是2KW左右?
如果在7W左右,考虑使用小表做驱动表,用NEST LOOP