什么是Spfile、Pfile?
spfile是存储初始参数的文件,oracle中有大约200多个初始参数,都存在这里
pfile的文件也是存储初始参数的文件
两者的区别是,spfile是server端维护的,pfile是客户端维护的,spfile只能通过系统更改,pfile 可以使用文本文件打开后手工修改。
9i后才有spfile,以前的版本是没有spfile只有pfile,后来的版本,两个文件并存。
----------------------------------------------------------------------------------------------------
oracle10g之Spfile与Pfile区别:
1、相同的是
spfile和pfile都是数据库的参数文件
2、不同的是
pfile是到8i为止的主要参数文件,可以用vi编辑,修改后重启oracle即生效。
从9i开始,Oracle采用了一个spfile文件,是一个不能用文本编辑器编辑的二进制文件。
另:概念
spfile:server parameter file服务器参数文件(spfile<sid>.ora)
pfile:传统参数文件(init<sid>.ora)
init.ora:遗留参数文件
3、使用pfile的好处
(1)Spfile 改正了pfile管理混乱的问题,在多节点的环境里,pfile会有多个image,启动时候需要跟踪最新的image。这是个烦琐的过程。
(2)用spfile以后,所有参数改变都写到spfile里面(只要定义 scope=spfile或both),参数配置有个权威的来源。
(3)更加安全。
4、如何查看当前系统使用的是spfile还是pfile
selectisspecified,count(*) from v$spparameter group by isspecified;
如果 isspecified里有true,表明用spfile进行了指定配置
如果全为false,则表明用pfile启动
5、查看spfile和pfile的存储位置
show parameterspfile
show parameterpfile
两个命令的结果一致,因为oracle每次只能读取一个参数文件启动。
注:spfile缺省目录:
---unix下:$oracle_home/dbs/
---NT下:%oracle_home%\database
在widows系统下,虽然创建数据库时,默认会将spfile创建到%oracle_home%\dbs\目录下,但这个目录不是缺省目录。如果spfile发生变化后,也不会再到此目录下查找了,还是会到spfile缺省目录下查找spfile。
6、spfile的搜索顺序:
1)spfile<oracle_sid>.ora,
2)spfile.ora,
3)init<oracle_sid>.ora,
启动数据库时,oracle会按照以上顺序搜索以上目录,读取相关文件并生效
7、oracle修改内存的方法
1)备份好原始的SPFILE和PFILE文件;
2)利用SPFILE生成PFILE:
SQL> create pfile fromspfile;
生成在默认目录,也可显示指定目录,该文件一般以init开头,如‘initdsgtest.ora’
3)修改PFILE文件,所要修改的参数名称如果记不住可以使用show parameters来查看;
4)指定PFILE启动数据库,查看修改的参数是否启用
SQL>shutdown immediate;
SQL>startuppfile='/opt/oracle/product/10.2.0/db_1/dbs/initdsgtest.ora';
此处如果PFILE在默认目录则不用加路径,直接文件名即可。
5)数据库启动后用show parameters查看修改的参数是否生效,如果生效继续下一步,否则检查重复前面步骤;
6)用PFILE生成SPFILE,指令为:
SQL>create spfile frompfile='/opt/oracle/product/10.2.0/db_1/dbs/initdsgtest.ora';
此处如果PFILE在默认目录则不用加路径,直接文件名即可。
7)停止数据库,用SPFILE启动:
SQL>startup;
8)数据库启动后用show parameters查看修改的参数是否生效,如果已经是修改过的值则大功告成,中途每次使用create命令前后注意观察所创建文件的修改时间。
另:
1、动态修改参数
alter system set parameter=Value scope=spfile|both|memory
2、Startup nomount(启动instance)时需要读取spfile或者pfile,两者共存的话,spfile优先
什么时候startup nomount呢?
当control file丢失一个或多个的时候。
关于init.ora.XXXXXXXX
init.ora.XXXXXXXX在$ORACLE_BASE/admin/{SID}/pfile/目录下。
当database 通过DBCA (Database creation assistant)创建的时候, DBCA将创建一个init.ora文件用来创建database,这个时候,他将利用刚才创建的init.ora文件来创建spfile,然后再修改init.ora文件名到一个类似init.ora.XXXXXXXX。
XXXXXXXX is a timestamp of a sort。This init.ora.XXXXXXXX will not be used byOracle afterwards, so modifiying it will not change the init parameters。