- ۰ نظر
- ۲۲ دی ۹۶ ، ۱۳:۵۰
- ۱۲۷ نمایش
در نسخه 12CR1 یک پارامتر جدیدی بنام LOGTIME به DataPump اضافه شده است، که باعث میشود پیغام هایی که در طول عملیات export و import می آیند به همراه یک timestamp نمایش داده شوند.
کاربرد :
شما میتوانید با استفاده از این timestamp متوجه شوید که زمان سپری شده بین فازهای مختلف عملیات DataPump چقدر است . چنین اطلاعاتی میتواند در تشخیص مشکلات مربوط به Performance و همچنین تخمین زمان عملیات های مشابه در آینده مفید واقع شود.
مقادیری که میتوان به این پارامتر اختصاص داد به شرح زیر میباشد :
- NONE : در طول عملیات export/import یا در logfile هیچ timestamp نمایش داده نشود ( که به صورت پیش فرض این گزینه فعال میباشد)
- timestamp : STATUS فقط در هنگام اجرای عملیات export/import نمایش داده شود.
- timestamp : LOGFILE فقط در logfile نمایش داده شود.
- ALL : هم در logfile ، هم هنگام اجرای عملیات export/import نمایش داده شود.
مثال :
expdp scott/tiger directory=DATA_PUMP_DIR dumpfile=SCOTT.dmp logfile=SCOTT.log LOGTIME=ALL
قسمتی از خروجی دستور بالا به صورت زیر است :
16-JUL-16 11:18:47.254: Starting "SCOTT"."SYS_EXPORT_SCHEMA_01": scott/******** directory=DATA_PUMP_DIR dumpfile=SCOTT.dmp logfile=SCOTT.log LOGTIME=ALL
16-JUL-16 11:18:48.321: Estimate in progress using BLOCKS method...
16-JUL-16 11:18:53.041: Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA….
n منابع
1-https://docs.oracle.com/database/121/SUTIL/GUID-56B6B4EA-5A2B-45B8-9B41-8966378C2C3D.htm#SUTIL4281
2-https://oracle-base.com/articles/12c/data-pump-enhancements-12cr1
در دیتابیس اوراکل ، شما ممکن است هنگام اجرای (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)