ไฟล์ 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';
