بررسی Instance mode

نویسنده: مهندس سعید صناعتی

همانطور که میدانیم بانک اطلاعاتی اوراکل ( در اینجا منظور همان instance است ) می تواند در حالات مختلفی قرار گیرد و بنا به شرایط و نیاز، در دسترس یا خارج از دسترس همه یا تعدادی از کاربران راه اندازی شود که به این حالات اصطلاحا mode ( یا وضعیت ) های یک instance می گویند. برای اطلاع از وضعیت یک instance، می توان مقدار ستون status از ویوی v$instance را بررسی کرد:

SQL> Select status from v$instance;

در جواب این کوئری اگر بانک بالا باشد یکی از مقدارهای، started ( نشانگر وضعیت nomount ، (mounted و یا open در خروجی نمایش داده می شود. ودرصورتی که بانک start نشده باشد وضعیت آن در حالت idle یا غیر فعال است و در این صورت به محض ورود به محیط sqlplus پیغام ” Connected to an idle instance. ”  نمایش می یابد.

وضعیت های مختلف instance عبارتند از :

  • Idle Mode :

در این حالت بانک متوقف بوده و در دسترس هیچ یک از کاربران قرار ندارد و هیچ گونه سرویسی هم ارائه نمی کند.

  • Nomount Mode :

در این حالت ابتدا spfile از مسیر پیش فرض خود یعنی “$ORACLE_HOME/dbs/” خوانده می شود و در صورتی که فایل فوق در این مسیر با نام و فرمت استاندارد وجود نداشته باشد، بانک بدنبال pfile (که همان parameter file یا با نام دیگر، init file است ) در همان مسیر می گردد. اگر این فایل را هم پیدا نکند خطای زیر نمایش داده می شود و instance  شروع به کار نخواهد کرد :

ORA-01078: failure in processing system parameters

LRM-00109: could not open parameter file ‘/u01/oracle/11g4/dbs/initorcl.ora’

اگر مشکلی در پیدا کردن و خواندن پارامتر فایل نباشد بانک، sga و background proccess ها ( مانند DB writer و log writer و … ) را بارگذاری می کند.

در این وضعیت می توان از برخی dynamic performance view ها مثل v$instance که در بالا به آن اشاره شد استفاده کرد اما جداول دیتا دیکشنری (اطلاعات جداول، ساختارجداول، ارتباطات آنها و … ) در دسترس نمی باشند. همچنین یوزرهایی که مجوز sysdba ، sysoper و یا sysbackup دارند  می توانند به بانک متصل شده و اعمال مختلفی مثل ساخت control file و همچنین عملیات duplicate را انجام دهند.

  • Mount mode :

در این mode کنترل فایل خوانده می شود و تمام کنترل فایل هایی که آدرس و نام آنها در spfile ذخیره شده است، می بایست وجود داشته باشند. یعنی اگر مسیری در spfile ذخیره شده باشد ولی در آن مسیر کنترل فایلی نباشد بانک خطایی مطابق شکل زیر داده و mount نمی شود.

ORA-00205: error in identifying control file, check alert log for more info

از این مد برای عملیات هایی مانند recovery ، backup ،  restore ، و تغییر دیتابیس به حالت  archive log و no archive log استفاده می شود.

  • Open mode :

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

قبل از آنکه بانک در حالت open قرار گیرد، اوراکل ابتدا تمام datafile ها و redo log file ها را باز نموده و سپس سازگاری بانک اطلاعاتی (یعنی مقدار SCN در control file ها با مقدار SCN ثبت شده در هدر datafile ها مطابقت داشته باشد) را بررسی می کند و اگر چنین نباشد قبل از باز نمودن بانک اطلاعاتی ، عملیات instance recovery به طور اتوماتیک اجرا می شود .

اگر علاوه بر instance recovery ، بانک اطلاعاتی نیاز به media recovery نیز داشته باشد ، اوراکل اعلام میکند که باید عملیات media recovery انجام شود و تا قبل از انجام آن بانک را open نمی کند

 

  • Instance starting :

در زیر طریقه کلی start کردن ( بالا آوردن ) بانک در وضعیت های مختلف، که در بالا به آنها اشاره شد، را نمایش میدهیم :

(DBA می تواند در هر مرحله ای که نیاز دارد و به صورت یکباره یا ترتیبی ، instance را راه اندازی کند )

ترتیب تغییر حالت instance :

Idle  ->  nomount  ->  mount  ->  open

شکل کلی دستور:

Startup [nomount] [mount] [open] ;

اگر دستورstartup  را بدون option اجرا شود بانک در حالت open بالا می آید .

جهت تغییر حالت instance، از دستور alter database بشکل زیر استفاده می شود

Alter database [mount] [open] [close] [dismount];

 

توجه داشته باشید تغییر حالت instance به صورت ترتیبی قابل تغییر است.( یعنی برای رفتن از مرحله nomount به مراحل open ، ابتدا باید بانک را به حالت mount برده سپس به open تغییر وضعیت دهیم و بالعکس ، یعنی زمانی که بانک open است آنرا به mount و نهایتا به nomount تغییر دهیم )

شکلهای مختلف دستور :

Alter database mount;           =>      (nomount  ->  mount)

Alter database open;             =>     (mount  ->  open)

Alter database close ;            =>     ( open  ->  mount )

Alter database dismount ;    =>     ( mount  ->  nomount )

دستور close ، تنها زمانی اتفاق می افتد که session فعال دیگری وجود نداشته باشد

  • Instance shutdown :

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

شکل کلی دستور بشکل زیر است:

shutdown [normal] [transactional] [immediate] [abort] ;

اگر دستور shutdown  را بدون option اجرا شود بانک به حالت immediate متوقف می شود.

  • Shutdown normal :

به هیچ کانکشن و session جدیدی اجازه دسترسی نمی دهد اما منتظر پایان یافتن همه session ها و تراکنش های فعال و باز به صورت نرمال می ماند.

  • Shutdown transactional :

مثل حالت نرمال است با این تفاوت که تراکنش ها را خاتمه نمی دهد و منتظر اتمام آنها می ماند ولی session هایی که هیچ تراکنش در حال اجرا ندارند را می بندد.

  • Shutdown immediate :

در این نوع از متوقف کردن instance ،  تمامی session  های فعال و غیر فعال بانک بسته می شود ، همچنین در این حالت تمامی تراکنشها rollback  شده و پس از آن یک checkpoint اتفاق می افتد و به دنبال آن بانک close می شود. اگر بانک به این حالت خاموش شود ، در هنگام startup بعدی دیگر نیازی به instance recovery نمی باشد

  • Shutdown abort :

مثل حالتهای قبل است با این تفاوت که اجازه checkpoint را هم نمی دهد و بانک به طور abnormal خاموش می شود و در زمان startup بعدی حتما باید instance recovery انجام شود.

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

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