ورود

View Full Version : اوراکل گارد



devil00x
سه شنبه 06 مهر 1389, 07:27 صبح
لطفا اگر کسی در مورد گارد اوراکل اطلاعاتی داره بیان کنه؟
من اصلا چه چیزای لازم دارم جهت راه اندازی گارد؟
گارد اصلا به چه درد می خوره؟

devil00x
سه شنبه 06 مهر 1389, 13:22 عصر
از توجه دوستان واقعا متشکرم.
نمی دونم چرا تالار اوراکل اینقدر بی حال و کم طرفداره؟

devil00x
چهارشنبه 07 مهر 1389, 09:07 صبح
just what is Data Guard?
“An application-transparent high-performance low-impact asymmetrical online reliable Redo or SQL level background standby database transaction exchange utility capable of reporting, switchover and Failover.”
Data Guard helps you protect your Data.
Takes your data and automatically puts it elsewhere
Makes it available for Failover in case of failure.
The other capabilities are pure bonus.
Switchover for Maintenance
Reporting
Off-loading Queries
Backups

babila
پنج شنبه 08 مهر 1389, 18:31 عصر
از دیتا گارد برای ساختن یک نمونه مشابه از دیتابیس بر روی یک سرور دیگر و در مکان جغرافیایی دیگر استفاده می شود. که این کار برای اهداف گوناگون و با روش های گوناگونی پیاده سازی می شود.
یکی از کاربرد های آن داشتن یک دیتابیس سرور STANDBY است تا در صورت بروز مشکل در دیتابیس سرور اصلی به صورت اتوماتیک وارد مدار شود و با اطلاعات بروز شده نقش دیتابیس اصلی را بازی کند.
سرور های STANDBY که با استفاده از DATA GUARD پیاده سازی می شوند در دو مود PHYSICAL و LOGICAL پیاده می شوند که هر یک مزایا و معایب خاص خودش را دارد و کاربرد هر یک جداست.
برای اطلاعات بیشتر می تونید در اینترنت ORACLE DATA GUARD رو سرچ کنید.

devil00x
شنبه 10 مهر 1389, 07:06 صبح
سرور های STANDBY که با استفاده از DATA GUARD پیاده سازی می شوند در دو مود PHYSICAL و LOGICAL پیاده می شوند که هر یک مزایا و معایب خاص خودش را دارد و کاربرد هر یک جداست.


من متوجه این قسمت فیزیکال و لاجیکال نشدم ، میشه بیشتر توضیح بدین.

devil00x
شنبه 10 مهر 1389, 09:34 صبح
من یه مطالعه کوچیک در این مورد داشتم:
این بحث فیزیکال به این صورته که کل داده های که تغییر میکنه روی دیتابیس standby منتقل میشه اما در حالت لاجیکال دستورات sql که روی دیتابیس سرور اصلی اجرا میشه رو روی سرور standby اجرا میکنه!
اگه اشتباه متوجه شدم لطفا راهنمایی کنید؟؟!!!!

devil00x
یک شنبه 11 مهر 1389, 08:35 صبح
--------------------------------------------
babakhshid man emkane type farsi nadarm
--------------------------------------------
man ye soal dige ham daram aya database main va standby mitone SID yeksan dashte bashe ya inke bayad motefavet bashe.

babila
یک شنبه 11 مهر 1389, 20:34 عصر
می توننن به صورت local یکسان باشند ولی موقعی که به صورت Service name تو همدیگه تعریف می شن نباید اسامی یکسانی داشته باشند.

devil00x
سه شنبه 13 مهر 1389, 07:31 صبح
من یکی از سیستم هام که لینوکسی SID برابر orcl و سیستم دیگم که ویندوزیه هر کاری کردم که همون orcl رو براش بزارم خطا می گرفت و مجبور شدم اونو standby بزارم مشکلی پیش نمیاد یا نباید هم نام باشن؟؟؟

devil00x
سه شنبه 13 مهر 1389, 08:31 صبح
کسی می تونه تو راه اندازی گارد کمک کنه ، میشه مرحله مرحله بفرمایید چطور میشه گارد راه انداخت ، یا حداقل نکاتی که استفاده میشه رو بیان کنید..

oracle_dba
سه شنبه 13 مهر 1389, 21:46 عصر
کسی می تونه تو راه اندازی گارد کمک کنه ، میشه مرحله مرحله بفرمایید چطور میشه گارد راه انداخت ، یا حداقل نکاتی که استفاده میشه رو بیان کنید..

سلام
من امروز جلسه آخر کلاس standby رو رفتم . یه دوره فشرده درون سازمانی . ایشاالله اندگی تامل کنید documnet رو آماده می کنم و می فرستم .

devil00x
چهارشنبه 14 مهر 1389, 07:07 صبح
خدا خیرت بده جوون. اگه اینکار و بکنی که واقعا ازت ممنون میشم.
----------------------------------------------------------------------------
استادتون کی بود؟ یا به چه موسسه ای دوره داشتید؟اگه راضی هستید ازشون بفرمایید تا ما هم استفاده کنیم.

oracle_dba
چهارشنبه 14 مهر 1389, 20:28 عصر
خدا خیرت بده جوون. اگه اینکار و بکنی که واقعا ازت ممنون میشم.
----------------------------------------------------------------------------
استادتون کی بود؟ یا به چه موسسه ای دوره داشتید؟اگه راضی هستید ازشون بفرمایید تا ما هم استفاده کنیم.

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

devil00x
دوشنبه 19 مهر 1389, 11:44 صبح
آقا من همچنان منتظر documnet شما هستم ، بی صبرانه!!!

narcis_86
دوشنبه 19 مهر 1389, 13:12 عصر
آقا خواهش مي كنم يه كم سريعتر چون من نياز فوري به اين اطلاعات دارم دارم.

oracle_dba
دوشنبه 19 مهر 1389, 20:12 عصر
آقا خواهش مي كنم يه كم سريعتر چون من نياز فوري به اين اطلاعات دارم دارم.

چشم . دو روزه فقط دارم تایپ می کنم . بالاخره تموم شد
همیم امشب آپلودش می کنم .
ببخشید دیر شد

narcis_86
دوشنبه 19 مهر 1389, 20:49 عصر
خیلی لطف می کنید ممنون می شم اگه امشب آپلود کنید.

oracle_dba
دوشنبه 19 مهر 1389, 20:54 عصر
سلام به همه دوستان و شرمنده که منتظرتون گذاشتم . امیدوارم این مطلب به دردتون بخوره و ارزش انتظار رو داشته باشه .
من با طی این مراحل تونستم دیتابیس standby رو راه بندازم .

...

دوستان عزیز خوشحال میشم من رو از راهنماییتون برای بهتر شدن این مجموعه بی نصیب نگذارید

narcis_86
دوشنبه 19 مهر 1389, 22:01 عصر
مرسی من الان دانلود کردم خیلییییییییییییییییییی ممنمون

devil00x
سه شنبه 20 مهر 1389, 09:44 صبح
دوست عزیز واقعا خوب بود، بازم اگه مقاله هایی از این قبیل داشتی خوشحال میشیم مطالعه کنیم.
ضمنا از وبلاگتم سر زدم جالب بود، سعی کنی مقالات بیشتری توش بزاری مطمئنا بازدیدکننده بیشتری خواهی داشت.
حالا مقالت رو هنوز مطالعه نکردم ، تمام شد حتما نظراتم رو اعلام میکنم.

narcis_86
پنج شنبه 22 مهر 1389, 17:56 عصر
سلام
قسمتی که باید standby controlfile را در مد backup بوجود آوریم error می ده مطمئنید تنظیمات دیگه نیاز نداره

oracle_dba
پنج شنبه 22 مهر 1389, 22:18 عصر
سلام
قسمتی که باید standby controlfile را در مد backup بوجود آوریم error می ده مطمئنید تنظیمات دیگه نیاز نداره

سلام
تونستید hot backup بگیرید ؟
در سمت primary بعد از cold backup و قبل از خروج از مد Backup کنتر فایل مخصوص standby رو می سازید با دیتور زیر :

' Sql > Alter database create standby controlfile as ’/u01/backup/stanctl.ctl

اگه control file در سمت primary موجود باشه و دیتابیس در مد open باشه می سازه در مسیری که دادیم
پیغام خطا رو بگید ببینم می تونم بفهمم از چیه

devil00x
شنبه 24 مهر 1389, 13:23 عصر
حالا یک سوال اینجا پیش میاد ، اگه اوراکل رو به صورت RAC (Real Application Cluster) x نصب شده باشه ، تنظیمات به چه صورت انجام میگیره .
مثلا ما archive log رو روی کدوم نود باید فعال کنیم؟؟؟
کسی چیزی میدونه؟؟؟

narcis_86
دوشنبه 26 مهر 1389, 12:59 عصر
سلام
من تمامي مراحل را انجام دادم ولي در archived_log سمت standby هيچ اطلاعاتي وجود ندارد يعني اطلاعات به اين سمت فرستاده نشده؟ نمي دونيد چرا؟

oracle_dba
دوشنبه 26 مهر 1389, 20:08 عصر
حالا یک سوال اینجا پیش میاد ، اگه اوراکل رو به صورت RAC (Real Application Cluster) x نصب شده باشه ، تنظیمات به چه صورت انجام میگیره .
مثلا ما archive log رو روی کدوم نود باید فعال کنیم؟؟؟
کسی چیزی میدونه؟؟؟


سلام
خیلی عجله دارید ؟ من دارم روی ایجاد و راه اندازی standby روی rac کار می کنم . خوشحال میشم اگه کسی چیزی بدونه به اشتراک بگذاره و منم سعی می کنم کم کم که پیش میرم اینجا بنویسم مراحل رو ولی در آخر حتما document رو خواهم گذاشت .

oracle_dba
دوشنبه 26 مهر 1389, 20:10 عصر
سلام
من تمامي مراحل را انجام دادم ولي در archived_log سمت standby هيچ اطلاعاتي وجود ندارد يعني اطلاعات به اين سمت فرستاده نشده؟ نمي دونيد چرا؟

سلام دوست عزیز
document کامل بود اگه نتیجه نگرفتید یعنی یکی از مراحل رو درست انجام ندادید و دوباره شروع کنید از ابتدا مراحل رو چک کنید .
در این کار عیب یابی خیلی مشکل تر از شروع از نو می باشد .

devil00x
سه شنبه 27 مهر 1389, 07:26 صبح
سلام
خیلی عجله دارید ؟ من دارم روی ایجاد و راه اندازی standby روی rac کار می کنم . خوشحال میشم اگه کسی چیزی بدونه به اشتراک بگذاره و منم سعی می کنم کم کم که پیش میرم اینجا بنویسم مراحل رو ولی در آخر حتما document رو خواهم گذاشت .

من هم طی همین 1-2 روز آینده این کار رو باید انجام بدم، درصورتی که مطالب جدیدی دستم اومد حتما اینجا قرار میدم.

devil00x
دوشنبه 24 آبان 1389, 11:07 صبح
نمی دونم چرا دوستمون اون فایل مربوط به دیتا گارد رو از اینجا حذف کردن.
ولی جهت اطلاع دوستان یک نمونه کامل جهت راه اندازی دیتا گارد نوشتم و تو وبلاگم قرار دادم.
دوستان می تونن به آدرس زیر امضام جهت دانلود مراجعه کنند.

amin-sadeghi
دوشنبه 06 دی 1389, 10:17 صبح
سلام
من در اراکل تقریبا تازه کارم
می خواستم اگه برای دوستان امکان داره standby db رو به صورت local هم توضیح بدید.
البته به صورت دقیق.
ممنون

devil00x
پنج شنبه 09 دی 1389, 14:15 عصر
دوست عزیز منظورتون از لوکال چیه؟

oracle_dba
جمعه 10 دی 1389, 11:29 صبح
اگه منظورتون روی یه کامپیوتره من این کار رو با WMWare انجام دادم . خیلی جالب بود چون دیگه نیاز به دو تا سرور نداشتم و با نصب دو تا os در VMWare تونستم راه اندازی کنم .

amin-sadeghi
شنبه 11 دی 1389, 09:55 صبح
سلام دوست عزیز
منظورم روی یک os و بدون vmwareاست.
در ضمن در فایل پارامتری که در داکیومنت شماست مسیر پارامترها نامشخصه
اگه امکان داره دقیق تر توضیح بدید.
من برای درس آز پایگاه باید Standby db راه اندازی کنم و از روی داکیومنت شما نتونستم.
لطفا کمکم کنید.
ممنون

devil00x
شنبه 11 دی 1389, 11:50 صبح
البته دوست عزیز این مورد رو در نظر داشته باش که دیتابیس Standby db رو معمولا به عنوان یک mirror دیتابیس و روی یک سیستم دیگه که حتی از نظر جغرافیایی هم از سیستم main DB جدا هست ، چرا که این نوع دیتابیس برای مواقعی که مشکلی برای دیتابیس اصلی پیش میاد استفاده می شه و کاربردی برای اینکه روی یک سیستم اجرا بشه دیده نمی شه؟حالا منظور شما از این کار چی هست؟

amin-sadeghi
یک شنبه 12 دی 1389, 08:53 صبح
بله.شما درست می گید.ولی به دلیل امکانات کم و در اختیار داشتن یک کامپیوتر مجبورم روی یک os اجرا کنم.

devil00x
یک شنبه 12 دی 1389, 10:41 صبح
دوست عزیز می تونی با نصب یک VM یک سیستم مجازی با یک IP غیره ایجاد میکنی و میشه دوتا سیستم که به راحتی می تونی یکی از این سیستم ها رو main و دیگری رو standby
امیدوارم اینجوری مشکلت حل بشه.

amin-sadeghi
سه شنبه 14 دی 1389, 09:11 صبح
سلام
ببخشید ممکنه سوالات من یکمی مبتدیانه باشه.
ایا باید orcl instance و standby instance رو با استفاده از dbca روی دو هاست مختلف ایجاد کنم و فایل های داده رو از oradata/orcl به oradata/standby کپی کنم ؟

devil00x
سه شنبه 14 دی 1389, 14:10 عصر
instance روی main نصب شود و بابت فایلهای داده همونطور که تو آموزش گفتم بایستی از main بر روی standby کپی بشه دقیقا این مطالب رو توی وبلاگ (oraclemaster.blogfa.com)ذکر کردم.

amin-sadeghi
یک شنبه 19 دی 1389, 08:27 صبح
در کوئری که برای تست می گیریم ستون Applied دارای مقدار no است .چرا؟چه کار باید بکنیم تا مقدار yes داشته باشد؟

amin-sadeghi
دوشنبه 20 دی 1389, 10:07 صبح
کسی نیست جواب بده؟ اقای Devill00x ؟
نه
دوست عزیز Devill00x

oracle_dba
دوشنبه 20 دی 1389, 21:04 عصر
در کوئری که برای تست می گیریم ستون Applied دارای مقدار no است .چرا؟چه کار باید بکنیم تا مقدار yes داشته باشد؟
سلام
مقدار no در سمت standby به معنی این است که این Archive File که منتقل شده در سمت standby هنوز apply نشده است

amin-sadeghi
سه شنبه 21 دی 1389, 08:51 صبح
چه کار باید بکنیم که apply شود؟

oracle_dba
سه شنبه 21 دی 1389, 17:58 عصر
چه کار باید بکنیم که apply شود؟

اگه هیچ کدام apply نشده یعنی یه جای کار مشکل داشته . یه دستور وجود داره که برای رجیستر کردن و apply کردن آرشیو فایل ها در سمت standby استفاده می شود ولی برای یک فایل آرشیو و نه زمانی که همه فایل های آرشیو apply نشده باشه . راه اندازیتون مشکل داره .

amin-sadeghi
پنج شنبه 23 دی 1389, 08:15 صبح
ممنون از اینکه جواب دادید.
اگه ممکنه بگید این دستور چیه؟

در ضمن من با استفاده از داکیومنت شما و داکیومنتی که اینجا آپلود کردم و با استفاده از VMWare پیاده سازی کردم.اگه براتون امکان داره ببینید مشکل من از کجاست؟

aidin300
جمعه 24 دی 1389, 00:03 صبح
چه کار باید بکنیم که apply شود؟

برای اینکه apply بشه باید مراحل زیر رو به ترتیب انجام بدید


اول از انتقال فایل های آرشیو لاگ اطمینان پیدا کنید و مطمئن شید که خطایی وجود نداره
select dest_id,status,target,error from v$archive_dest


دستور زیر رو اجرا کرده باشید تا آرشیو لاگ های انتقال داده شده apply شوند

alter database recover managed standby database disconenct from session;

مطمئن بشید که گپی وجودنداره

select * from v$archive_gap
و اینکه تاریخ و timezone هم یکی باشه و alert log هم بررسی کنید

amin-sadeghi
یک شنبه 26 دی 1389, 09:19 صبح
همه ی این کارهایی که شما گفتید رو انجام دادم
هیچ مشکلی نیست.هیچ خطا یا گپی وجود نداره .اما باز هم apply نشد.
از دستور ALTER DATABASE REGISTER PHYSICAL LOGFILE هم استفاده کردم تا APPLY شوند ولی خطایی به صورت زیر ایجاد شد:
ERROR at line 1:
ORA-16089: archive log has already been registered
در ضمن منظورتون از timezone چیه؟

oracle_dba
سه شنبه 28 دی 1389, 23:16 عصر
سلام
تنظیمات شبکه رو چک کنید
من با داکیومنت خودم تونستم دوباره راه اندازی کنم .
ممکنه از vmware باشه آخه من رو دو تا سرور مجزا run کردم .
البته با vmware 7.0 هم امتحان کردم شد .

mojiloop
دوشنبه 26 اردیبهشت 1390, 12:48 عصر
مراحل نصب Physical Stanby Database در مد Maximum Performance در محيط Oracle 10G (انتقال redo ها بوسيله archive ها)
1. مرور Physical Stanby Database
2. نيازمنديهای سخت افزاری و نرم افزاری
3. انجام تنظيمات لازم بر روی سيستم primary
4. انجام تنظيمات لازم بر روی سيستم standby
5. بررسي درستی عملکرد standby
1. مرور Physical Stanby Database :
در اين قسمت تصميم داريم تا نحوه ايجاد Physical Standby Database را شرح دهيم همانطور که در قسمتهای قبل گفته شد يک standby ميتواند به دو صورت physical يا logical باشد که دراين نصب از روش physical استفاده ميکنيم هممچنين برای انتقال redo ها از primary به standby تصميم داريم از روش انتقال بوسيله archive ها استفاده نماييم به منظور اگاهي از تفاوت روشهای فوق ميتوانيد به لينک (http://oracle-click.com/amoozesh/dataguard/dataguard_mode.htm) Data Guard و مدلهای مختلف Standby Database (http://oracle-click.com/amoozesh/dataguard/dataguard_mode.htm) مراجعه کنيد .
به منظور راه اندازی يک سيستم data guard لازم است بر روی حداقل دو سيستم تنظيمات لازم را انجام داد از يک سمت سيستم primary که يک سيستم عملياتی ميباشد و بايد تنظيمات لازم بر روی آن انجام شود تا redoهای ايجاد شده توسط آن به درستي به standby انتقال پيدا کند . از سوی ديگر حداقل يک سيستم standby ميباشد که بايد redoهای فرستاده شده از سمت primary را دريافت نمايد و بر روی پايگاه داده خود اعمال نمايد تا با سيستم primary همزمان بماند .
2. نيازمنديهای سخت افزاری و نرم افزاری :
نيازمنديهای نرم افزاری :
به طور کلی هر نرم افزاری که در سمت primary اعم از سيستم عامل و نسخه اراکل موجود ميباشد لازم است بر روی سيستم standby نيز موجود باشد .
به عنوان مثال اگر در سمت primary سيستم عامل linux ميباشد لازم است بر روی سيستم standby نيز همين سيستم عامل موجود باشد . بهتر است در انتخاب ويرايشها نيز دقت شود تا از بروز هرگونه مشکل خودداری شود .
ليست نرم افزارهای مورد نياز نصب در هر دو سمت primary و standby به شرح زير ميباشد :
پايگاه داده primaryنسخه اراکل oracle 10G Release 10.2.0.1.0نام کامپيوترsrvprimIP کامپيوتر20.20.20.1سيستم عاملRed Hat Enterprise Linux AS release 4 (Nahant Update 3)نام SIDdbtest1Instance Service Names dbtest1TNS Service Name tns_primary پايگاه داده STANDBYنسخه اراکل oracle 10G Release 10.2.0.1.0نام کامپيوترsrvstandbyIP کامپيوتر20.20.20.2سيستم عاملRed Hat Enterprise Linux AS release 4 (Nahant Update 3)نام SIDdbtest2Instance Service Names dbtest2TNS Service Name tns_standby

3. انجام تنظيمات لازم بر روی سيستم primary :
در سمت primary سيستم data guard لازم است تنظيمات لازم جهت ايجاد redo در سمت primary , انتقال redo ها به سمت standby و رفع مشکلات security انجام شود . به طور کلی اين تنظيمات را ميتوان به شرح ذيل عنوان نمود :
1. تنظيم پارامترهای مربوط به archive نمودن redolog ها در pfile يا spfile مربوطه و قرار دادن primary database در مد archive :
پارامترهايی که بايد تنظيم شوند مطابق زير ميتوانند باشند :


log_archive_dest_1 = 'location=/u01/archive'
log_archive_dest_state_1= 'enable'
log_archive_format='%t_%s_%r.arc'


در صورتی که پارامترهای بالا تنظيم نشده باشند و با spfile بالا آمده باشيم ميتوانيم بوسيله دستورات زير اين تنظيمات را انجام دهيم :

sql_10g > alter system set log_archive_dest_1 = 'location=/u01/archive'
sql_10g > alter system set log_archive_dest_state_1= 'enable'
sql_10g > alter system set log_archive_format='%t_%s_%r.arc'

پس از اينکه تغييرات بالا اعمال شد ميتوان با استفاده از روش زير پايگاه داده را در مد archive قرار داد :

sql_10g > shutdown immediate ;
sql_10g > startup mount ;
sql_10g > alter database archivelog ;
sql_10g > alter database open ;

Enable forced logging . 2 :
enable نمودن ايجاد log در پايگاه داده به صورت force امکانی است که از oracle 9i در اختيار کاربران قرار داده شده است در صورت enable نمودن آن چنانچه يک transaction به صورت nologging باشد nologging در نظر گرفته نميشود و redo لازم جهت همزمانی standby با primary ايجاد ميشود در غير اينصورت لازم بود که dba خود تغييراتي را که log آنها ايجاد نشده پيدا نموده و به standby ها انتقال دهد . به منظور اعمال force logging به صورت زير عمل مينماييم :

sql_10g > alter database force logging;


ميتوانيم با query زيراز اعمال آن اطمينان حاصل نمود :


sql_10g > select force_logging from v$database

FORCE_LOGGING
-------------
YES




3. ايجاد PASSWORD فايل :
به منظور اطمينان از SECURITY پايگاه داده های STANDBY تمامی آنها بايد دارای PASSWORD FILE باشند و پسورد کاربر SYS درآنها بايد با پسورد کاربر SYS در PRIMARY يکسان باشد . در صورتيکه اين فايل قبلا در PRIMARY ايجاد شده باشد ميتوان با کپي نمودن آن به STANDBY از اين مرحله گذر نمود در غير اينصورت ميتوان اين فايل را در PRIMARY ايجاد وسپس به STANDBY انتقال داد.

$ orapwd file=orapwdbtest1 password=sys_pass

نکته : پس از انتقال password file به standbyها بايد نام آن در سمت standby به صورت 'orapw'ORACLE_SID تغيير شود که ORACLE_SID برابر نام INSTANCE مربوط به STANDBY ميباشد که در اين مثال dbtest2 ميباشد (دقت داشته باشيد در linux حروف بزرگ و کوچک متفاوت ميباشند)


پس از اينکه password file ايجاد شد لازم است تا امکان استفاده از آن برای primary فراهم شود لذا مطابق زير خواهيم داشت :

sql_10g > shutdown immediate
sql_10g > startup nomount
sql_10g > alter system set remote_login_passwordfile=exclusive scope=spfile
sql_10g > alter database mount
sql_10g > alter database open

4. ايجاد سرويسهای لازم در oracle network file :
به منظور امکان ايجاد ارتباط primary با standby جهت ارسال redo ها لازم است سرويس لازم در سمت primary ايجاد شود همچنين يک سرويس ديگر ايجاد ميشود تا در صورت تغيير نقش بتوان از آن استفاده نمود لذا لازم است تا در فايل tnsname.ora هر دو سمت standby , primary اين دو سرويس را قرار داد .


tns_primary=
( DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS =
(PROTOCOL = TCP)
(HOST = 20.20.20.1)
(PORT = 1521)
)
)
(CONNECT_DATA =
(SERVICE_NAME =dbtest1)
)
)

tns_standby =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS =
(PROTOCOL = TCP)
(HOST = 20.20.20.2)
(PORT = 1521)
)
)
(CONNECT_DATA =
(SERVICE_NAME = dbtest2)
)
)


همچنين لازم است listener مورد نياز در سمت primary را ايجاد نمود لذا در فايل listener.ora خواهيم داشت :

LISTENER =
( DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 20.20.20.1)(PORT = 1521))
)
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
)
)
)


پس از اينکه تنظيمات لازم را در listener.ora اعمال نموديم لازم است listener را بالا و پايين کنيم

$ lsnrctl stop
$ lsnrctl start


پس از اين مرحله لازم است که درون فايل sqlnet.ora يک پارامتر را تنظيم نماييم البته اين تنظيم در سمت primary به اين دليل لازم است که امکان دارد بخواهيم يک switchover انجام بدهيم در غير اينصورت اين تنظيم فقط در سمت standby صورت ميگيرد :


sqlnet.ora
SQLNET.EXPIRE_TIME=2
.
.
.


5. تنظيم پارامترهای primary database :
پارامترهای متعددی در فايل پارامتر تنظيم ميشوند بيشتر اين پارامترها به چگونگي استفاده instance از disk ,cpu و حافظه مربوط ميشوند .
در سيستم dataguard زمانی که مشخصات سيستم primary و standby مشابه ميباشند بيشتر پارامترها به جز موارد اندکی مشابه ميباشند .
در اين قسمت پارامترهايی مهمی که در سمت primary به منظور پيکربندی data guard لازم است شرح ميدهيم :

DB_UNIQUE_NAME
INSTANCE_NAME
SERVICE_NAMES
LOG_ARCHIVE_CONFIG
FAL_CLIENT
FAL_SERVER
LOG_ARCHIVE_DEST_1
LOG_ARCHIVE_DEST_STATE_1
LOG_ARCHIVE_DEST_2
LOG_ARCHIVE_DEST_STATE_2
STANDBY_FILE_MANAGEMENT

اين پارامترها را به صورت زير تنظيم مينماييم :


DB_UNIQUE_NAME = 'dbtest1'
INSTANCE_NAME = 'dbtest1'

اين پارامتر مشخص کننده يک نام منحصر به فرد برای پايگاه داده primary ميباشد .

SERVICE_NAMES = 'dbtest1'

از اين پارامتر در تنظيم سرويس شبکه اراکل استفاده ميشود .

LOG_ARCHIVE_CONFIG = 'DG_CONFIG=(dbtest1,dbtest2)'

اين پارامتر مشخص کننده ليست DB_UNIQUE_NAME ها در سمت primary و standby ميباشد .

FAL_CLIENT = tns_primary

اين پارامتر در سمت PRIMARY برابر با سرويسی شده که به پايگاه داده سيستم PRIMARY اشاره ميکند .

FAL_SERVER = tns_standby

اين پارامتر در سمت PRIMARY برابر با سرويسی شده که به پايگاه داده سيستم STANDBY اشاره ميکند .

LOG_ARCHIVE_DEST_1= 'location= /u01/archive valid_for=(all_logfiles,all_roles) db_unique_name=dbtest1'
LOG_ARCHIVE_DEST_STATE_1='enable'
در تنظيم پارامتر LOG_ARCHIVE_DEST_1 لازم است گزينه VALID_FOR را که خود شامل دو قسمت است تنظيم کنيم :

(VALID_FOR=(redo_log_type,database_role

redo_log_type : اين پارامتر مشخص کننده اين است که log فايلهايي که ميخواهد archive شود در صورتي مجاز ميباشد که بوسيله کدام redo log fileها ايجاد شده باشد اين گزينه ميتواند برابر ONLINE_LOGFILE , STANDBY_LOGFILE و ALL_LOGFILES باشد
database_role : اين گزينه مشخص ميکند LOG_ARCHIVE_DEST_1 در چه صورت معتبر است و ميتواند برابر PRIMARY_ROLE ,STANDBY_ROLE و ALL_ROLES باشد . ALL_ROLES به اين معنا است که در هرشرايطی PRIMARY يا STANDBY معتبر است .



LOG_ARCHIVE_DEST_2='SERVICE=tns_standby
VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
DB_UNIQUE_NAME=dbtest2'
اين پارامتر مشخص ميکند که archive های توليد شده در LOG_ARCHIVE_DEST_2 به کجا ارسال ميشود . همچنين جزييات اين ارسال به چه صورت ميباشد که مطابق آنچه تنظيم شده با استفاده از يک سرويس شبکه اراکل service=tns_standby به پايگاه داده standby اشاره شده است . همچنين اين آدرس فقط زماني مجاز ميباشد که پايگاه داده ای که اين logها را توليد ميکند دارای نقش primary باشد در آخر DB_UNIQUE_NAME مربوط به پايگاه داده standby ذکر شده است .

STANDBY_FILE_MANAGEMENT =AUTO

نکته : تعدادی از پارامترهای فوق مربوط به زمانی است که سيستم PRIMARY تغيير نقش داده و STANDBY شده است همچنين در تنظيم پارامترهای فوق همانطور که مشاهده کرديد امکاناتی قرار داه شده است که بتوان بدون تغيير در پارامتر فايل تغيير نقش داد اين امکان همراه ORACLE 10G فراهم شده است .
6. تهيه يک کپی از datafileهای primary و انتقال آنها به standby :
کپي تهيه شده از فايلهای داده primary ميتواند consistent و يا غير consistent باشد در صورتی که پايگاه داده open نباشد کپی تهيه شده cold و consistent خواهد بود و در صورتی که پايگاه داده open باشد کپي تهيه شده hot و غير consistent است . در صورتی نتوانيم پايگاه داده را برای مدتی shutdown نماييم ناگزير از تهيه کپی به صورت inconsistent هستيم روشی که ما استفاده ميکنيم inconsistent است لذا به صورت زير عمل ميکنيم :

sql_10g> select name from v$datafile ;
NAME
--------------------------------------------------------------------------------
/u03/data/db/system01.dbf
/u03/data/db/undotbs01.dbf
/u03/data/db/sysaux01.dbf
/u03/data/db/users01.dbf

sql_10g> select * from v$logfile ;
GROUP# STATUS TYPE MEMBER IS_RECOVERY_DEST_FILE
---------- ------- ------- -------------------------------------------------------------------------------- ---------------------
3 ONLINE /u03/data/db/redo03.log NO
2 ONLINE /u03/data/db/redo02.log NO
1 ONLINE /u03/data/db/redo01.log NO


با اجرای دستورات فوق ليست فايلهای داده و redo log فايلها مشخص ميشود . در ادامه دستورات زير را اجرا ميکنيم :

sql_10g> alter database begin backup ;
Database altered

حال فايلهای داده و redo log فايلها را از آدرسهای فوق به همان آدرس در سيستم standby انتقال ميدهند برای اين کار ميتوان از دستور scp استفاده ميکنيم :

$ scp /u03/data/db/*.dbf 20.20.20.2:/u03/data/db
$ scp /u03/data/db/*.log 20.20.20.2:/u03/data/db

در ادامه در سمت primary خواهيم داشت :

sql_10g> alter database end backup ;



*توجه : پس از اينکه فايلها را به standby سرور انتقال داديم دقت شود که فايلهای انتقال داده شده دارای owner مناسب باشند .

7. ايجاد کنترل فايل مخصوص standby :
کنترل فايل مربوط به standby متفاوت با کنترل فايل مربوط به primary ميباشد . به همين دليل بايد از روی کنترل فايل primary کنترل فايل مخصوص standby را ايجاد نمود . اين کنترل فايل به صورت زير ايجاد ميشود :

sql_10g > alter database create standby controlfile as '/u01/app/oracle/stbyctl.ctl';



پس از اينکه کنترل فايل مربوط به standby ايجاد شد آنرا به STANDBY سرور در همان آدرس PRIMARY سرور انتقال ميدهيم .
*توجه : STANDBY CONTROL FILE . 1 بايد پس از اينکه فايلهای داده کپی شدند ايجاد شود .
2 . برای ايجاد فايل فوق ميتوانيم از RMAN نيز استفاده نماييم .



8. تهيه PFILE مورد نياز standby :
همانطور که قبلا گفتيم پارامتر فايل primary و standby از بسياری جهات مشابه يکديگر ميباشند لذا ميتوان با استفاده از پارامتر فايل primary و اندکي تغيير در آن pfile مورد نياز standby را ايجاد نمود . در صورتی که با استفاده از spfile بالا آمده باشيم ميتوانيم ابتدا با استفاده از دستور زير pfile معادل آنرا ايجاد نماييم .

sql_10g > create pfile='/u02/app/oracle/product/10.2.0/dbtest/dbs/initdbtest1.ora' from spfile
*توجه : اسم پارامتر فايل بالا با علم به اينکه instance_name برابر dbtest1 است انتخاب شده است . پس از انتقال به standby آنرا به initdbtest2.ora تغيير ميدهيم


پس از اينکه فايل فوق ايجاد شد اين فايل را به همراه standby control file به سرور standby انتقال ميدهيم .
*توجه : پس از اينکه فايلها را به standby سرور انتقال داديم دقت شود که فايلهای انتقال داده شده دارای owner مناسب باشند .


* نکته مهم : در تمام مراحل فرض شده که آدرسهای ايجاد شده در سمت standby همان آدرسهای ايجاد شده در سمت primary ميباشند در صورتي که اينگونه نباشد لازم است تعدادی پارامتر ديگر نيز تنظيم شوند .

4. انجام تنظيمات لازم بر روی سيستم standby :
1. تنظيم فايلهای شبکه اراکل:
در اين مرحله همان سرويسهای ايجاد شده در سمت primary را به سمت فايل tnsnames.ora مربوط به standby اضافه ميکنيم :

tns_primary=
( DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS =
(PROTOCOL = TCP)
(HOST = 20.20.20.1)
(PORT = 1521)
)
)
(CONNECT_DATA =
(SERVICE_NAME = dbtest1)
)
)
tns_standby =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS =
(PROTOCOL = TCP)
(HOST = 20.20.20.2)
(PORT = 1521)
)
)
(CONNECT_DATA =
(SERVICE_NAME = dbtest2)
)
)

فايل listener.ora مربوط به standby را مشابه primary با اندکی تغيير به مانند زير تنظيم مينماييم :


LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 20.20.20.2)(PORT = 1521))
)
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
)
)
)


تنظيم فايل sqlnet.ora به صورت زير :

sqlnet.ora
SQLNET.EXPIRE_TIME=2
.
.
.


حال listener سمت standby را stop و start تا از درستي آن اطمينان حاصل کنيم :

$ lsnrctl stop
$ lsnrctl start

2.تنظيم پارامتر فايل مربوط به standby :
پس از اينکه پارامتر فايل primary را به standby انتقال داديم بايد تغييرات لازم را در آن اعمال کنيم تا بتوان از آن در سمت standby استفاده نمود سپس ميتوان از روی آن spfile ساخت . پارامترهايي که بايد در سمت primary آنها را تغيير داد به شرح زير ميباشند :


DB_UNIQUE_NAME = 'dbtest2'
INSTANCE_NAME = 'dbtest2'

اين پارامتر مشخص کننده يک نام منحصر به فرد برای پايگاه داده primary ميباشد .

SERVICE_NAMES = dbtest2

از اين پارامتر در تنظيم سرويس شبکه اراکل استفاده ميشود .

FAL_CLIENT = tns_standby
FAL_SERVER = tns_primary

در سمت standby مقدار دو پارامتر فوق مطابق آنچه مشاهده ميشود با هم عوض ميشود .

LOG_ARCHIVE_DEST_1= 'location= /u01/archive valid_for=(all_logfiles,all_roles) db_unique_name=dbtest2'
LOG_ARCHIVE_DEST_STATE_1='enable'
در تنظيم پارامتر LOG_ARCHIVE_DEST_1 لازم است گزينه VALID_FOR را که خود شامل دو قسمت است تنظيم کنيم :

(VALID_FOR=(redo_log_type,database_role
redo_log_type : اين پارامتر مشخص کننده اين است که log فايلهايي که ميخواهد archive شود در صورتي مجاز ميباشد که بوسيله کدام redo log fileها ايجاد شده باشد اين گزينه ميتواند برابر ONLINE_LOGFILE , STANDBY_LOGFILE و ALL_LOGFILES باشد .
database_role : اين گزينه مشخص ميکند LOG_ARCHIVE_DEST_1 در چه صورت معتبر است و ميتواند برابر PRIMARY_ROLE ,STANDBY_ROLE و ALL_ROLES باشد . ALL_ROLES به اين معنا است که در هرشرايطی PRIMARY يا STANDBY معتبر است .



LOG_ARCHIVE_DEST_2='SERVICE=tns_primary
VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
DB_UNIQUE_NAME=dbtest1'
اين پارامتر مشخص ميکند که archive های توليد شده در LOG_ARCHIVE_DEST_2 به کجا ارسال ميشود . همچنين جزييات اين ارسال به چه صورت ميباشد که مطابق آنچه تنظيم شده با استفاده از يک سرويس شبکه اراکل service=tns_primary به پايگاه داده primary اشاره شده است . همچنين اين آدرس فقط زماني مجاز ميباشد که پايگاه داده ای که اين logها را توليد ميکند دارای نقش primary باشد در آخر DB_UNIQUE_NAME مربوط به پايگاه داده primary ذکر شده است . از اين پارامتر زماني استفاده ميکند که switchover انجام داده باشيم .

control_files = /u03/data/db/stbyctl.ctl

نام و مکان کنترل فايل کپي شده در سمت standby را مشخص ميکند .
3. password file :
در اين روش نصب فرض بر اين شده که نام instance در هردو سمت primary , standby متفاوت ميباشد لذا در صورت وجود پسورد فايل در سمت primary آنرا به standby انتقال ميدهيم و سپس نام آنرا به صورت orapw$ORACLE_SID تغيير ميدهيم که ORACLE_SID$ بيان کننده نام INSTANCE در سمت STANDBY ميباشد . در صورتی که مايل باشيد ميتوانيد آنرا در سمت STANDBY با دستور orapwd بسازيد . فراموش نکنيد که پسورد کاربر sys بايد همان پسورد کاربر sys در سمت primary باشد .

ORACLE_SID$ بيان کننده نام INSTANCE ميباشد .
4. شروع به کار standby database :
پايگاه داده standby مادامي که در وضعيت standby باشد در دو وضعيت قرار داده ميشود open read only و يا redo log apply . در حالت open read only ميتوان يک سری کارهای مديريتی بر روی پايگاه داه انجام داد . هرگز نبايد پايگاه داده را به صورت READ AND WRITE باز نمود . در حال redo log apply اراکل REDO های فرستاده شده از سمت PRIMARY را بر روی STANDBY اعمال مينمايد تا همزمان با تغييرات PRIMARY پيش برود .
با توجه به اين که امکان دارد در آينده بخواهيم SWITCHOVER يا FAILOVER انجام بدهيم بهتر است از هم اکنون فايلهای TEMPORARY را در سمت STANDBY ايجاد نماييم لذا به صورت زير عمل ميکنيم :

sql_10g > STARTUP OPEN READ ONLY ;
sql_10g > SELECT TABLESPACE_NAME FROM DBA_TABLESPACES
2> WHERE CONTENTS = 'TEMPORARY';
TABLESPACE_NAME
--------------------------------
TEMP1

بوسيله دستور فوق ميتوانيم نام TEMPORARY TABLESPACE را بدانيم حال خواهيم داشت :

sql_10g > ALTER TABLESPACE TEMP1 ADD TEMPFILE '/u03/data/db/temp01.dbf' SIZE 40M REUSE;


سپس پايگاه داده را در مد redo log apply قرار ميدهيم :

sql_10g > ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION


تا وقتي که در سمت primary يک log switch صورت نگيرد هيچ فايل archive به standby فرستاده نميشود لذا با انجام يک switch اجباری در سمت primary اين امکان را فراهم ميکنيم .
در سمت primary خواهيم داشت :

sql_10g > ALTER SYSTEM SWITCH LOGFILE



5. اطمينان از صحت انتقال و اعمال archiveها از سمت primary به standby :
ابتدا در سمت primary بررسی ميکنيم که شماره redo log file جاری چند است :

sql_10g > select SEQUENCE# ,STATUS
2 from v$log
3 /

SEQUENCE# STATUS
---------- ----------------
221 INACTIVE
222 CURRENT
220 INACTIVE


مطابق نتيجه به دست آمده شماره log جاری برابر 222 ميباشد اين log را در سمت primary به صورت archive تبديل ميکنيم :

sql_10g > alter system archive log current ;

حال در سمت standby بررسي ميکنيم که آيا اين شماره archive رسيده و apply شده است يا خير :

sql_10g > select max(sequence#) from v$archived_log where applied='YES'

در صورتيکه شماره archive نمايش داده شده برابر 222 باشد نشان دهنده درستی عملکرد standby ميباشد .

tk2005730
یک شنبه 29 بهمن 1391, 08:51 صبح
با سلام خدمت تمامی دوستان

میشه این داکیومنتی که دوستمون تو پست های اول گذاشتن را دوباره بذارین چون من لینک دانلودش را نمیبینم

ممنون
خیلی نیاز دارم:افسرده:

nargesx
سه شنبه 11 تیر 1392, 16:41 عصر
سلام.
این مطالب رو میشه از کجا دانلود کرد؟
لطفا به ایمیلم جواب بدید onila10@yahoo.com