今天遇到一个错误,具体错误过程如下:
--提示无法修改指定的参数
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 spfile
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string
spfile的值为空,说明数据库启动不是使用的spfile,是使用的pfile启动的。缺省情况下,spfile是linux的 $ORACLE_HOME/dbs 下的 spfile+$ORACLE_SID.ora文件,查看文件是否存在
[[email protected] dbs]$ ls $ORACLE_HOME/dbs
hc_orcl11g.dat hc_orcl.dat init.ora initorcl.ora lkORCL orapworcl snapcf_orcl.f
spfile不存在,于是创建spfile
SQL> 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,应用其新特性来存储和维护初始化参数配置。
补充:
spfle:$ORACLE_HOME/dbs/spfile$ORACLE_SID.ora
pfile(9i):$ORALCE_HOME/dbs/init$ORALCE_SID.ora
pfile(10g):$ORALCE_BASE/admin/$ORACLE_SID/pfile
pfile:$ORACLE_HOME/dbs/init.ora
参考:http://blog.csdn.net/leshami/article/details/5559174