Oracle 9i spfile

| |
[不指定 2007/05/12 17:57 | by ipaddr ]
在9i中,oracle可以使用服务器参数文件(SPFILE,System Parameter File)代替传统的init.ora参数文件。SPFILE是Oracle 在操作系统级创建的一个二进制文件,用于存储数据库参数。

可以使用Create spfile命令基于数据库的当前参数设置创建一个SPFILE,可以使用ALTER SYSTEM或者ALTER SESSION来动态修改那些可动态修改的参数并且这些更改可以立即生效,你也可以使用ALTER SYSTEM的一个新选项SCOPE来选择使更改只应用于当前实例还是同时应用到spfile。

SCOPE参数有三个可选值:
MEMORY:只改变当前实例运行;
SPFILE:只改变SPFILE的设置(如果修改的是静态参数,则必须指定SCOPE=SPFILE,否则将会报ORA-02095错。);
BOTH:改变实例及SPFILE(使用BOTH选项实际上等同于不带参数的ALTER SYSTEM语句)。

当使用不带pfile 子句的startup 命令时,Oracle 将从平台指定的默认位置上的服务器参数文件(SPFILE) 中读取初始化参数。Oracle查找SPFILE或者创通的init.ora的顺序是:在平台指定的默认位置上,Oracle首先查找名为spfile$ORACLE_SID.ora的文件,如果没有就查找spfile.ora文件,还没有的话,就找init$ORACLE_SID.ora文件。

在$ORACLE_BASE\admin\db_name\pfile下,你很可能可以看到一个类似这样init.ora.192003215317]名字的文件,这就是初始化参数文件,只是跟上了时间戳。对于Oracle920+,缺省的就使用spfile启动,但是这个spfile不是凭空而来,而是根据这个文件创建而来,你可以去掉这个长后缀,就是标准的pfile文件了。

注意:
对于UNIX 平台为服务器参数文件或文本初始化参数文件指定的默认位置目录是:
$ORACLE_HOME/dbs/spfile$ORACLE_SID.ora

对于Windows NT 和Windows 2000 其位置是:
$ORACLE_HOME\database\spfile$ORACLE_SID.ora
(Ipaddr: Oracle10g, WindowsNT的默认位置也是:$ORACLE_HOME/dbs/spfile$ORACLE_SID.ora)

SPFILE支持多实例数据库(RAC),即所有的实例共用一个SPFILE。你可以通过查看SHOW PARAMETER spfile参数的值,如果value列返回空值,那么说明你在使用pfile;也可以通过下面的方法查看当前实例是否使用了SPFILE:
SQL> select decode(count(*), 1, 'spfile', 'pfile' ) USED
 2  from v$spparameter
 3  where rownum=1 and isspecified='TRUE'
 4  /
USED
------------
spfile

在Oracle 9i以前,我们可以通过查看V$PARAMETER and V$PARAMETER2知道当前实例的参数值,在Oracle 9i中,我们还可以通过查询V$SPPARAMETER实时的得到所有当前使用的spfile的参数值,包括使用SCOPE=SPFILE参数的ALTER SYSTEM命令改变的参数。

SPFILE可以从某个PFILE文件创建:
CREATE SPFILE[=’SPFILE-NAME’] FROM PFILE[=’PFILE-NAME’]

使用不带文件名的pfile在缺省位置创建spfile,可以用create spfile from pfile;命令,此时系统根据缺省位置(Unix: $ORACLE_HOME/dbs; NT: $ORACLE_HOME\database)的pfile在缺省位置创建名为spfile.ora的文件。创建SPFILE需要SYSDBA或者SYSOPER的权限。
我们也可以根据SPFILE文件创建PFILE文件:
CREATE PFILE[=’PFILE-NAME’] FROM SPFILE[=’SPFILE-NAME’]
这时创建的pfile文件将是一个可编辑的文本文件。
DB | 评论(0) | 引用(0) | 阅读(7094)