在某些情况下,我们会因为使用alter system set ... 来修改初始化参数时出错,而当下次重启数据库时,发现因为参数出错而不能启动数据库的问题。这时,就需要修改二进制参数文件。以下记录下修改二进制参数文件方法中的一种。
1、由于二进制参数文件(SPFILE)不能直接编辑,所以,需要将数据库启动到nomount状态下,将二进制的参数文件输出为可编辑的文本参数文件(PFILE)。
[oracle@host11 ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.3.0 Production on Tue Jun 21 09:39:05 2016
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup nomount
ORACLE instance started.
Total System Global Area 835104768 bytes
Fixed Size 2232960 bytes
Variable Size 721423744 bytes
Database Buffers 109051904 bytes
Redo Buffers 2396160 bytes
SQL> create pfile=‘/oradata2/test.ora‘ from spfile; --意为将默认的二进制参数文件输出为可编辑的文本参数文件,存储到/oradata2/test.ora中。
File created.
2、用VI或其它文本编辑工具,编辑/oradata2/test.ora中的内容并保存。
3、将第1步已经加载到nomount状态的数据库关闭,并指定用刚刚编辑后的文本参数文件启动。将用该文本参数文件重建二进制的参数文件。
SQL> shutdown
ORA-01507: database not mounted
ORACLE instance shut down.
SQL> startup nomount pfile=‘/oradata2/test.ora‘; --指定用/oradata2/test.ora文本参数文件启动数据库至NOMOUNT状态。
ORACLE instance started.
Total System Global Area 835104768 bytes
Fixed Size 2232960 bytes
Variable Size 721423744 bytes
Database Buffers 109051904 bytes
Redo Buffers 2396160 bytes
SQL> create spfile from pfile=‘/oradata2/test.ora‘; --指定用/oradata2/test.ora文本参数文件重建二进制的参数文件
File created.
4、关闭数据库,重新启动数据库(默认使用二进制参数文件启动)
SQL> shutdown immediate
ORA-01507: database not mounted
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area 835104768 bytes
Fixed Size 2232960 bytes
Variable Size 721423744 bytes
Database Buffers 109051904 bytes
Redo Buffers 2396160 bytes
Database mounted.
Database opened.
SQL> show parameter pfile --检查确认是否是以我们期望的二进制参数文件启动的数据库
NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
spfile string /u01/app/oracle/product/11.2.0/dbhome_1/dbs/spfileorcl.ora
注意事项:
1、修改完文本参数文件后,不能马上去创建二进制的参数文件。必须要重启数据库,并指定用编辑后的文本参数文件启动。否则,会由于原二进制参数文件还在使用中,而不能创建二进制参数文件。
操作演示及报错提示如下:
SQL> create spfile from pfile=‘/oradata2/test.ora‘;
create spfile from pfile=‘/oradata2/test.ora‘
*
ERROR at line 1:
ORA-32002: cannot create SPFILE already being used by the instance
2、在用文本参数文件创建二进制参数文件时,必须指定文本参数文件的路径和名称,否则,会使用默认的文本参数文件来创建二进制参数文件。
操作演示及报错提示如下
SQL> startup nomount pfile=‘/oradata2/test.ora‘;
ORACLE instance started.
Total System Global Area 835104768 bytes
Fixed Size 2232960 bytes
Variable Size 721423744 bytes
Database Buffers 109051904 bytes
Redo Buffers 2396160 bytes
SQL> create spfile from pfile;
create spfile from pfile
*
ERROR at line 1:
ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file
‘/u01/app/oracle/product/11.2.0/dbhome_1/dbs/initorcl.ora‘
本文出自 “大脸猫” 博客,请务必保留此出处http://bfc99.blog.51cto.com/265386/1791263
原文地址:http://bfc99.blog.51cto.com/265386/1791263