错误信息

【汉】ORA-32001:已请求写入SPFILE,但未使用SPFILE

【英】ORA-32001:write to SPFILE requested but no SPFILE is in use

在运行正常的数据库中,修改【fast_start_mttr_target】参数时报错。

ORA-32001:已请求写入SPFILE,但未使用SPFILE_ORA-32001

版本

Oracle 【11.2.0.3.0】、【11.2.0.1.0】、【11.2.0.4.0】

原因

在数据库启动到nomount阶段时,会优先读取spfile文件配置,而spfile文件不存在的情况下会读取pfile。如果pfile存在,数据库会正常启动,不会提示任何错误。

在使用scope=spfile指定时,修改的参数值均会写入到spfile文件中。

解决方法

首先检查$ORACLE_HOME/dbs目录下有没有spfile文件,spfile文件的命名格式通常时spfile<ORACLE_SID>.ora。

# 进入目录
[oracle@localhost ~]$ cd $ORACLE_HOME/dbs
# 查看文件
[oracle@localhost dbs]$ ll

ORA-32001:已请求写入SPFILE,但未使用SPFILE_ORA-32001_02

从上图看出,$ORACLE_HOME/dbs目录下是没有spfile文件的,只有pfile文件和口令文件。没有spfile文件怎么办呢?我们可以直接使用pfile文件生成一个新的spfile文件,然后重启数据库识别新的spfile文件即可。

# 以sysdba权限进入到sqlplus
[oracle@localhost dbs]$ sqlplus / as sysdba
# 用pfile生成spfile
SQL> create spfile from pfile;
# 立即关闭数据库
SQL> shutdown immediate
# 启动数据库
SQL> startup
# 查看spfile文件参数
SQL> show parameter spfile

ORA-32001:已请求写入SPFILE,但未使用SPFILE_ORA-32001_03