ไฟล์ initSID.ora และ spfileSID.ora (PFILE,SPFILE) คืออะไร

RobinVan's picture

ไฟล์  initSID.ora เป็นไฟล์ Parameter File (PFILE) เก็บพารามิเตอร์ของฐานข้อมูลแยกตามฐานข้อมูลแต่ละตัวเพื่อใช้ในการเปิดฐานข้อมูล
ในunix initSID.ora จะ Default ที่ Directory $ORACLE_HOME/dbs/
ซึ่งชื่อไฟล์ จะเปลี่ยนแปลงไปตามชื่อ Database เช่น  Database ชื่อ  CRM   ไฟล์ก็จะชื่อ  initCRM.ora
ไฟล์  initSID.ora  ให้จำง่ายๆว่า เป็นไฟล์แบบคงที่คือ ถ้ามีการเปลี่ยนแปลง ต้องมีการ Restart Database Parameter ใหม่ถึงจะทำงาน

 

ไฟล์ spfileSID.ora เป็นไฟล์ parameter ที่อยู่ในรูปของ binary ภายใน SPFile จะเก็บค่าพวก parameter ที่สามารถเปลี่ยนแปลงได้
ขณะเปิดฐานข้อมูลอยู่ ไฟล์ spfileSID.ora จึงไม่สามารถเข้าไปแก้ได้โดยตรง SPFile เพิ่งมีใน oracle 9i ขึ้นไป version ก่อนหน้านี้
มีเฉพาะ PFile

การจัด parameter ของฐานข้อมูล
การเรียกดู
  1) เปิดไฟล์ vi หรือ cat ไฟล์ initSID.ora หรือ spfileSID.ora โดยตรงใน directory $ORACLE_HOME/dba/
  2) คำสั่ง show parameter ชื่อparameter เช่น
      SQL> show parameter db_block_size
 NAME                                 TYPE        VALUE
 ------------------------------------ ----------- ------------------------------
 db_block_size                        integer     8192       
  3) เรียกดูจาก view v$system_parameter ยกตัวอย่างเช่น
 select name,value
 from v$system_parameter
 where name like '%db_block_size%'

 NAME                  VALUE
 db_block_size  8192
  4) ผ่าน Oracle Enterprise Manager (EM)
       เข้าไปดูในส่วนของ Initialization Parameter
วิธีการแก้ไข
  1) ผ่าน Sql Command
       ALTER SYSTEM SET parameter_name=value [SCOPE=BOTH|MEMORY|SPFILE]
  2) แก้ไขผ่าน Oracle Enterprise Manager

การสร้าง spfile
create spfile='oracleoradataadminpfilespfileCRM.ora'
from pfile='oracleoradataadminpfileinitCRM.ora' ;

  

สรุป SPFILE,PFILE

 -InitSID.ora (PFILE) เพิ่งมีใน Version 9i
-InitSID.ora (PFILE) เป็นไฟล์แบบคงที่ จะมีผลต่อเมื่อ Restart Database
 spfileSID.ora (SPFILE) เปลี่ยนแปลงได้ขณะเปิด Database
-SPFILE ไม่สามารถแก้ไขโดยตรง เพราะมันเป็นไฟล์ที่มี Header และ Footer โดยเนื้อไฟล์เป็น Binary
 ต้องแก้ไขผ่าน System Command (alter system command)
- PFILE เป็น text file ,SPFILE เป็น binary file

ลำดับความสำคัญ
  spfile มาก่อน  pfile
  oracle จะให้ความสำคัญ spfile ก่อน
  ถ้าไม่มี spfile ก็จะหา pfile ซึ่งสังเกตุดูวันที่ของไฟล์ ตัวที่ใช้อยู่มักจะมี ได้รับการ update ล่าสุดเสมอ

Create pfile
1) Create pfile='/path/pfile' from spfile;
2) Shutdown
3) startup pfile='/path/pfile'

Create spfile
1) create spfile from pfile='/path/pfile'
  spfile จะไปอยู่ที่ $ORACLE_HOME/dbs/
2) shutdown
3) startup (ไม่ต้องใส่ spfile  เพราะจะให้ความสำคัญอันดับแรกอยู่แแล้ว)  หรือ
    จะใส่ก็ได้  startup pfile='/path/spfile';

เช็คดูว่าตอนนี้เราใช้ spfile หรือ pfile
1)
select isspecified, count(*) from v$spparameter group by
isspecified;

ISSPEC COUNT(*)
------ ----------
TRUE 40
FALSE 254
บางค่าใน view มี ISSPECIFIED = TRUE  แสดงว่ตอนเราใช้ spfile
2)
select isspecified, count(*) from v$spparameter group by
isspecified;

ISSPEC COUNT(*)
------ ----------
FALSE 289

ไม่มี TRUE ตรงนี้เลยไม่ใช้ spfile ครับ *** เราใช้ pfile อยุ่

 หรือ
select decode(count(*), 1, 'spfile', 'pfile' )
from v$spparameter
where rownum=1
and isspecified='TRUE';

DECODE
------
spfile

 

==================
BACKUP SPFILE
=================
CREATE SPFILE='/oradata/spfileORCL.ora' from PFILE='/oradata/initORCL.ora';

 

 

Powered by Devwinner.com 2011 - Design by DevWin Team