Spfile、Pfile的修改相关

来源:互联网 发布:刀塔传奇剑圣淘宝礼包 编辑:程序博客网 时间:2024/04/24 13:17

什么是Spfile、Pfile?

spfile是存储初始参数的文件,oracle中有大约200多个初始参数,都存在这里

pfile的文件也是存储初始参数的文件

两者的区别是,spfile是server端维护的,pfile是客户端维护的,spfile只能通过系统更改,pfile 可以使用文本文件打开后手工修改。

9i后才有spfile,以前的版本是没有spfile只有pfile,后来的版本,两个文件并存。

----------------------------------------------------------------------------------------------------

oracle10g之Spfile与Pfile区别:

1、相同的是

spfilepfile都是数据库的参数文件

2、不同的是

pfile是到8i为止的主要参数文件,可以用vi编辑,修改后重启oracle即生效。

9i开始,Oracle采用了一个spfile文件,是一个不能用文本编辑器编辑的二进制文件。

另:概念

spfileserver parameter file服务器参数文件(spfile<sid>.ora

pfile:传统参数文件(init<sid>.ora

init.ora:遗留参数文件

3、使用pfile的好处

1Spfile改正了pfile管理混乱的问题,在多节点的环境里,pfile会有多个image,启动时候需要跟踪最新的image。这是个烦琐的过程。
2)用spfile以后,所有参数改变都写到spfile里面(只要定义 scope=spfileboth),参数配置有个权威的来源。

3)更加安全。

4、如何查看当前系统使用的是spfile还是pfile

selectisspecified,count(*) from v$spparameter group by isspecified;


如果 isspecified里有true,表明用spfile进行了指定配置
如果全为false,则表明用pfile启动

5、查看spfilepfile的存储位置

show parameterspfile

show parameterpfile

两个命令的结果一致,因为oracle每次只能读取一个参数文件启动。

注:spfile缺省目录:
---unix
下:$oracle_home/dbs/
---NT
下:%oracle_home%\database

widows系统下,虽然创建数据库时,默认会将spfile创建到%oracle_home%\dbs\目录下,但这个目录不是缺省目录。如果spfile发生变化后,也不会再到此目录下查找了,还是会到spfile缺省目录下查找spfile

6spfile的搜索顺序:
1)spfile<oracle_sid>.ora

2)spfile.ora

3)init<oracle_sid>.ora

启动数据库时,oracle会按照以上顺序搜索以上目录,读取相关文件并生效

7oracle修改内存的方法

1)备份好原始的SPFILEPFILE文件;

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。