PFILE dan SPFILE

Parameter file is one of important component in Oracle Database. This file contains all parameter information that is used in Oracle. There are 2 type of parameter file in Oracle: PFILE and SPFILE.

PFILE is stored in text file format under $ORACLE_HOME/dbs/init$ORACLE_SID.ora. SPFILE is binary file under $ORACLE_HOME/dbs/spfile$ORACLE_SID.ora. We can edit PFILE by using text editor tools but not PFILE. 

When starting up database, Oracle will look for parameter file in below sequence:
– If SPFILE is found in $ORACLE_HOME/dbs, database will be started using SPFILE
– If SPFILE is not found, but PFILE is found in $ORACLE_HOME/dbs, database will be started using PFILE
– If both files are not found, database can’t be started

To check if database is started using PFILE or SPFILE, we can check from the SPFILE parameter. If this parameter value is null, it means that database was started using PFILE. 

We can update the parameter value from oracle client by using ALTER SYSTEM. There are 3 different scope of parameter change:

MEMORY: The parameter change will only take effect for the life of the instance. Once we restart the database, the change will be reverted
SPFILE: The parameter change will only be made in the SPFILE and take effect only after next instance restart.
BOTH: The parameter change will take place in both MEMORY and SPFILE. The change take effect from the time it changed and even after next instance restart.

When doing alter system scope=both or scope=spfile, we may get ORA-32001: write to SPFILE requested but no SPFILE specified at startup error if we don’t use SPFILE in the current instance.

We can create PFILE from SPFILE and vice versa with below command

SQL> create PFILE from SPFILE;
SQL> create SPFILE from PFILE;

Above command will create a PFILE or SPFILE at $ORACLE_HOME/dbs. If we want them to be created in a custom location and name, we can use below command

SQL> create PFILE='/tmp/pfileDB.ora' from SPFILE;
SQL> create SPFILE='/tmp/spfileDB.ora' from PFILE;

 

Database tidak mau start setelah Upgrade/Patch

Ketika melakukan patch dari oracle 10.2.0.1 ke 10.2.0.4 pada environment oracle linux, saya menemukan error bahwa database tidak dapat dinaikkan dengan error

ORA-01092:
ORACLE instance terminated. Disconnection forced.

Hasil penyelidikan terhadap alert log,ditemukan bahwa ada error:

ORA-00704: bootstrap process failure
ORA-39700: database must be opened with UPGRADE option
Mon Jun 30 11:53:43 2008
Error 704 happened during db open, shutting down database
USER: terminating instance due to error 704
Instance terminated by USER, pid = 582062
ORA-1092 signalled during: ALTER DATABASE OPEN...

Error di atas diakibatkan karena adanya perbedaan pada dictionary setelah upgrade/patching. Dengan demikian kita perlu melakukan beberapa langkah perbaikan

Langkah-langkah untuk memperbaiki error ini adalah sebagai berikut:

  1. SQL>  startup upgrade

 

2.  Jalankan script sql berikut yang ada di direktori $ORACLE_HOME/rdbms/admin

catupgrd.sql

catalog.sql

catproc.sql

SQL> @catupgrd.sql
SQL> @catalog.sql
SQL> @catproc.sql

3. Database sudah  kembali berfungsi normal 🙂

Raw device dan filesystem

Apa itu raw device?

Raw device/raw partition adalah sebuah partisi disk yang tidak dimount dan tidak bisa ditulis melalui unix filesystem. Tetapi raw device ini dapat diakses dengan sebuah character-special dvice driver. Cara penulisan raw device tergantung kepada masing-masing aplikasi karena tidak ada filesystem yang menggantikan tugas aplikasi untuk melakukannya. Raw device biasanya dikenali pada direktori /dev. Biasanya raw device ditampilkan dalam bentuk:

crw-rw-rw- 1 root system 15, 0 Mar 12 09:45 rfd0

atau juga

brw-rw-rw- 1 root system 15, 0 Apr 16 15:42 /dev/fd0

Mengapa menggunakan raw device?

Raw device dapat menguntungkan performa karena semua penulisan I/O akan melompati UNIX buffer cache. Data akan langsung ditransfer dari Oracle buffer cache ke disk.

Kapan menggunakan raw device?

Jika ada masalah I/O pada level UNIX(I/O bottleneck),sebaiknya menggunakan raw device agar performa database menjadi lebih baik. Bagaimana membuat tablespace menggunakan raw device?

create tablespace raw_tabspace datafile '/dev/raw1' size 30712K datafile '/dev/raw2' size 30712K

File apa saja yang sebaiknya disimpan di raw partition?

Redo log file merupakan salah satu file yang memenuhi kriteria untuk disimpan di raw device. Hal ini dikarenakan redo log merupakan file yang sering ditulis, dan ditulis secara sequential. Tetapi archivelog tidak dapat ditulis ke raw partition,melainkan harus ke UNIX filesystem.