วันอังคารที่ 5 พฤษภาคม พ.ศ. 2558

แก้ปัญหา ORA-31634: job already exists;ORA-31664: unable to construct unique job name when defaulted

ปัญหาของ Errors:
ปัญหานี้เกิดจากที่เราไม่ได้ใส่ JOB_NAME parameter ให้ DataPump Job และมันอาจจะมีชื่อ job นี้อยู่แล้วใน Database หรือเพราะเรารันหลาย jobs ในเวลาเดียวกัน (มากกว่า 99 jobs) และ DataPump ไม่สามารถสร้าง job ขึ้นมาใหม่ได้

วิธีแก้:
เราต้องเคลียร์ DataPump Job ออกด้วยการลบ Master tables ของมันดังนี้
1.ตรวจสอบ DataPump Job ที่อยู่ใน Database และมี status เป็น NOT RUNNING
SELECT owner_name, job_name, operation, job_mode, 
   state, attached_sessions 
   FROM dba_datapump_jobs 
   where owner_name=UPPER('&SCHEMA') and state='NOT RUNNING'
ORDER BY 1,2;

2.ตรวจสอบ Master tables ที่เกี่ยวข้อง
SELECT o.status, o.object_id, o.object_type, 
          o.owner||'.'||object_name "OWNER.OBJECT",o.created,j.state 
     FROM dba_objects o, dba_datapump_jobs j 
    WHERE o.owner=j.owner_name AND o.object_name=j.job_name 
   and o.owner=UPPER('&SCHEMA') and j.state='NOT RUNNING' ORDER BY 4,2;

3.Generate DROP TABLE จาก script ในข้อ 2
Drop table <tablename>;



ขอขอบคุณ Query statement จาก http://oracledba-duniya.blogspot.com/2013/05/resolving-ora-31634-job-already.html

ไม่มีความคิดเห็น:

แสดงความคิดเห็น