آشنایی با Data Pump

اوراکل با ارائه نسخه 10g، تکنولوژی قدرتمندی به نام Data Pump را ارائه کرد با استفاده از این تکنولوژی می توان حجم زیادی از اطلاعات را از دیتابیس استخراج کرد یا از یک بانک به بانک دیگر منتقل نمود.

Data Pump از نظر عملکرد همانند ابزارهای exp/imp قدیمی است ، ولی از نظر روش انجام کار، متفاوت است. exp/imp سنتی مبتنی بر کلاینت هستند در حالی که Data Pump کاملا مبتنی بر سرور پیاده سازی شده است.

Data Pump قابلیتهای فراوان تری نسبت به ابزارهای exp/imp سنتی دارد که تعدادی از آنها را در این قسمت برمی شماریم:

1.بهبود سرعت export/import تا چندین برابر

2.اجرای ابزار به صورت server side و عدم وابستگی به کلاینت(که باعث مدیریت و کارایی بهتر خواهد شد)

3.امکان تغییر تنظیمات در حین اجرای عملیات

4.امکان اجرای عملیات export یا import اطلاعات به صورت parallel processing

5.امکان اجرای مجدد و ادامه عملیات در صورت توقف

6.اجرای عملیات از طریق network

و …

تکنولوژی Data Pump برای انجام عملیات استخراج و بارگذاری اطلاعات از دو پکیج زیر استفاده می کند:

1.DBMS_DATAPUMP : دارای پروسیجرهایی است برای استخراج و بارگذاری محتوای جداول که به آن data pump API نیز گفته می شود.

2.DBMS_METADATA : دارای پروسیجرهایی است برای استخراج و بارگذاری ساختار جداول و متاداده موجود در data dictionary که به آن metadata API نیز گفته می شود.

با توجه به اینکه استفاده از این پکیج ها و پروسیجرها با پیچیدگی هایی همراه است، در کنار data pump دو ابزار با نامهای (expdp (export data pump و (impdp (import data pump ارائه شده است که به ترتیب برای استخراج و بارگذاری داده ها مورد استفاده قرار می گیرند و بصورت command line به کار گیری می شوند.

البته این ابزارها هم برای انجام استخراج و بارگذاری اطلاعات از پکیج های DBMS_DATAPUMP و DBMS_METADATA استفاده می کنند ولی استفاده از آنها به مراتب آسانتر از بکارگیری مستقیم پکیج ها می باشد.

هنگام استفاده از data pump چندین پروسس (مانند master, worker, shadow, …) ایجاد و شروع به کار می کنند. پروسس master اولین و مهمترین پروسس می باشد که با ایجاد یک job عملیات export/import را شروع و کل فرایند را کنترل می کند.

نکته : در طول عملیات export/import ، با ارجاع به نام job می توان آنرا کنترل نمود (مانند توقف عملیات، اجرای مجدد، اضافه نمودن فایل جدید و …)

بطور پیشفرض برای هر کدام از این job ها یک نام به شکل sys_<job type>_<mode>_nn در نظر گرفته می شود که

sys_<job type>_<mode>_nn

job type : نوع عملیات(export/import/sqlfile)

mode: تعیین حالت عملیات(full , table , schema ,…) 

nn: شمارنده ای برای تعیین تعداد job هاست که از 01 شروع می شود.

برای مثال، نام دومین job import در حالت اسکیما بدین شکل می باشد:

‘sys_import_schema_02’ .

مثال :

~]$  expdp naser  tables=cid.tbl_pub_dossier  dumpfile=test_1.dmp  directory=dump

.  .  .

FLASHBACK automatically enabled to preserve database integrity.

Starting “NASER”.”SYS_EXPORT_TABLE_03″:  naser/******** tables=cid.tbl_pub_dossier dumpfile=test_1.dmp directory=dump

Estimate in progress using BLOCKS method…

Processing object type TABLE_EXPORT/TABLE/TABLE_DATA

Total estimation using BLOCKS method: 2.835 GB

.  .  .

نکته: برای بدست آوردن نام و وضعیت job در حال اجرا ، می توان از ویو های dba_datapump_jobs  و یا dba_datapump_sessions استفاده نمود.

پروسس master یک جدول همنام با job ایحاد شده می سازد که به اصطلاح به آن جدول maser گفته می شود و در آن اطلاعاتی نظیر نام آبجکت ها ، نوع ، مالک، tablespace و اندازه ی آبجکت های در حال کار ، ترتیب آبجکتها برای استخراج و… ثبت شده است و پروسس master از این جدول برای شناسایی آبجکتهای مورد نظر و استخراج آنها استفاده می کند.

نام جدول master را می توان از ویوی dba_segments پیدا کرد:

SQL> select * from dba_segments s where s.segment_name=’JOB_NAME’;  

نگاهی به اطلاعات جدول master :

SQL> select ex.object_type, ex.object_name, ex.object_schema, ex.object_tablespace,  

ex.size_estimate, ex.object_row from naser.SYS_EXPORT_TABLE_02 ex

where ex.original_object_schema is not null;

در صورتی که عملیات export/import موقتا متوقف شود، در اجرای مجدد job ، پروسس master با رجوع به این جدول ادامه کار را از سر می گیرد.

محتویات این جدول پس از اتمام عملیات استخراج ، در فایل دامپ نوشته شده و خود جدول حذف می شود. در هنگام بارگذاری داده ها در بانک مقصد ، ابتدا این اطلاعات توسط پروسس master از داخل فایل دامپ خوانده شده و براساس آن، آبجکتها بارگذاری می شوند.

همانطورکه گفته شد data pump یک فرایند سمت سرور (server side) است، به همین دلیل از یک آبجکت directory برای تعیین مسیر فایل دامپ و ذخیره آن برروی بانک مبدا استفاده می کند. قبل از اجرای دستور export/import ، می توان به شکل زیر یک directory در بانک ایجاد کرد:

SQL> create  directory  DIR_NAME  as  ‘/path/’;

مثال:

 SQL> create  directory  mydump_dir  as  ‘/u01/oracle/dir_dump’;

Directory های ایجاد شده ، در ویوی all_directories قابل رویت هستند.

Data pump بصورت پیشفرض از یک دایرکتوری  بنام  data_pump_dir  استفاده می کند که مسیر تنظیم شده برای آن “ $ORACLE_HOME/db_name/dpdump/ “ است و در ویوی all_directories هم قابل مشاهده است:

SQL> select * from all_directories;

نکته : توجه داشته باشید که مسیر و دایرکتوری که در دستور create  directory  تعیین می شود، باید قبلا ایجاد و دسترسی کاربر oracle به آن داده شده باشد.

با استفاده از دایرکتوری ایجاد شده می توان محل ایجاد و ذخیره فایل دامپ را مشخص نمود. مانند مثال زیر:

~]$ expdp  naser  directory=mydump_dir  dumpfile=test.dmp  tables=tbl_naser

 

ابزارهای EXPDP و IMPDP

تکنولوژی data pump برای انجام عملیات استخراج و بارگذاری اطلاعات از دو پکیج DBMS_DATAPUMP  و DBMS_METADATA استفاده می کند.

با توجه به آنکه استفاده از این پکیج ها و پروسیجرهای آنها، با پیچیدگی ها و دشواریهای همراه است، همراه با data pump دو ابزار با نامهای (expdp (export data pump و (impdp (import data pump ارائه شده است که به ترتیب برای استخراج و بارگذاری داده ها، بصورت command line مورد استفاده قرار می گیرند.

البته این دو ابزار هم برای انجام استخراج و بارگذاری اطلاعات از پکیج های DBMS_DATAPUMP و DBMS_METADATA استفاده می کنند با این تفاوت که استفاده از آنها به مراتب آسانتر از بکارگیری مستقیم پکیج ها می باشد.

ساختار کلی استفاده از این ابزارها بدین ترتیب است :

expdp [username/passwd][parameter1=value1][parameter2=value2]…

impdp [username/passwd][parameter1=value1][parameter2=value2]…

دستور expdp را بدون هیچ پارامتری نیز می توان استفاده کرد که در این حالت پس از دریافت نام کاربر، از اسکیمای جاری، در مسیر ORACLE_HOME/db_name/dpdump$ دامپی با نام expdat.dmp تهیه می شود.

اما اگر دستور impdp را بدون پارامتری اجرا کنیم، پس از گرفتن نام کاربر، اگر در مسیر پیشفرض (ORACLE_HOME/db_name/dpdump$) فایلی بنام expdat.dmp وجود نداشته باشد، پیغام خطا صادر می شود.

 

دستورات expdp/impdp دارای پارامترهای متعددی هستند که به طور کلی به دو دسته قابل تقسیم اند:

پارامترهای اولیه: این پارامترها در زمان اجرای دستور تنظیم می شوند برای راحتی کار، می توان تمامی پارامترها را در یک فایل متنی قرار داد و با پارامتر parfile آنرا صدا زد.

پارامترها یا دستورات تعاملی : این پارامترها، که معمولا بصورت دستور استفاده می شوند، جهت مانیتور ، بررسی و کنترل عملیات ، در زمان اجرای export/import قابل استفاده هستند(در خط فرمان export> یا import> ).

برای رفتن به حالت تعاملی، می توان به دو صورت عمل کرد:

***در حین انجام عملیات، کلید Ctrl + c را فشار داده  که دراین حالت ، نوشتن log برروی نمایشگر متوقف و خط فرمان export/import> نمایش داده می شود و سیستم آماده دریافت فرمان جدید است.

~]$ expdp  naser tables=cid.tbl_dossier dumpfile=test3.dmp directory=dump 

.  .  .

Processing object type TABLE_EXPORT/TABLE/TABLE_DATA

Processing object type TABLE_EXPORT/TABLE/PROCACT_INSTANCE

Processing object type TABLE_EXPORT/TABLE/TABLE

Processing object type TABLE_EXPORT/TABLE/GRANT/OWNER_GRANT/OBJECT_GRANT

Processing object type TABLE_EXPORT/TABLE/COMMENT

^C

Export>

***در خط فرمان سیستم عامل ، دستور expdp/impdp با پارامتر attach اجرا شود که مقدار پارامتر attach می تواند نام job باشد یا بدون مقدار استفاده شود که در این حالت آخرین job در حال اجرا را مشخص می کند.

~]$  expdp  naser/naser  attach=SYS_EXPORT_TABLE_03

Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 – 64bit Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

Job: SYS_EXPORT_TABLE_03

Owner: NASER       

.  .  .                 

Export>

=============================================================

~]$  impdp  ali/123  attach=SYS_IMPORT_SCHEMA_02

Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 – 64bit Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

Job: SYS_IMPORT_SCHEMA_02

Owner: ALI       

.  .  .                 

Import>

آدرس کانال تلگرام: ORACLEDB@

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *