استارت دیتابیس، با اتصال به محیط sqlplus و اجرای دستور startup قابل انجام است:
[oracle@ol7 ~]$ sqlplus “/as sysdba”
SQL*Plus: Release 19.0.0.0.0 – Production on Mon Apr 29 11:16:58 2019
Version 19.2.0.0.0
Copyright (c) 1982, 2018, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup
ORACLE instance started.
Total System Global Area 1728050040 bytes
Fixed Size 8897400 bytes
Variable Size 1308622848 bytes
Database Buffers 402653184 bytes
Redo Buffers 7876608 bytes
Database mounted.
Database opened.
SQL>
این دستور(startup)، با طی سه مرحله به کارش خاتمه خواهد داد:
1.nomount(started)
2.mount
3.open
قرار گرفتن دیتابیس در هر کدام از این وضعیتها، کاربردهایی را به همراه دارد در ادامه، هر کدام از این stateها را مورد بررسی قرار خواهیم داد.
NOMOUNT
با اجرای دستور startup nomount، در این state قرار خواهیم گرفت:
SQL> startup nomount
ORACLE instance started.
Total System Global Area 1728050040 bytes
Fixed Size 8897400 bytes
Variable Size 1308622848 bytes
Database Buffers 402653184 bytes
Redo Buffers 7876608 bytes
SQL>
در جدول زیر خواهیم دید که با اجرای دستور startup nomount، چه مراحلی طی می شود همچنین نمونه هایی از کاربرد قرار گرفتن instance در این state را مشاهده می کنید.
![](http://www.usefzadeh.com/wp-content/uploads/2019/05/image-98.png)
نکته 1: در صورتی که فایل راه انداز(pfile یا spfile) در مسیر ORACLE_HOME/dbs$ موجود نباشد، با خطای زیر مواجه خواهیم شد:
SQL> startup nomount;
ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file ‘/19c/home/dbs/initdb19c.ora’
نکته 2: ممکن است توقف دستور startup nomount، به جهت تنظیم نادرست پارامترها در فایل راه انداز رخ دهد:
SQL> startup nomount;
ORA-01078: failure in processing system parameters
LRM-00121: ‘deb’ is not an allowable value for ‘audit_trail’
MOUNT
استفاده از گزینه mount به همراه دستور startup، دیتابیس را در وضعیت mount قرار خواهد داد:
SQL> startup mount
ORACLE instance started.
Total System Global Area 1728050040 bytes
Fixed Size 8897400 bytes
Variable Size 1308622848 bytes
Database Buffers 402653184 bytes
Redo Buffers 7876608 bytes
Database mounted.
نکته: برای مشاهده وضعیت جاری instance، می توان از دستور زیر استفاده کرد:
SQL> select status from v$instance;
STATUS
————
MOUNTED
در جدول زیر خواهیم دید که با اجرای دستور startup mount، چه مراحلی طی خواهد شد همچنین نمونه هایی از کاربرد قرار گرفتن instance در این state را مشاهده می کنید.
![](http://www.usefzadeh.com/wp-content/uploads/2019/05/image-99.png)
نکته: در صورت خرابی و یا از دست رفتن کنترل فایل، دستور startup mount با خطای زیر متوقف خواهد شد:
SQL> startup mount;
ORACLE instance started.
Total System Global Area 3741317648 bytes
Fixed Size 8903184 bytes
Variable Size 889192448 bytes
Database Buffers 2835349504 bytes
Redo Buffers 7872512 bytes
ORA-00205: error in identifying control file, check alert log for more info
OPEN
اگر به همراه دستور startup، از گزینه مشخصی استفاده نشود، به صورت پیش فرض، گزینه open لحاظ خواهد شد پس دو دستور startup و startup open عملکرد مشابه ای دارند:
SQL> startup
ORACLE instance started.
Total System Global Area 1728050040 bytes
Fixed Size 8897400 bytes
Variable Size 1308622848 bytes
Database Buffers 402653184 bytes
Redo Buffers 7876608 bytes
Database mounted.
Database opened.
در جدول زیر خواهیم دید که با اجرای دستور startup open، چه مراحلی طی می شود همچنین نمونه هایی از کاربرد قرار گرفتن instance در این state را مشاهده می کنید.
![](http://www.usefzadeh.com/wp-content/uploads/2019/05/image-100.png)
نکته: در صورت خرابی و یا از دست رفتن redo log fileها، دستور startup با خطایی مشابه با خطای زیر متوقف خواهد شد:
SQL> startup open
ORACLE instance started.
Total System Global Area 3741317648 bytes
Fixed Size 8903184 bytes
Variable Size 889192448 bytes
Database Buffers 2835349504 bytes
Redo Buffers 7872512 bytes
Database mounted.
ORA-03113: end-of-file on communication channel
Process ID: 5449
Session ID: 497 Serial number: 31000
همچنین خرابی و یا مفقودی دیتافایل، خطایی مشابه با خطای زیر را در پی دارد:
مفقودی دیتافایل:
SQL> startup open
ORA-01157: cannot identify/lock data file 1 – see DBWR trace file
ORA-01110: data file 1:
‘/19c/base/oradata/DB19C/datafile/o1_mf_system_gdtbtx40_.dbf’
ناسازگاری هدر دیتافایل:
SQL> startup open
ORA-01113: file 1 needs media recovery
ORA-01110: data file 1: ‘/home/oracle/o1_mf_system_gdtbtx40_.dbf’
دستور alter database و جابجایی بین stateها
جابجایی بین stateهای مختلف دیتابیس، با کمک دستور alter database هم قابل انجام است. برای مثال، با اجرای دستورات زیر، از وضعیت nomount به وضعیت mount و در نهایت به وضعیت open منتقل خواهیم شد:
SQL> startup nomount
ORACLE instance started.
Total System Global Area 1728050040 bytes
Fixed Size 8897400 bytes
Variable Size 1308622848 bytes
Database Buffers 402653184 bytes
Redo Buffers 7876608 bytes
SQL> alter database mount;
Database altered.
SQL> alter database open;
Database altered.
آشنایی با دستور shutdown برای استاپ کردن دیتابیس
برای استاپ کردن دیتابیس اوراکل، می توان با اتصال به محیط sqlplus، دستور shutdown را اجرا نمود:
[oracle@ol7 ~]$ sqlplus “/as sysdba”
SQL*Plus: Release 19.0.0.0.0 – Production on Mon May 20 05:50:04 2019
Version 19.3.0.0.0
SQL> shutdown
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL>
با اجرای این دستور، instance در وضعیت idle قرار خواهد گرفت:
[oracle@ol7 ~]$ sqlplus “/as sysdba”
SQL*Plus: Release 19.0.0.0.0 – Production on Mon May 20 05:51:55 2019
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
Connected to an idle instance.
SQL>
اجرای دستور shutdown، می تواند بسیار زمانبر باشد ممکن است در یک دیتابیس عملیاتی، اجرای این دستور، چندین ساعت تا چند روز به درازا بکشد با در نظر داشتن این مسئله، باید به فکر راهکاری بود تا سرعت down کردن(انداختن) دیتابیس را افزایش داد در ادامه به این مسئله می پردازیم.
همانند دستور startup، این دستور را هم می توان به همراه گزینه های مختلفی اجرا نمود:
NORMAL
TRANSACTIONAL
IMMEDIATE
ABORT
هر کدام از این گزینه ها، به میزانی بر روی سرعت استاپ و استارت شدن دیتابیس اثرگذار خواهند بود که در ادامه با جزییات بیشتری به هر کدام از آنها می پردازیم.
[SHUTDOWN [NORMAL
با اجرای این دستور:
1.امکان ایجاد کانکشن جدید در دیتابیس از بین خواهد رفت:
sqlplus “/as sysdba”
Connected.
SQL> select sysdate from dual;
ORA-01012: not logged on
2.کاربرانی که به دیتابیس متصل هستند، کماکان می توانند به کارشان ادامه داده و دیتابیس تا خروج این کاربران، متوقف نخواهد شد.
3.تراکنشهای در حال اجرا، تا زمانی که commit یا rollback نشوند، در دیتابیس در حال اجرا خواهند ماند و دستور shut normal تا اتمام تمامی تراکنشها، منتظر خواهد ماند.
4.پس از اتمام تراکنشها و خروج تمامی کاربران، checkpointای رخ خواهد داد و هدر database fileها بروز می شوند و نهایتا این فایلها close خواهند شد.
نکته: در صورتی که به همراه دستور shutdown، از گزینه مشخصی استفاده نشود، به صورت پیش فرض، گزینه normal لحاظ خواهد شد پس دو دستور shutdown و shutdown normal عملکرد مشابه ای خواهند داشت
SHUTDOWN TRANSACTIONAL
این دستور مشابه دستور shutdown normal می باشد با این تفاوت که اجرای دستور showdown TRANSACTIONAL، سبب خاتمه یافتن sessionهایی خواهد شد که تراکنشی را در حال اجرا ندارند.
SHUTDOWN IMMEDIATE
با اجرای این دستور:
1.کاربر جدیدی امکان لاگین به دیتابیس را نخواهد داشت.
2.تمامی تراکنشها rollback می شوند.
3.تمامی sessionهای حاضر در دیتابیس از بین خواهد رفت.
4.و در نهایت، با اجرای checkpoint، هدر database fileها بروز شده و این فایلها close خواهند شد.
عموما dbaها برای استاپ کردن دیتابیس، از این دستور استفاده می کنند.
SHUTDOWN ABORT
دستور shut abort فورا به فعالیت instance خاتمه خواهد داد و حتی هدر دیتافایلها را هم بروز نخواهد کرد به این جهت، با استارت مجدد دیتابیس، باید instance recovery انجام شود.
سرعت اجرای این دستور بسیار بالاست هر چند در محیطی که redo log fileها صرفا از یک member استفاده می کنند، استفاده از این دستور، توصیه نمی شود.