今天遇到一个错误,具体错误过程如下: --提示无法修改指定的参数sql alter system set memory_max_target=3072m;alter system set memory_max_target=3072m *error at line 1:ora-02095: specified initialization parameter cannot be modified--至更改参
今天遇到一个错误,具体错误过程如下:
--提示无法修改指定的参数sql> alter system set memory_max_target=3072m;alter system set memory_max_target=3072m *error at line 1:ora-02095: specified initialization parameter cannot be modified--至更改参文件sql> alter system set memory_max_target=3072m scope=spfile;alter system set memory_max_target=3072m scope=spfile*error at line 1:ora-32001: write to spfile requested but no spfile is in use
提示没有使用参数文件,查看数据文件sql> show parameter spfilename type value------------------------------------ ----------- ------------------------------spfile string
spfile的值为空,说明数据库启动不是使用的spfile,是使用的pfile启动的。缺省情况下,spfile是linux的 $oracle_home/dbs 下的 spfile+$oracle_sid.ora文件,查看文件是否存在[oracle@localhost dbs]$ ls $oracle_home/dbshc_orcl11g.dat hc_orcl.dat init.ora initorcl.ora lkorcl orapworcl snapcf_orcl.f
spfile不存在,于是创建spfilesql> create spfile from pfile;file created.
在目录 $oracle_home/dbs 下就生成了 spfileorcl.ora 文件,下面是spfile 和pfile的相关知识spfile是9i以后才有的,在9i 以前,oracle 使用pfile 存储初始化参数配置,这些参数在实例启动时被读取,不能动态修改,可以用普通的编辑器修改,任何修改需要重起实例才能生效。
使用spfile 您能够使用alter system 或alter session来动态修改那些可动态修改的参数,部分修改需要重启数据库后才能生效,在修改时能够选择使更改只应用于当前实例,还是同时应用到spfile。这就使得任何对spfile 的修改都能够在命令行完成,我们能够完全告别手工修改初始化参数文档,这就大大减少了人为错误的发生。
spfile 是个二进制文档,能够使用rman 进行备份,这样实际上oracle 把参数文档也纳入了备份恢复管理。除了第一次启动数据库需要pfile(然后能够根据pfile 创建spfile),我们能够不再需要pfile,oracle 强烈推荐使用spfile,应用其新特性来存储和维护初始化参数配置。
补充:
/*
参数文件(10g中的参数文件)
主要用来记录数据库的配置文件,在数据库启动时,oracle读取参数文件,并根据参数文件中的参数设置来配置数据库。
如内存池的分配,允许打开的进程数和会话数等。
两类参数文件:
pfile:文本文件的参数文件,可以使用vi,vim等编辑器修改,文件名通常为init.ora
spfile:二进制的参数文件,不能直接修改,只能存放在oracle服务器端,可以使用em或指令来修改
(alter system|session set parameter_name = values ),
文件名通常为spfile.ora,支持rman备份。
优先级别:
oracle 启动读取参数文件的顺序,如果个文件都不存在,则oracle会报错
spfile.ora --> spfile.ora -->init.ora
参数文件的路径:*/
spfle:$oracle_home/dbs/spfile$oracle_sid.ora
pfile(9i):$oralce_home/dbs/init$oralce_sid.ora /*10g以后一般不用init.ora*/
pfile(10g):$oralce_base/admin/$oracle_sid/pfile /*仅当数据库初始化时使用*/
pfile:$oracle_home/dbs/init.ora /*默认*/
/*
参数文件之间的转化
spfile 转化为pfile
pfile 转换为spfile
从spfile来生成pfile
create pfile from spfile ,执行完毕后,pfile 将保存为$oracle_home/dbs/init$oracle_sid.ora
也可以指定pfile 的路径:create pfile = '' from spfile;
由pfile 生成spfile
create spfile from pfile
create spfile from pfile = ''
create spfile = '' from pfile
11g中的新指令,从memeory中生成
create spfile = '' from memeory
*/
参考:http://blog.csdn.net/leshami/article/details/5559174