استاپ و استارت دیتابیس اوراکل(startup – shutdown)

استارت دیتابیس، با اتصال به محیط 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 را مشاهده می کنید.

نکته 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 را مشاهده می کنید.

نکته: در صورت خرابی و یا از دست رفتن کنترل فایل، دستور 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 را مشاهده می کنید.

نکته: در صورت خرابی و یا از دست رفتن 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 استفاده می کنند، استفاده از این دستور، توصیه نمی شود.

ارتباط با نویسنده:vahidusefzadeh@ کانال تخصصی اوراکل و لینوکس: OracleDB@

پاسخی بگذارید

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