首先,说明SID是Oracle数据库的实例ID,用来唯一标识一个实例(通常也就是一个Oracle数据库)。
1,pfile文件是Oracle8i以前的启动参数文件(之后的9i,10g,11g中也能找到它)。以文本形式存在,可以用vi编辑器对其中参数进行修改。文件格式为init.ora或 initSID.ora;
文件位置在:在10.0.2\admin\实例名\pfile\文件夹下有个init.ora.xxxxxxxxxxx 文件,后面的xxxxxxxxxxx 是时间戳。
2, spfile用于Oracle9i之后的版本,以二进制文本形式存在,不能用vi编辑器对其中参数进行修改。文件格式为spfileSID.ora(spfile.ora的话就是所有实例通用的参数文件)。
(1)如果要对spfile文件进行修改,可以在数据库运行时采用SQL语言:
SQL> ALTER SYSTEM SET PARAMETER = 'VALUES';进行修改。
ALTER SYSTEM还有选项:SCOPE。SCOPE参数有三个可选值:MEMORY ,SPFILE , BOTHBOTH:改变实例及SPFILE
用spfile以后,所有参数改变都可以写到spfile里面(只要定义scope=spfile或both):
SQL> ALTER SYSTEM SET PARAMETER = 'VALUES' SCOPE=SPFILE;
(2)如果不方便使用SQL语句对spfile进行操作,可以先通过SQL语句: 'Q4NR3SQL> CREATE Spfile FROM pfile; 这种方法将二进制文本形式的spfile转换成文本形式的pfile格式,然后再用vi编辑器对其中的参数进行直观修改,以达到方便的目的。
修改完成之后还能通过语句 、将文本形式的pfile格式转换回二进制文本形式的spfile:
SQL> CREATE pfile FROM Spfile;
(3)Spfile改正了pfile管理混乱的问题,在多结点的环境里,pfile会有多个image,启动时候需要跟踪最新的image。spfile保证服务器每次的启动都是一致的,pfile可能会导致启动不一致。因为pfile可以在客户端启动。
3,spfile 可以在数据库运行时动态修改参数,有些不需要重启数据库,特殊的还要重启才能生效。
而pfile 不能动态修改数据库参数,文本编辑后必须重启数据库
4,启动时的查找顺序:
spfile<sid>.ora > spfile.ora > init<sid>.ora (也就是说spfile优先于pfile,而且本实例设置优先于全局设置)
也可以在启动时指定用哪个文件:
SQL>startup pfile='Your_Pfile.ora'
SQL>startup spfile='\product\11.1.0\db_1\database\SPFILE_SINKA.ORA' force