منبع اصلی نوشتار زیر در این لینک قرار دارد

Control File چیست

Control File یک فایل دودویی کوچک که اطلاع هایی از سیستم را نگه می دارد. این اطلاع ها شامل نام پایگاه داده، وضعیت پایگاه داده، آخرین مقدار SCN، مسیر فایل های فیزیکی (Data Files)، مسیر فایل Redo Log، و در صورت وجود Backup های RMAN مسیر آنها را مشخص می کند. در صورتی که بطور مثال یک DataFile جدید به اوراکل اضافه شود، Control File بطور خودکار بروز خواهد شد. زمان Startup شدن پایگاه داده، اوراکل به دنبال Control File می گردد و مقادیر لازم را از آن می خواند. در زمان نصب اوراکل (ایجاد یک پایگاه داده) حداقل یک Control File ایجاد می شود.بهتر است که بیش از یک Control File ودر مسیر های مختلف ایجاد شود. اطلاع های زیر در Control File قرار دارند :

  • نام پایگاه داده
  • زمان و تاریخ ایجاد پایگاه داده
  • نام و مسیر Datafile ها
  • نام و مسیر Redo Log ها
  • مقدار فعلی Sequence Number
  • اطلاع هایی از Checkpoint
  • و غیره

برای نشان دادن محل پیش فرض Control File (ها) از دستور زیر استفاده کنید.

show parameters control_file

یا از پرس و جوی زیر استفاده کنید.

;select name from v$controlfile

همانطور که می بینید سه Control File برای پایگاه داده وجود دارد. Control File یک فایل باینری است و نمی توان با ویرایشگر های معمول مانند vi,nano,notepad و غیره محتوای آنرا مشاهده کرد. همچنین محتوای آن بطور مثال با اضافه شدن یک Datafile به پایگاه داده بطور خودکار بروز می شود. اما در سیستم عامل های یونیکسی (لینوکس و سولاریس) از دستور string می توان برای مشاهده کردن محتوای آن استفاده نمود.

string /path/to/controfile.ctl | less

OR

string /path/to/controlfile.ctl | grep -i “STRING” # STRING for search in control file content

بطور مثال با توجه به شکل بالا و مسیر های مشخص

string /u01/app/oracle/orcl/control01.ctl | less

و بخشی از خروجی آن به صورت زیر است که نشان می دهد توسط ویژگی OMF یک سری Datafile اضافه شده است و نام و مسیر آنها بطور خودکار به Control File ها افزوده می شوند. یا دیگر Datafile های موجود (مثلا Datafile مربوط به Tablespace به نام SYSTEM)

توصیه می شود که بیش از یک نسخه در درایو های گوناگون از Control File داشته باشید. امکان افزودن یک Control File جدید، یا منتقل کردن به مسیری دیگر و یا حذف یک کنترل فایل وجود دارد.

ایجاد یک Control File جدید

همانطور که گفته شد در زمان نصب اوراکل و ایجاد پایگاه داده حداقل یک Control File ایجاد می شود و توصیه می شود این Control File در مسیر های مختلف (درایو های مختلف) ایجاد و نگه داری شوند تا در صورت خرابی یکی بتوان از دیگری برای راه اندازی پایگاه داده استفاده کرد. با استفاده از گام های زیر یک کپی از Control File را ایجاد می کنیم. (در این مثال در همان محل فعلی Control File کپی دیگری ایجاد می کنیم اما بهتر است در درایوی با کنترلر متفاوت ایجاد شود)

  • نختست با دستور زیر مشخص کنید که آیا پایگاه داده از SPFILE استفاده می کند.

show parameters spfile

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

  • با دستور زیر نام و مسیر Control File جدید را با افزودن به پارامتر control_file و با تعیین scope=spfile به سیستم معرفی کنید. چرا تنها spfile؟ نمی توان از both استفاده کرد چونکه تغییرات نمی تواند در memory باشند (این مطلب مطالعه شود)

برای افزودن نام و مسیر Control File جدید لازم است نام و  مسیر های Control Fileهای پیشین نیز وجود داشته باشند. هر مسیر میان ‘ ‘ و از مسیر بعدی با یک کاما جدا می شود.

  • در گام بعدی باید پایگاه داده را shutdown کرد. (مجوز sysdba لازم است)

shutdown immediate

سپس با دستور cp در یونکیس ها یا با استفاده از کلیک راست و Copy، یک کپی جدید را در مسیر تعیین شده در بالا (مشخص شده در کادر قرمز رنگ) ایجاد کرد. دستور host در محیط SQL PLUS باعث می شود بطور موقتی به ترمینال سیستم عامل بازگردید. و exit بعد دستور cp از محیط ترمینال سیستم عامل خارج شده و به SQL PLUS باز می گردد.

host

cp /u01/app/oracle/orcl/control01.ctl /u01/app/oracle/orcl/control04.ctl

exit

  • سپس سیستم را startup کنید.

startup

 انتقال یک Control File

روند کار مشابه همان چیزی است که در بالا داشتیم.

  • نخست باید تعیین کنیم که آیا پایگاه داده از SPFILE استفاده می کند.
  • دوم باید با دستور ALTER SYSTEM SET CONTROL_FILE، مسیر جدید را مشخص کنیم. (توجه کنیم نمی خواهیم کپی جدیدی ایجاد کنیم، پس نام و مسیر جدیدی افزوده نمی شود بلکه یکی از فایل های موجود را با نام خودش به مسیر جدیدی می بریم). باید تمامی نام ها و مسیر های موجود آورده شوند.
  • سوم باید پایگاه داده را SHUTDOWN کرد. (توسط دستور SHUTDOWN یا SHUTDOWN IMMEDIATE)
  • چهارم باید با دستور mv در یونیکس ها یا با راست کلیک و Cut کردن؛ فایل را به مسیر جدید ببریمم.
  • در نهایت پایگاه داده را با دستور STARTUP راه اندازی نمود.

حذف یک Control File

روند کار به صورت زیر می باشد

  • نخست باید با دستور ALTER SYSTEM SET CONTROL_FILE نام و مسیر Control File را از لیست نام ها و مسیر پاک کنید. (توجه کنید که مسیر ها میان ‘ ‘ و با کاما ازهم جدا می شوند.)
  • سپس پایگاه داده را shutdown کنید.
  • فایل را از مسیر مورد نظر در سیستم عامل پاک کنید.
  • پایگاه داده را startup کنید. 
خطای ORA-00205: error in identifying control file, check alert log for more info
مفهوم خطا اینکه در لیست پارامتر control_file نام و مسیری وجود دارد که فایل مطابق با آن در سیستم عامل وجود ندارد. یعنی فایل پاک شده است و موقع STARTUP پایگاه داده، اوراکل فایل فیزیکی مطابق با آن نام و مسیر را پیدا نمی کند. برای رفع مشکل تنها کافیست
  • نخست باید با دستور ALTER SYSTEM SET CONTROL_FILE نام و مسیر Control File را از لیست نام ها و مسیر پاک کنید.
  • سپس پایگاه داده را shutdown کنید.
  • پایگاه داده را startup کنید. 



برچسب ها : , , , , ,

به سیاره لینوکس امتیاز دهید

به اين صفحه امتياز دهيد