【问题分析】
2016年11月进行双机切换,spfile为共享卷裸设备,切换前,备机上没有清理不应该存在的root权限的spfile文件,切换后,出现异常,oracle的数据裸设备文件的文件权限为301,且用户不为Oracle。这些错误,使得数据库持续ORA-27072报错
【问题解决】
修改spfile为裸设备
# su - oracle
$ export ORACLE_SID=db1
-- Create a PFILE from your current SPFILE:
SQL> create pfile='/tmp/init.ora' from spfile;
SQL> ho more /tmp/init.ora
SQL> shutdown immediate
SQL> startup pfile='/tmp/init.ora';
SQL> ho ls -l /home/db/oracle/oradata/db1/rspfile_db1
lrwxrwxrwx 1 oracle dba 17 Jun 08 2013 /home/db/oracle/oradata/db1/rspfile_db1 -> /dev/recsv01l3110
SQL> create spfile='/home/db/oracle/oradata/db1/rspfile_db1' from pfile;
SQL> shutdown immediate
$ mv spfiledb1.ora spfiledb1.ora_OLD
$ vi initdb1.ora
增加spfile="/home/db/oracle/oradata/db1/rspfile_db1"
SQL> startup
SQL> show parameter spfile;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string /home/db/oracle/oradata/db1/rspfile_db1
【总结】
实施过程中,在用pfile启动实例后,尝试alter system set spfile 失败,报错信息"ORA-02095: specified initialization parameter cannot be modified".
问题关键是,用pfile启动后,没有spfile时,无需修改spfile参数,也无法修改。应删除spfile文件,将pfile内容写成spfile='xxxx'后,启动实例后,修改spfile才允许。