数据库的参数文件通常称为初始文件(init file),或init.ora文件。从Oracle9i Release 1以来,对于存储数据库的参数设置,引入了一个有很大改进的新方法:服务器参数文件(server parameter file),或简称为SPFILE。这个文件的默认名为spfile<ORACLE_SID>.ora。如果没有参数文件,就无法启动一个Oracle数据库,因为数据库启动的第一步就是读取参数文件。参数文件存放着数据库的一些基本信息,比如Db_name, control file路径,还有些内存分配的大小等
Init.ora 文件是一个纯文本文件,是一系列的键值对,一般放在%Oracle_home%/database下面.
需要注意,参数文件不必放在特定的位置上。启动一个实例时,可以在启动命令上使用pfile=filename选项。如果你想在数据库上尝试不同的init.ora参数,来看看不同设置带来的影响,这就非常有用。
init.ora文件不一定位于数据库服务器上。之所以会引入spfile,原因之一就是为了补救这种情况。试图启动数据库的客户机上必须有遗留的参数文件,这说明,如果你运行一台UNIX服务器,但是通过网络使用一台Windows台式机上安装的SQL*Plus来管理,这台计算机上就需要有数据库参数文件。
Spfile克服了init.ora多版本存在于客户端的问题,维护起来更为统一和方便。它是一个二进制文件,通过alter system命令可以将值写入spfile中
Spfile 一般存放在位置: %oracle_home%/database.
Spfile 和 init.ora转换
SQL>create spfile from pfile
这里,我之前遇到过一个例子,由于spfile中的参数出现了问题,当启数据库时,报错
ORA-00119: invalid specification for system parameter LOCAL_LISTENER
这是因为“local_listener”的参数不对,可能因为换了网络,IP发生了变化
下面,就改正这个参数
1,SQL>create spfile from pfile;
2,在 %oracle_home%/database,找到以init<Oracle_SID>.ora命名的pfile,用记事本打开
*.local_listener='(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=ip)))',把IP 变成当前的IP
3,修改完后,以pfile启动数据库
SQL>startup pfile=<path>
数据库成功启动
4,创建spfile, create spfile from pfile;