日期:2014-05-17  浏览次数:20804 次

临时表空间问题
[code=SQL][/code]
SELECT distinct pa.person_id person_id --编号
  ,past.user_status p_status --状态  
  ,jbt.name job_name --职务
  ,hr_general.decode_position_latest_name(pa.position_id) position_name --职位
  ,gdt.name grade_name --等级
  ,otl.name orgnization_name --组织
  ,loctl.location_code p_location --地点
  ,papf.full_name supervisor_name --主管
  ,pa.probation_period p_period --试用期限
  ,hr_general.decode_lookup('QUALIFYING_UNITS', pa.probation_unit) probation_unit_meaning --单位
  ,pa.date_probation_end d_date_probation_end --试用期结束
  ,pa.normal_hours normal_hours --工作实数
  ,hr_general.decode_lookup('FREQUENCY', pa.frequency) frequency_meaning --频率
  ,pa.effective_start_date p_start_date --起始时间
  ,pa.effective_end_date p_end_date --终止时间
  ,pa.manager_flag manager_flag --经理
  ,pa.internal_address_line internal_address --内部地址
  ,ppp.org_payment_method_name --付款方法
  FROM per_all_people_f papf
  ,per_jobs_tl jbt
  ,per_pay_bases pb
  ,per_all_assignments_f pa
  ,per_grades_tl gdt
  ,hr_locations_all_tl loctl
  ,pay_pre_payments_v4 ppp
  ,hr_all_organization_units_tl otl
  ,per_assignment_status_types_tl past
  WHERE papf.person_id(+) = pa.person_id
  AND pa.assignment_id(+) = ppp.assignment_id
  AND jbt.job_id(+) = pa.job_id
  AND pb.business_group_id = pa.business_group_id
  AND papf.business_group_id = pa.business_group_id
  AND pb.business_group_id = papf.business_group_id
  AND gdt.grade_id = pa.grade_id
  AND loctl.location_id = pa.location_id
  AND ppp.payroll_id = pa.payroll_id
  AND otl.organization_id = pa.organization_id
  AND past.assignment_status_type_id = pa.assignment_status_type_id;

我在运行这段sql时报错,怎么能解决啊?我找了好久,就是在不加ppp这张表时不报错,报的错是
ora—01652:无法通过 128(在表空间temp1中)扩展temp段。

在线等啊,大神们
 

------解决方案--------------------
distinct 内存排序,内存不够使用temp 表空间,temp表空间沾满之后不能自动扩展导致sql报错。
这篇文章写得不错可以参考一下:
http://wenku.baidu.com/view/f7d18d8702d276a200292eed.html

解决方法:
1、根本方法当然是调优你的sql
2、扩大temp表空间,当然治标不治本,随着表数据量的增大还会出现类似问题。