اجرای exp/expdp در محیط data guard

برای تهیه دامپ در محیط data guard، می توان از ابزار Exp بصورت مستقیم و از ابزار Expdp به صورت غیرمستقیم(با کمک database link) استفاده کرد همچنین با تبدیل data guard به snapshot standby، هم می توان مجددا از ابزار Expdp به صورت مستقیم بهره گرفت.

در ادامه به بررسی این سه روش خواهیم پرداخت.

  • Exp

در دستور زیر، با کمک ابزار exp در محیط data guard، از جدول test_us دامپ گرفته می شود. این کار بدون هیچ تغییر خاصی، در این محیط قابل انجام است:

exp usef/a file=’/u01/oracle/e.dmp’ tables=test_us

Export: Release 12.2.0.1.0 – Production on Wed Feb 21 10:39:39 2018

. . exporting table                        TEST_US         14 rows exported

EXP-00091: Exporting questionable statistics.

Export terminated successfully with warnings.

  • EXPDP و DBLINK

همانطور که در ابتدای متن اورده شد، تهیه دامپ مستقیم برای Expdp امکان پذیر نمی باشد مگر انکه استندبای، در حالت snapshot standby قرار داشته باشد(این امکان ناپذیری، به عدم قابلیت ساخت Master table در حالتread-only  برمی گردد). با اجرای expdp در این محیط، این دستور با خطای زیر، متوقف خواهد شد:

expdp usef/abc directory=dr  dumpfile=test_dg.dmp tables=test_us

ORA-31626: job does not exist

ORA-31633: unable to create master table “USEF.SYS_EXPORT_TABLE_05”

ORA-06512: at “SYS.DBMS_SYS_ERROR”, line 95

ORA-06512: at “SYS.KUPV$FT”, line 1038

ORA-16000: database open for read-only access

برای حل این مسئله، می توان روش دیگری را برگزید، در این روش، ابتدا باید به بانک دیگری متصل شد و با ایجاد dblink، ارتباطی را بین این بانک دوم با data guard برقرار کرد و سپس با کمک این dblink، از اطلاعات موجود در data guard، دامپی را تهیه کرد.

مثال زیر ببینید.

در این مثال، ابتدا در بانک دوم به عبارتی دیگر، بانکی که قرار است Expdp بر روی ان اجرا شود، دایرکتوری ای را ایجاد می کنیم:

SQL> create directory dr as ‘/oracle’;

Directory created.

پس از ایجاد دایرکتوری، database linkای را در همین محیط برای اتصال به data guard می سازیم:

SQL>  create public database link us_dg connect to usef identified by abc using ‘tns_dg’;

Database link created.

عبارت tns_dg در دستور ساخت dblink، به نام tnsای اشاره دارد که در فایل tnsnames.ora تعریف شده است:

tns_dg =

  (DESCRIPTION = (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.4.56.4)(PORT = 1521)))

    (CONNECT_DATA =

      (SID =dg)

      (SERVER = DEDICATED) ))

در نهایت دستور Expdp را اجرا می کنیم:

expdp usef/a@pdb1 directory=dr network_link=us_dg dumpfile=test_dg.dmp tables=test_us

Export: Release 12.2.0.1.0 – Production on Wed Feb 21 10:26:00 2018

. . exported “USEF”.”TEST_US”                            31.43 KB      14 rows

Master table “USEF”.”SYS_EXPORT_TABLE_01″ successfully loaded/unloaded

Job “USEF”.”SYS_EXPORT_TABLE_01″ successfully completed at Wed Feb 21 10:26:28 2018 elapsed 0 00:00:27

همانطور که می بینید، این دستور بدون خطا، اجرا شد. البته استفاده از این روش، معایبی چون عدم پشتیبانی از large objectها و نیز زمانبر بودن نسبی عملیات را در پی خواهد داشت.

 

  • EXPDP و SNAPSHOT STANDBY

همانطور که در ابتدای متن هم عنوان شد، در حالت snapshot standby هم می توان از دستور expdp بهره گرفت. در ادامه ضمن تبدیل data guard به snapshot standby، از کاربر usef دامپی را تهیه خواهد شد.

برای این کار، باید ابتدا استندبای را از حالت ریکاور خارج کرد:

SQL> recover managed standby database cancel;

Media recovery complete.

سپس با اجرای دستور زیر، standby را به حالت snapshot standby منتقل نمود:

SQL> alter database convert to snapshot standby;

Database altered.

در نهایت، بانک را در وضیعت open قرار داد:

SQL> alter database open;

Database altered.

در این مرحله امکان تهیه دامپ از standby امکان پذیر خواهد بود:

expdp \’sys/sy AS SYSDBA\’ directory=dr dumpfile=dump.dmp schemas=usef

Export: Release 11.2.0.4.0 – Production on Sun Apr 15 17:44:47 2018

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

Total estimation using BLOCKS method: 128 KB

Processing object type SCHEMA_EXPORT/TABLE/TABLE

. . exported “USEF”.”TBL97″                              18.78 KB       5 rows

. . exported “USEF”.”TBL_USEF”                           18.79 KB       5 rows

Master table “SYS”.”SYS_EXPORT_SCHEMA_01″ successfully loaded/unloaded

 

بعد از اجرای موفق این دستور، استندبای را به حالت اول بر می گردانیم:

SQL> startup mount force;

Database mounted.

SQL> alter database convert to physical standby;

Database altered.

SQL> alter database recover managed standby database disconnect from session;

Database altered.

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

نشانی ایمیل شما منتشر نخواهد شد.