Oracle数据库的参数文件包含两个文件:

一个是spfile二进制文件名字为spfilesid.ora(其中sid=你数据库的实例名称)。

另一个是pfile文本文件的参数文件,名字为initsid.ora(其中sid=你数据库的实例名称)。

默认情况下数据库是只有一个参数文件的,那就是spfile,它是一个二进制文件,通常情况下,我们是无法查看与编辑它的,如果要查看与编辑它的话,我们应startup open打开数据库,用create pfile from spfile;语句来通过spfile创建pfile,再用vi工具修改这个新文件pfile,(例如:cd $ORACLE_BASE/product/10.1.0/db_1/dbs; 再用vi initora10.ora(这里用实例为ora10) 再后通过你修改后的pfile去创建最新的spfile, 用create spfile from pfile;这样新的spfile就产生了。

所以一个新的数据库实例创建我们首要参数文件。

通过上面所说的create pfile from spfile来备份我们的参数文件;如查spfile坏掉了我们可以通过pfile来启动数据库;方法如下

$create pfile from spfile;

$shutdown immediate;

$cd $ORACLE_BASE/product/10.1.0/db_1/dbs;

在这个现在现在是有两个参数文件的一个initora10.ora(pfile),一个spfileora10.ora)

$rm -rf spfileora10.ora

$mv initora10.ora initora10.ora.back(为什么还要移动这个pfile呢,为了实验明显就得把他也改名或移走,因为如果数据库在有pfile的情况下,就算spfile坏掉了,数据库也是能启来的,数据库会第一去找spfile再找pfile,所以我们把两个都干掉。看数据库还能启来吗???

$startup open这个时间就会报错:


报这个错后。实际数据库就等于没有连接到数据库了要是重新连接就得

$sqlplus / as sydba;

现在我们要指定由pfile启动数据库

$startup open pfile=/u01/app/oracle/product/10.1.0/db_1/dbs/initora10.ora.back;

哈哈这下数据库就启来了


我们现在是用的pfile启动的数据库所以还得创建spfile

$create spfile from pfile;

这时会说找不到pfile因为我们改名改了名字所以在创建spfile的时间也得指定全路径与文件名:

这样下次启动数据库,他就找得到spfile了;