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

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

۳ مطلب در تیر ۱۳۹۵ ثبت شده است

پارامتر LOGTIME در DataPump 12C

در نسخه 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

 

 

خطای 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)

تغییر ماکزیمم سایز برخی از data typeها در اوراکل 12C

تا قبل از اوراکل 12C ، ماکزیمم سایزی که برای data typeهای VARCHAR2, NVARCHAR2 ,RAW میشد در نظر گرفت به صورت زیر بود:


 VARCHAR2 : 4000 bytes -   

NVARCHAR2 : 4000 bytes -   

RAW : 2000 bytes -   


از اوراکل 12C ، ماکزیمم مقادیر این پارامترها به صورت زیر تغییر پیدا کرده است :


   - VARCHAR2 : 32767 bytes

   - NVARCHAR2 : 32767 bytes

   - RAW : 32767 bytes


برای اینکه بتوانید از مقادیر جدید این پارامترها در اوراکل 12C  استفاده کنید باید مقدار پارامتر  MAX_STRING_SIZE  را از STANDARD  به  EXTENDED  تغییر دهید .


   CONN / AS SYSDBA

   SHUTDOWN IMMEDIATE;

   STARTUP UPGRADE;

   ALTER SYSTEM SET max_string_size=extended SCOPE=SPFILE;

   @$ORACLE_HOME/rdbms/admin/utl32k.sql

   SHUTDOWN IMMEDIATE;

   ;STARTUP   

   

نکته 1)  شما نمیتوانید مجددا مقدار پارامتر MAX_STRING_SIZE را از EXTENDED  به STANDARD  تغییر دهید.

نکته 2)  در صورت تغییر سایز DataTypeها نمی توانید مجددا سایز رو به مقدار قبلی تغییر بدهید.