یک پایگاه داده، مجموعه ای Datafiles, Control Files, Redo Log Files و غیره هستند و Instance مجموعه ای از فرایند های پس زمینه مانند : DBWR, PMON, SMON, LGWR و غیره به همراه ناحیه ای از حافظه اصلی که SGA نامیده می شود. instance به پایگاه داده دسترسی دارد و از آن استفاده می کند و کاربران به instance متصل می شوند. در این پست می توانید تفاوت میان instance و database را بخوانید و در واقع بطور واقعی instance را Start می کنیم. در واقع یک instance می تواند start یا shutdown شود و یک پایگاه داده می تواند mount, open, closed و dismount شود اما می توانیم اینگونه در نظر بگیریم که یک پایگاه داده را start یا shutdown می کنیم.
مطابق شکل زیر یک پایگاه داده می تواند در 4 حالت زیر باشد و در صورتی تمامی کاربران می توانند به یک پایگاه داده دسترسی داشته باشند که، آن پایگاه داده در حالت OPEN باشد.
- SHUTDOWN State
- NOMOUNT state
- MOUNT State
- OPEN state
تنها کاربر با مجوز SYSDBA، می تواند حالت های پایگاه داده ( SHUTDOWN, NOMOUNT, MOUNT و OPEN ) را تغییر دهد. توسط دستور shutdown می توانیم پایگاه داده را SHUTDOWN کنیم که خود حالت SHUTDOWN دارای 4 نوع است. همچنین توسط دستور startup می توانیم پایگاه داده را به حالت های NOMOUNT, MOUNT و OPEN قرار دهیم.
راه اندازی پایگاه داده
در طول راه اندازی، پایگاه داده در حالت های زیر قرار می گیرد تا در حالت OPEN قرار بگیرد.
NOMOUNT State
- Parameter File را می خواند.
- SGA را اختصاص می دهد.
- فرایند های پس زمینه را start می کند.
- تنها فرایند های پس زمینه و SGA در حال اجرا شدن هستند.
- تنها کاربر sys دسترسی به پایگاه داده را دارد.
- می تواند برای ایجاد یک پایگاه داده توسط دستور CREATE DATABASE استفاده شود.
- توسط دستور زیر پایگاه داده را در این حالت قرار می دهیم.
startup nomount
همانطور که در شکل بالا مشاهده می کنید، در این حالت instance آغاز به کار کرده است. (فرایند های پس زمینه و SGA در حال اجرا شدن هستند).
MOUNT State
- Parameter File را می خواند.
- SGA را اختصاص می دهد.
- فرایند های پس زمینه را start می کند.
- Control File را می خواند.
- فرایند های پس زمینه و SGA در حال اجرا شدن هستند و Control File نیز در حالت open است.
- تنها کاربر sys دسترسی به پایگاه داده را دارد.
- برای عملیات های Recovery و تعمیرات مورد استفاده قرار می گیرد.
- توسط دستور زیر پایگاه داده را در این حالت قرار می دهیم.
startup mount
ORACLE instance started.
Total System Global Area 789172224 bytes
Fixed Size 2148552 bytes
Variable Size 570427192 bytes
Database Buffers 205520896 bytes
Redo Buffers 11075584 bytes
Database mounted.
SYS@dev11g> alter database open;
Database altered.
OPEN State
- Parameter File را می خواند.
- SGA را اختصاص می دهد.
- فرایند های پس زمینه را start می کند.
- Control File را می خواند.
- تمامی فایل های پایگاه داده (Datafiles, Online Redo Log Files) ها را می خواند.
- فرایند های پس زمینه و SGA در حال اجرا شدن هستند و Control File نیز در حالت open است. همچنین تمامی فایل های پایگاه داده نیز open شده اند.
- تمامی کاربران به پایگاه داده دسترسی دارند.
- این حالت پیش فرض است و توسط یکی از دستور های زیر، پایگاه داده در این حالت قرار می گیرد.
startup open
OR
startup
ORACLE instance started.
Total System Global Area 812529152 bytes
Fixed Size 2264280 bytes
Variable Size 960781800 bytes
Database Buffers 54654432 bytes
Redo Buffers 3498640 bytes
Database mounted.
Database opened.
متوقف کردن پایگاه داده
در طی متوقف کردن یک پایگاه داده، رخداد هایی بصورت زیر اتفاق می افتد
- هیچ اتصال جدیدی به پایگاه داده پذیرفته نمی شود.
- تراکنش های در حال اجرا، با بروز رسانی مناسب Redo Log File ها، یا Commit می شوند و یا Roll Back خواهند شد. (توجه داشته باشید، در پایگاه داده ها پیش از نوشتن هر تغییری در Datafile ها،نخست یک نسخه از تغییرات در Redo Log File ها نوشته می شود، که در زمان Recovery پایگاه داده، مورد استفاده قرار می گیرد.)
- جلسات کاربران خاتمه می یابند.
- Header فایل های پایگاه داده بروز می شوند و سپس Close خواهند شد.
- فضای SGA باز پس گرفته می شود.
- فرایند های پس زمینه خاتمه می یابند.
همانطور که گفته شد SHUTDOWN خود بر 4 دسته است :
- SHUTDOWN NORMAL که حالت پیشفرض است.
- SHUTDOWN TRANSACTIONAL
- SHUTDOWN IMMEDIATE
- SHUTDOWN ABORT
SHUTDOWN NORMAL
- هیج اتصال جدیدی به پایگاه داده پذیرفته نمی شود.
- تراکنش های در حال اجرا بصورت نرمال ادامه پیدا می کنند تا زمانی که یا Commit و یا Roll Back شوند.
- کاربران خودشنان بصورت نرمال Logout می کنند.
- پس از اینکه آخرین کاربر Logout کرد، Header فایل های پایگاه داده بروز می شوند و سپس Close خواهند شد.
- فضای SGA باز پس گرفته می شود.
- فرایند های پس زمینه خاتمه می یابند.
- توسط یکی از دستور های زیر انجام می شود
shutdown normal
OR
shutdown
Database closed.
Database dismounted.
ORACLE instance shut down.
SHUTDOWN TRANSACTIONAL
- هیج اتصال جدیدی به پایگاه داده پذیرفته نمی شود.
- تراکنش های در حال اجرا بصورت نرمال ادامه پیدا می کنند تا زمانی که یا Commit و یا Roll Back شوند.
- پس از اینکه یک تراکنش در حال اجرا تکمیل شد، جلسه کاربر خاتمه می یابد.
- Header فایل های پایگاه داده بروز می شوند و سپس Close خواهند شد.
- فضای SGA باز پس گرفته می شود.
- فرایند های پس زمینه خاتمه می یابند.
- توسط دستور زیر انجام می شود
shutdown transactional
SHUTDOWN IMMEDIATE
- هیج اتصال جدیدی به پایگاه داده پذیرفته نمی شود.
- تمامی تراکنش های در حال اجرا Roll Back می شوند.
- جلسات کاربران خاتمه می یابند.
- Header فایل های پایگاه داده بروز می شوند و سپس Close خواهند شد.
- فضای SGA باز پس گرفته می شود.
- فرایند های پس زمینه خاتمه می یابند.
- توسط دستور زیر انجام می شود
shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SHUTDOWN ABORT
- هیج اتصال جدیدی به پایگاه داده پذیرفته نمی شود.
- هیچ تراکنش در حال اجرایی Roll Back نخواهد شد.
- جلسات کاربران خاتمه می یابند.
- فضای SGA باز پس گرفته می شود.
- فرایند های پس زمینه خاتمه می یابند.
- Instance Recovery در زمان راه اندازی (startup) پایگاه داده لازم است.
- توسط دستور زیر انجام می شود
shutdown abort
ORACLE instance shut down.
اما از کدام حالت SHUTDOWN استفاده کنیم :
- حالت IMMEDIATE شاید، مناسب ترین حالت باشد، زیرا که در این حالت تراکنش ها Commit و یا Roll Back می شوند و جلسات کاربران پس از تکمیل شدن تراکنش ها خاتمه می یایند.
- حالت NORMAL به دلیل اینکه کاربران باید خودشان Logout کنند، در فرایند SHUTDOWN شدن تداخل ایجاد می کند.
- حالت TRANSACTIONAL وابسه به تکمیل شدن تراکنش های کاربران می باشد.
اگر پایگاه داده در حالت OPEN باشید و شما بخواهید حالت پایگاه داده را به NOMOUNT یا MOUNT تغییر دهید، خطای زیر نشان داده می شود، مبنی بر اینکه پایگاه داده در حال حاظر OPEN است و باید نخست آنرا SHUTDOWN کنید.
ORA-01081: cannot start already-running ORACLE – shut it down first
توجه داشته باشید که برای اجرای هر یک از دستور های بالا باید با کاربری با مجوز SYSDBA وارد شوید. توسط فرمان sqlplus تحت خط فرمان سیستم عامل، از فرمت زیر استفاده کنید.
sqlplus / as sysdba