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了;