Oracle 11g参数文件之服务器参数文件(spfile)与实例启动的关系

在数据库启动时需要读取参数文件来分配内存区域并定位控制文件的位置,Oracle数据库中的初始化参数传统上是存储在一个文本初始化参数文件中的.为了更好地管理,可以选择使用一个二进制的服务器参数文件来管理初始化参数对它的修改在数据库重启后仍然生效.下面来介绍如何使用这种方法来管理初始化参数.
 
什么是服务器参数文件
 服务器参数文件可以被认为是一个初始化参数档案库它被存储在运行oracle数据库服务器的系统中.它被设计为服务端初始化参数文件.存储在服务器参数文件中的初始化参数是永久生效的.当实例运行时对参数的任何改变在数据库重启之后是仍然有效的.这消除了为了使alter system语句的改变永久生效而要手工修改初始化参数的需要.它也提供了对数据库服务器自动调整的基础.
 
一个服务器参数文件是通过使用create spfile语句从文本初始化参数文件来初始化创建.(也可以通过DBCA来直接创建).服务器参数文件是一个二进制文件不能使用文本编辑器来修改.oracle数据库提供了其它的接口来查看和修改服务器参数文件中的参数.
 
注意:虽然你能使用一个文本编辑器来打开一个二进制服务器参数文件但不能手工修改它.如果修改会损坏文件.你将不能重启实例,如果实例正在运行那么它会终止运行.

当执行没有pfile子句的startup命令,oracle实例会在操作系统特定的缺省位置来搜索一个服务器参数文件并从文件中读取初始化参数.如果没有找到服务器参数文件,实例将搜索一个文本初始化参数.如果服务器参数文件存在但你想使用一个文本初始化参数来覆盖那么在执行startup命令时指定pfile子句.

--------------------------------------分割线 --------------------------------------

--------------------------------------分割线 --------------------------------------

 下面来举例说明:
 1.执行不带pfile子句的startup命令,从下面的输出可以看出启动时自动搜索了服务器参数文件spfilejycs.ora
SQL> startup
ORACLE instance started.

Total System Global Area  630501376 bytes
Fixed Size                  2215984 bytes
Variable Size            385880016 bytes
Database Buffers          234881024 bytes
Redo Buffers                7524352 bytes
Database mounted.
Database opened.
SQL> show parameter spfile

NAME                                TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                              string      /u01/app/oracle/11.2.0/db/dbs/
                                                spfilejycs.ora

 
2.删除服务器参数文件spfilejycs.ora,再执行执行不带pfile子句的startup命令,从下面的输出可以看出在启动时
 在搜索不到服务器参数文件时就会搜索文本初始化参数文件initjycs.ora
[oracle@jyrac1 dbs]$ mv spfilejycs.ora spfilejycs.ora.bak

SQL> startup
ORACLE instance started.

Total System Global Area  630501376 bytes
Fixed Size                  2215984 bytes
Variable Size            385880016 bytes
Database Buffers          234881024 bytes
Redo Buffers                7524352 bytes
Database mounted.
Database opened.
SQL> show parameter spfile 

NAME                                TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                              string
 
3.删除文本初始化参数文件initjycs.ora,再执行执行不带pfile子句的startup命令,从下面的输出可以看出在启动时
 在搜索不到服务器参数文件时就会搜索文本初始化参数文件initjycs.ora,但是因为我们删除了文本初始化参数文件
 initjycs.ora所以提示找不到这个文件
[oracle@jyrac1 dbs]$ mv initjycs.ora initjycs.ora.bak

SQL> startup
ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file '/u01/app/oracle/11.2.0/db/dbs/initjycs.ora'
 
4.执行带pfile子句的startup命令,将使用文本初始化参数文件来替代服务器参数文件,可以看到spfile参数值为空说明是使用文本初始化参数来启动的实例
SQL> startup pfile='/u01/app/oracle/11.2.0/db/dbs/initjycs.ora'
ORACLE instance started.

Total System Global Area  630501376 bytes
Fixed Size                  2215984 bytes
Variable Size            385880016 bytes
Database Buffers          234881024 bytes
Redo Buffers                7524352 bytes
Database mounted.
Database opened.
SQL> show parameter spfile

NAME                                TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                              string

相关推荐