ORACLEORA-01652无法通过128(在表空间TEMP中)扩展temp段剖析解决

同事在plsql执行SQL报错,经分析可能是Oracle临时表空间太小或SQL性能差占用资源过多。查看表空间使用率发现TEMP已达99.58%,且临时表空间数据文件不可扩容。因无法优化SQL,添加新的数据文件解决问题,还介绍了临时表空间相关操作。

1,同事说执行sql报错

同事在plsql里面执行sql报错,报错信息:ora-01652 无法通过128 (在表空间 TEMP中)扩展temp段,如下图所示:

2,查看报错sql语句

Sql比较长,而且无法扩展temp字段,那么基本推断可能有如下2种情况:

(1)oracle的temp临时表空间太小了;

(2)一个性能非常差的笛卡尔积的带全表扫描的sql占用的资源超过了temp的表空间大小。

先看执行的sql语句,sql比较长,所以这种属于(1)(2)的结合情况了,sql如下:

select p.project_cd,

       b.budget1,

       b.budget2,

       b.budget3,

       b.budget4,

       b.budget5,

       b.budget6,

       b.budget7,

       b.budget8,

       b.budget9,

       b.budget10,

       b.budget11,

       b.budget12,

       b.pledge_budget1,

       b.pledge_budget2,

       b.pledge_budget3,

       b.pledge_budget4,

       b.pledge_budget5,

       b.pledge_budget6,

       b.pledge_budget7,

       b.pledge_budget8,

       b.pledge_budget9,

       b.pledge_budget10,

       b.pledge_budget11,

       b.pledge_budget12,

       x.aa,

       v.dd,

       v.ee,

       v.ff,

       i.gg,

       i.hh,

       i.ii,

       u.jj,

       y.mm,

       y.nn,

       y.oo,

       y.pp,

       l.plan_collection_id,

       l.cost_total,

       l.cost_12,

       l.cost_25,

       l.approve_total,

       l.approve_12,

       l.approve_25,

       l.accumulative_no,

       l.property_plan,

       l.approve,

       l.remark,

       l.month_steel_pay,

       l.month_strategy_pay,

       p.project_name,

       l.plan_collection_status,

       w1,

       ac.dfk,

       tt.manual_pay_num,

       ttt.sf_money,

       x2.sf_dfk,

       sf.sfmoney,

       y2.qq,

       p.budget_order,

       uu1.yfdikuan,

       k1.lastMonthDfk,

       p.is_home,

       p.actualpay1508,

       p.pledgeactualplan1508

  from cont_project_code p

  leftjoin project_budget b

    on p.project_cd = b.project_cd

   and b.year = '2016'

  leftjoin budget_month_plan_collection l

    on l.project_cd = p.project_cd

   and l.year = '2016'

   and l.month = '6'

   and l.is_marketing isnull

  leftjoin (select p.project_cd as projectcd, sum(a.sf_money) as aa

               from cont_actualpay a

               leftjoin cont_ledger l

                 on l.cont_ledger_id = a.cont_ledger_id

               leftjoin cont_project_code p

                 on p.project_cd = l.project_cd

              where l.enable_flg = 1

                and a.sp_date < to_date('2016-01-01', 'yyyy-mm-dd')

                andnvl(l.cont_type_cd2, 0) <> 9

                andnvl(l.tex_cont_flg, 0) <> 1

                andnvl(l.is_finance, 0) <> 1

              groupby p.project_cd) x

    on x.projectcd = p.project_cd

  leftjoin (select p.project_cd as projectcd,

                    sum(d.actual_loc_amt) as dd,

                    sum(d.actual_loc_utilities_amt) as ee,

                    sum(d.actual_loc_other_amt) as ff

               from cont_pay_sum_detail d

               leftjoin cont_pay_sum s

            &

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值