1
概念:
在Oracle数据库体系结构中,参数文件是很重要的一个文件,在数据库实例(instance)启动时,Oracle会读取该文件中的参数来为实例分配内存,获得一些资源的位置,设置用户进程、获得控制文件的位置以及用户登录的信息。在初始化参数文件中,显示的给出了参数值,而大多数的参数采用系统的默认值。
两个名词的含义:
静态:文件修改后不会在当前实例中生效,只有重新启动实例后,所做的修改才会生效。
动态:在数据库运行期间发生的参数更改行为,参数可以再数据库运行期间更改。
2
1. 参数文件分类
PFILE:其中PFILE文件是一个静态的正文文件,可以使用文本编辑器编辑。
SPFILE:SPFILE是动态的二进制文件,只能通过Oracle的指令修改。
在Oracle8之前使用PFILE启动数据库,缺点是系统参数无法动态修改,在oracle9i之后使用SPFILE参数文件,可以再数据库运行期间修改多数的数据库参数。
3
2. 数据库初始化参数组成及查看方法
数据库初始化参数由一系列的“参数/参数值”对组成。参数db_name =’orcl’,此时db_name是参数名,而参数值就是orcl
使用show parameter指令查看参数和参数值。
SQL> show parameter db_name;
使用数据字典v$parameter查看参数值。
SQL> select value
2 from v$parameter
3 where name = 'db_name';
4
3.静态参数文件PFILE
在Oracle11g中默认使用SPFILE启动数据库,此时PFILE存在,但只是一个模板信息,是不可用的,必须创建一个用的PFILE才可以使用PFILE启动数据库如下所示。
SQL>create pfile from spfile
创建的静态参数文件存储在默认位置,即:
$ORACLE_BASE\admin\ORACLE_SID\pfile
5
4.动态参数文件SPFILE
服务器动态参数文件即SPFILE文件,该文件是一个二进制文件,存储在数据库服务器上,要想操作或修改该文件只能在服务器上操作。二进制文件无法使用文本编辑器修改,但是可以使用alter system指令修改参数值。该文件的默认文件名基于不同的操作系统平台而不同,在Windows平台为spfile.ora,在UNIX平台为spfileORACLE_SID.ora。对于SPFILE文件的维护时,最好保持该文件的默认存储目录,这样不会影响SPFILE的简单性。
6
5.查看PFILE文件位置
SPFILE的默认存储位置在WINDOWS平台为$ORACLE_HOME\database,在UNIX平台为$ORACLE_HOME/dbs。笔者计算机上SPFILE的文件名为SPFILEORCL.ora。
使用show parameter spfile查看动态参数文件的位置。
7
6.从PFILE创建SPFILE
因为spfile是二进制文件,一旦修改就无法使用,所以最好通过SPIFLE创建一个PFILE 然后修改参数值,再从PFILE创建SPFILE.
假设一个数据库使用PFILE启动数据库,SPFILE丢失,而PFILE文件存储在默认目录下($ORACLE_HOME\database)。则可以使用create spfile from Pfile在SPFILE的默认目录下创建默认的SPFILE文件。如果不使用PFILE的默认目录,也可以使用如下指令创建SPFILE。
create spfile from pfile = ‘pfile文件名’
8
7.修改SPFILE中的参数值
在使用SPFILE作为初始化参数文件启动数据库后,根据需要可以动态调整初始化的参数值。要修改SPFILE中的文件值,不能使用文本编辑器编辑,因为它是二进制文件。
ORACLE提供了ALTER SYSTEM命令来修改SPFILE中的参数值。其语法格式如下所示。
ALTER SYSTEM SET parameter = value
参数说明:
parameter = values为某个参数parameter赋值,如sort_area_size = 65536,即把参数sort_area_size的值设置为65536字节。
,该参数是可选的提供注释信息,text为字符串用于附加一些注释信息,这个注释就是v$parameter数据字典视图中的update_comment字段中。
该参数说明修改是否对当前会话有效,使用该参数说明对当前会话无效。默认情况下,参数修改立即生效,但有些参数要求对新的会话生效。
说明修改的参数只在当前实例有效|写入SPFILE但当前实例无效|当前实例有效并写入SPFILE。
9
8.Oracle11g中关于参数文件的新特性
从内存创建PFILE
SQL>create pfile from memory;
1、查看当前PFILE中的内容。
2、查询当前某个参数,如控制位置。
3、从内存创建PFILE
4、查看PFILE文件内容验证创建结果。
从内存创建SPFILE
SQL>create spfile from memory;
1、删除掉SPFILE。
2、使用Pfile重启数据库。
3、从内存创建SPFILE。
END