java.sql.SQLException: ORA-01652: 无法在表空间 TEMP 中将临时段扩展 128(即使在扩展之后)

我们的数据加载在运行数小时后失败.DBA 将临时 tablespace 增加了三次.它仍然失败.什么可能是错误的原因.块大小或其他任何事情重要吗?

Our Dataload got failed after running many hours. DBA increased temp tablespace thrice. Still it is failing. What could be the reason of error. Does block size or anything else matters?

尝试时出错为这个加载规则摄取数据CRM_ECC_UTIL_PVT.GET_ECC_DATA_LOAD_INFO使用数据集 crm-expenditus for job 125,840

There is an error while trying to ingest data for this load rule CRM_ECC_UTIL_PVT.GET_ECC_DATA_LOAD_INFO with dataset crm-expenditures for job 125,840

**java.sql.SQLException: ORA-01652: unable to extend temp segment by 128 in
tablespace TEMP**

我已经按照一些人的建议将 sql 放入了.

I have put the sql as some people suggested me to do.

SELECT
    *
FROM
    (
        SELECT  /*+ leading(ppp) index(pp PA_PROJECTS_U1) */    'PROJ_EXP-'
            || pp.project_id
            || '-'
            || nvl(to_char(pt.task_id), 'NO_TASK')
            || '-'
            || to_char(pei.expenditure_item_id)                            AS ecc_spec_id,
            greatest(pp.last_update_date, pt.last_update_date, pei.last_update_date, pet.last_update_date, pe.last_update_date,
                     nvl(pap.last_update_date, pp.last_update_date),
                     nvl(pj.last_update_date, pp.last_update_date),
                     nvl(ap1.last_update_date, pp.last_update_date))        AS ecc_last_update_date,
            pp.project_id                                                      AS project_id,
            pp.segment1                                                        AS project_number,
            pp.org_id                                                          AS org_id,
            pt.task_id                                                         AS task_id,
            pt.task_number                                                     AS task_number,
            pei.expenditure_item_id                                            AS item_id,
            pei.expenditure_type                                               AS exp_type,
            pet.expenditure_category                                           AS exp_category,
            pet.revenue_category_code                                          AS exp_revenue_category_code,
            hou1.name                                                          AS exp_org,
            pei.expenditure_item_date                                          AS exp_item_date,
            pei.quantity                                                       AS exp_quantity,
            flv.meaning                                                        AS uom,
            pei.projfunc_currency_code                                         AS exp_projfunc_currency_code,
            nvl(pei.burden_cost, 0)                                      AS exp_burdened_cost,
            pei.accrued_revenue                                                AS exp_accrued_revenue,
            pei.bill_amount                                                    AS exp_bill_amount,
            pei.project_currency_code                                          AS exp_project_currency_code,
            nvl(pei.project_burdened_cost, 0)                            AS exp_project_burdened_cost,
            pei.project_raw_revenue                                            AS exp_project_raw_revenue,
            pei.project_bill_amount                                            AS exp_project_bill_amount,
            pei.bill_trans_currency_code                                       AS exp_bill_trans_currency_code,
            pei.bill_trans_bill_amount                                         AS exp_bill_trans_bill_amount,
            pei.non_labor_resource                                             AS exp_non_labor_resc,
            hou2.name                                                          AS exp_non_labor_org,
            pe.incurred_by_person_id                                           AS exp_incurred_by_person_id,
            pap.full_name                                                      AS exp_employee_name,
            pap.employee_number                                                AS exp_employee_number,
            pei.job_id                                                         AS exp_person_job_id,
            pj.name                                                            AS exp_person_job_name,
            pe.vendor_id                                                       AS supplier_id,
            ap1.vendor_name                                                    AS supplier_name,
            hou1.language                                                      AS language
        FROM
            pa_projects_all               pp,
            pa_tasks                      pt,
            pa_expenditure_items_all      pei,
            pa_expenditure_types          pet,
            pa_expenditures_all           pe,
            per_all_people_f              pap,
            per_jobs                      pj,
            ap_suppliers                  ap1,
            hr_all_organization_units_tl  hou1,
            hr_all_organization_units_tl  hou2,
            fnd_lookup_values             flv,
            (
                SELECT DISTINCT
                    project_id
                FROM
                    pjm_project_parameters
            )                             ppp
        WHERE
                pp.start_date >= nvl(TO_DATE('01-JAN-18', 'RRRR/MM/DD HH24:MI:SS'), pp.start_date)
            AND pp.project_type <> 'AWARD_PROJECT'
            AND pp.template_flag = 'N'
            AND pp.project_id = ppp.project_id
            AND pt.project_id = pp.project_id
            AND pei.project_id = pt.project_id
            AND pei.task_id = pt.task_id
            AND pet.expenditure_type = pei.expenditure_type
            AND pe.expenditure_id = pei.expenditure_id
            AND pe.org_id = pei.org_id
            AND pap.person_id (+) = pe.incurred_by_person_id
            AND trunc(sysdate) BETWEEN nvl(pap.effective_start_date, sysdate - 1) AND nvl(pap.effective_end_date, sysdate + 1)
            AND pj.job_id (+) = pei.job_id
            AND ap1.vendor_id (+) = pe.vendor_id
            AND hou1.organization_id = nvl(pei.override_to_organization_id, pe.incurred_by_organization_id)
            AND hou2.organization_id (+) = pei.organization_id
            AND ( hou2.language IS NULL
                  OR hou2.language = hou1.language )
            AND flv.view_application_id = 275
            AND flv.security_group_id = 0
            AND flv.lookup_type = 'UNIT'
            AND flv.lookup_code = pet.unit_of_measure
            AND flv.language = hou1.language
            AND hou1.language IN ( 'US' )
    ) PIVOT (
        MAX ( exp_org )
    AS exp_org, MAX ( uom ) AS uom, MAX ( exp_non_labor_org ) AS exp_non_labor_org
        FOR language
        IN ( 'US' "US" )
    )

以下是跟踪输出,如果有帮助的话.

Below is trace output if it helps in some way.

call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        1      2.87       2.87          0          0          6           0
Execute      1      0.00       0.00          0          0          0           0
Fetch        1   3640.57    6131.92    9944538    9990033        260           0
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total        3   3643.44    6134.79    9944538    9990033        266           0

Misses in library cache during parse: 1
Optimizer mode: ALL_ROWS
Parsing user id: 173  
Number of plan statistics captured: 1

Rows (1st) Rows (avg) Rows (max)  Row Source Operation
---------- ---------- ----------  ---------------------------------------------------
         0          0          0  HASH GROUP BY PIVOT (cr=0 pr=0 pw=0 time=211 us starts=1 cost=2368710 size=159986583 card=301293)
         0          0          0   HASH JOIN RIGHT OUTER (cr=0 pr=0 pw=0 time=24 us starts=1 cost=2340094 size=159986583 card=301293)
     20334      20334      20334    TABLE ACCESS FULL AP_SUPPLIERS (cr=1027 pr=0 pw=0 time=8264 us starts=1 cost=168 size=752358 card=20334)
         0          0          0    HASH JOIN RIGHT OUTER (cr=0 pr=0 pw=0 time=26 us starts=1 cost=2339923 size=148838742 card=301293)
      7569       7569       7569     TABLE ACCESS FULL PER_JOBS (cr=183 pr=181 pw=0 time=53049 us starts=1 cost=31 size=264915 card=7569)
         0          0          0     FILTER  (cr=0 pr=0 pw=0 time=25 us starts=1)
         0          0          0      NESTED LOOPS OUTER (cr=0 pr=0 pw=0 time=23 us starts=1 cost=2339890 size=138293487 card=301293)
         0          0          0       HASH JOIN  (cr=0 pr=0 pw=0 time=19 us starts=1 cost=2339889 size=131062455 card=301293)
      3488       3488       3488        TABLE ACCESS FULL HR_ALL_ORGANIZATION_UNITS_TL (cr=30 pr=0 pw=0 time=1511 us starts=1 cost=6 size=83688 card=3487)
         0          0          0        FILTER  (cr=0 pr=0 pw=0 time=20 us starts=1)
         0          0          0         HASH JOIN RIGHT OUTER (cr=0 pr=0 pw=0 time=20 us starts=1 cost=2339880 size=123831423 card=301293)
    482564     482564     482564          TABLE ACCESS FULL PER_ALL_PEOPLE_F (cr=24850 pr=0 pw=0 time=496147 us starts=1 cost=3887 size=26058456 card=482564)
         0          0          0          HASH JOIN  (cr=0 pr=0 pw=0 time=83 us starts=1 cost=2335031 size=31579863 card=88459)
 964899956  964899956  964899956           HASH JOIN  (cr=9963945 pr=9944251 pw=0 time=1257291836 us starts=1 cost=2272141 size=57476164 card=173644)
       440        440        440            TABLE ACCESS BY INDEX ROWID BATCHED FND_LOOKUP_VALUES (cr=345 pr=11 pw=0 time=8731 us starts=1 cost=4 size=60 card=1)
       440        440        440             INDEX RANGE SCAN FND_LOOKUP_VALUES_U1 (cr=8 pr=5 pw=0 time=4739 us starts=1 cost=3 size=0 card=1)(object id 10051183)
 964899956  964899956  964899956            HASH JOIN  (cr=9963600 pr=9944240 pw=0 time=1017124322 us starts=1 cost=2272127 size=307417251 card=1134381)
      1095       1095       1095             TABLE ACCESS FULL PA_EXPENDITURE_TYPES (cr=30 pr=28 pw=0 time=10207 us starts=1 cost=6 size=58035 card=1095)
 964899956  964899956  964899956             HASH JOIN  (cr=9963569 pr=9944212 pw=0 time=846695062 us starts=1 cost=2272112 size=247295058 card=1134381)
   1358758    1358758    1358758              HASH JOIN  (cr=19092 pr=0 pw=0 time=469629 us starts=1 cost=7758 size=113438100 card=1134381)
     19048      19048      19048               HASH JOIN  (cr=4302 pr=0 pw=0 time=55357 us starts=1 cost=5230 size=1806098 card=25438)
     31692      31692      31692                TABLE ACCESS FULL PJM_PROJECT_PARAMETERS (cr=499 pr=0 pw=0 time=5159 us starts=1 cost=78 size=158460 card=31692)
      5436       5436       5436                TABLE ACCESS BY INDEX ROWID BATCHED PA_PROJECTS_ALL (cr=3803 pr=0 pw=0 time=33748 us starts=1 cost=5152 size=147972 card=2242)
      7889       7889       7889                 INDEX FULL SCAN PA_PROJECTS_U1 (cr=43 pr=0 pw=0 time=2952 us starts=1 cost=43 size=0 card=7889)(object id 10074361)
    351540     351540     351540               TABLE ACCESS FULL PA_TASKS (cr=14789 pr=0 pw=0 time=139478 us starts=1 cost=2272 size=10194660 card=351540)
 130267813  130267813  130267813              TABLE ACCESS FULL PA_EXPENDITURE_ITEMS_ALL (cr=9944477 pr=9944212 pw=0 time=213772932 us starts=1 cost=1945518 size=19299868662 card=163558209)
         0          0          0           TABLE ACCESS FULL PA_EXPENDITURES_ALL (cr=0 pr=0 pw=0 time=0 us starts=0 cost=50307 size=526480734 card=20249259)
         0          0          0       TABLE ACCESS BY INDEX ROWID BATCHED HR_ALL_ORGANIZATION_UNITS_TL (cr=0 pr=0 pw=0 time=0 us starts=0 cost=1 size=24 card=1)
         0          0          0        INDEX RANGE SCAN HR_ALL_ORGANIZATION_UNTS_TL_PK (cr=0 pr=0 pw=0 time=0 us starts=0 cost=1 size=0 card=1)(object id 10049431)


Elapsed times include waiting on following events:
  Event waited on                             Times   Max. Wait  Total Waited
  ----------------------------------------   Waited  ----------  ------------
  SQL*Net message to client                       1        0.00          0.00
  db file sequential read                       125        0.00          0.09
  db file scattered read                         22        0.00          0.05
  db file parallel read                           1        0.00          0.00
  PGA memory operation                          121        0.00          0.01
  direct path read                             2737        0.02          9.60
  direct path write temp                    1230152        2.10       2532.69
  Disk file operations I/O                       45        0.00          0.01
  latch free                                     10        0.00          0.00
  log file sync: SCN ordering                     1        0.00          0.00
  latch: enqueue hash chains                      1        0.00          0.00
  SQL*Net break/reset to client                   2        0.00          0.00
  SQL*Net message from client                     1        0.20          0.20
********************************************************************************

SQL ID: 2bpdh1w6xph3h Plan Hash: 3884771224

推荐答案

所涉及的 SQL 正在构建一个中间结果集 - 很可能是因为连接或排序.您的 TEMP 表空间中没有足够的空间来容纳它.您将需要向表空间添加一个或多个数据文件(假设您的物理存储空间有足够的空间来这样做),或者使用较小的数据集.或者,您可以寻找修改 SQL 以在可能的情况下删除连接和排序的方法.否则,没有任何解决方法.

The SQL involved is constructing an intermediate result set - most likely because of a join or a sort. There isn't enough space in your TEMP tablespace to hold it. You will either need to add one or more data files to the tablespace (assuming you have enough space on your physical storage to do so), or work with a smaller data set. Alternatively, you could look for ways to modify your SQL to remove joins and sorts where possible. Otherwise, there isn't any workaround.

如果您可以获得所涉及的 SQL 的解释计划,它应该至少为您提供优化器期望需要多少 TEMP 空间的大致估计.

If you can get an explain plan of the SQL involved it should give you at least a ballpark estimate of how much TEMP space the optimizer is expecting to need.

相关文章