دیتابیس اوراکل

دیتابیس اوراکل
طبقه بندی موضوعی

۱ مطلب با کلمه‌ی کلیدی «ORA-31664» ثبت شده است

خطای ORA-31634 هنگام اجرای DataPump job

در دیتابیس اوراکل ، شما ممکن است هنگام اجرای (DataPump job (expdp or impdp  با خطاهای زیر مواجه شوید:


ORA-31634: job already exists

ORA-31664: unable to construct unique job name when defaulted

 

این خطا به دلایل زیر رخ میدهد :

-  در دستور  expdp/impdp از یک JOB_NAME مشخص استفاده نکرده باشید و datapump مجبور شود که از یک نام پیش فرض استفاده کند و آن نام به هر دلیلی از قبل وجود داشته باشد. 

-  یا اینکه چند datapump job را با هم به صورت همزمان اجرا کرده باشید و تعداد آن jobها بیشتر از 99 تا باشد ، در چنین حالتی datapump نمیتواند یک job جدید ایجاد کند.


در چنین حالتی برای رفع این مشکل یا باید از یک JOB_NAME مشخص در دستور expdp/impdp استفاده کنید:

expdp system/system SCHEMA=scott DIRECTORY=data_pump_dir DUMPFILE=exp_scott.dmp JOB_NAME=exp_jo

 

و یا اینکه JOBهای قبلی را که وضعبت آنها NOT RUNNING است و اصطلاحا به آنها orphaned datapump jobs گفته میشود را حذف نمایید، که برای اینکار باید مراحل زیر را طی کنید:

1)       شناسایی datapump jobهای موجود در دیتابیس که وضعیت آنها NOT RUNNING است.

 select owner_name, job_name, operation, job_mode, state,     attached_sessions

  from dba_datapump_jobs

 'where owner_name = '&SCHEMA

    'and state = 'NOT RUNNING

  ;order by 1, 2

بجای &SCHEMA باید نام اسکیمایی که expdp/impdp با آن انجام میشود نوشته شود.

 

2)       شناسایی جداول اصلی مرتبط  با آن jobها

  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='&SCHEMA

    'and j.state='NOT RUNNING

  ;order by 4,2

 

3)       پاک کردن جداولی که در مرحله 2 تولید شده اند. 

;<drop table <tablename

 

n        منابع 


1- http://oracledba-duniya.blogspot.com/2013/05/resolving-ora-31634-job-already.html 

2- Running DataPump Jobs Results In ORA-31634 ORA-31664 (Doc ID 138416)