تنظیم پارامترهای اوراکل (Oracle Paramterer File)

تنظیم پارامترهای اوراکل (Oracle Paramterer File)

Parameter File در اوراکل به دو صورت فایل اسکی و دودویی هستند که قابل خواندن با ویرایشگر های متنی مانند vi و notepad هستند که نام گذاری آنها بصورت initORACLE_SID.ora است. ORACLE_SID معرف نام منحصر به فرد برای هر پایگاه داده در اوراکل است. این فایل را PFILE می گویند. (ممکن است یک instance یک پایگاه داده را داشته باشد که آن پایگاه داده SID خودش را دارد اما ممکن است یک instance چندین پایگاه داده را داشته باشد که در این حالت که بصورت کلاستر شده هستند هر پایگاه داده دارای SID منحصر به فرد خودش است.). نوع دیگر پارامتر فایل ها که بصورت باینری هستند و تنها توسط خود اوراکل قابل خواندن است Server Parameter File نامیده می شوند و نام فایل آنها SPFILE.ora است.زمانی که یک instance شروع به start شدن،initialization parameters از یک فایل را می خواند. پس این فایل ها شامل پارامتر های initialization هستند و در صورت عدم وجود یک initialization parameter در این فایل ها، اوراکل از مقدار پیش فرض آن استفاده می کند. پیشنهاد می شود که از SPFILE استفاده شود. می توان آنرا از فایل متنی PFILEایجاد کرد. تفاوت اصلی PFILE و SPFILE در این است که SPFILE بصورت باینری بوده و امکان تغییر دستی آن نیست و اینکار توسط دستور ALTER SYSTEM در session ایجاد شده امکان پذیر است. محل ذخیره سازی فایل متنی PFILE در سیستم عامل های لینوکسی و ویندوزی بصورت شکل زیر است.

هر خط PFILE شامل یک خط بصورت زیر است. اولین خط زیر برای پارامتر هایی است که تک مقداری هستند و اگر پارامتری مانند پارامتر تعیین کننده مسیر Control File ها که بصورت چند مقداری هستند بصورت خط دوم استفاده می شوند.

parameter_name=value

…,parameter_name=value,value

همچنین می توان برای پارامتر های چند مقداری مانند پارامتر تعیین کننده مسیر Control File ها می توان بصورت تک مقداری اما هر مقدار را در یک خط نوشت.

‘control_files=’/u01/app/oracle/oradata/orcl/control01.ctl

‘control_files=’/u01/app/oracle/oradata/orcl/control02.ctl

‘control_files=’/u01/app/oracle/oradata/orcl/control03.ctl

در صورتی که instance نتواند فایل SPFILE.ora را در مسیر پیش فرض و تعیین شده اس پیدا کند، از PFILE استفاده می کند. همچنین می توان با استفاده از دستور STARTUP برای start کردن instance از پارامتر pfile مسیر فایل PFILE را تعیین کرد تا اوراکل از این فایل پارامتر ها را بخواند. فایل init.ora دارای پارمترهایی است که در زمان startup شدن استفاده می شوند.برای مطالعه بیشتر این لینک را بخوانید.

همانطور گه گفته شده می توان در هنگام start کردن یک instance با استفاده از دستور STARTUP از پارامتر pfile در دستور مسیر فایل PFILE یعنی init.ora را به instance برای خواندن initialization parameter معرفی کرد.

startup pfile=PATH_TO_INIT.ora_FILE

استفاده از SPFILE بجای PFILE پیشنهاد می شود چونکه یک فایل باینری و تنها توسط خود اوراکل و دستورات آن (طبیعتن توسط یک کاربر مجاز به این کار) قابل تغییر هستند که این بر خلاف فایل متنی PFILE است که با یک ویرایشگر ساده متنی قابل تغییر است. با استفاده از دستور ALTER SYSTEM میتوان یک پارامتر را تغییر داد و با استفاده از دستور SHOW PARAMETERS مقدار یک پارامتر را برای Session کنونی مشاهده کرد و با استفاده از دستور SHOW SPPARAMTERS برای مشاهده مقدار یک پارامتر از فایل SPFILE مشاهده کرد.

show parameters;      #for show all paramters

show parameters PARM_NAME;      #for show a specific paramter OR match name

show parameters;      #for show all paramters

show parameters PARM_NAME;      #for show a specific paramter OR match name

بصورت زیر از دستور ALTER SYSTEM می توان مقدار یک پارامتر را تغییر داد.

;alter system set PARAM_NAME=VALUE

دو نوع initialization parameters وجود دارد :

  • Dynamic initialization parameters : تغییرات این گونه initialization parameters به سرعت اعمال می شوند و قابل تغییر برای Oracle Instance کنونی هستند.
  • Static initialization parameters : برای Oracle Instance کنونی قابل تغییر نسیتند و برخلاف حالت قبلی که به سرعت اعمل می شد، اینگونه پارامتر ها باید بصورت دستی به فایل اعمال شوند و سپس حتمن باید پایگاه داده را Restart کرد

همانطور گه گفته شد با استفاده از دستور ALTER SYSTEM SET parm_name=value می توان یک پارمتر را تغییر یا تنظیم کرد. مورد دیگری که می توان در دستور ALTER SYSTEM استفاده کرد SCOPE است. که scope یا حد و وسعت یک تغییر را نشان تعیین می کند که به صورت یکی از حالت های زیر می شود استفاده کرد.

  • SCOPE=SPFILE : تغییرات تنها در SPFILE اعمال می شود. تغییرات در instance کنونی اعمال نمی شود بلکه برای هر دو نوع Dynamic و Static در Startup بعدی اعمال خواهند شد و تنها Scope مجاز برای پارامتر های استاتیک است.
  • SCOPE=MEMORY : تغییرات در Memory اعمال می شوند و بلافاصله در Instance کنونی اعمال خواهند شد. برای پارمتر های پویا، تغییرات به سرعت اعمال می شوند ولی بصورت دائمی نیستند بخاطر اینکه اینگونه تغییرات در حافظه اعمال می شوند نه در SPFILE. اینگونه scope مجاز برای پارامتر ها استاتیک نیستند.
  • SCOPE=BOTH : تغییرات هم برای SPFILE و هم برای MEMORY اعمال می شوند. تغییرات برای instance فعلی و به سرعت اعمال خواهند شد و بر خلاف حالت MEMORY تغییرات به سرعت و بصورت دائمی برای پارامتر های پویا موثر هستند. و همچنین برای پارامتر های استاتیک مجاز نمی باشد.

مورد دیگری که می توان در دستور ALTER SYSTEM استفاده کنید،COMMENT است. با این مورد یک متن را بعنوان توضیح به پارامتر بروز شده (تغییر کرده) اختصاص می دهید.برای مطالعه بیشتر این لینک را بخوانید.

در دستور ALTER SYSTEM مورد SET الزامی ولی موارد SCOPE و COMMENT اختیاری هستند.

همچنین با استفاده از view ای به نام V$PARAMETER می توان مقادیر پارامتر های فایل SPFILE را مشاهده کرد. همچنین با استفاده از view ای به نام V$SPPARAMETER محتوای کنونی SPFILE را مشاهده کرد. ستون ISSPECIFIED اگر TRUE باشد نشان می دهد که پارامتر در فایل SPFILE تعیین شده است و اگر FALSE باشد یعنی پارامتر تعیین نشده است.

‘select name,value from v$spparameter where isspecified=’TRUE

چگونه در اوراکل محل Server parameter file را پیدا کنیم