oracle数据库pfile中SID值,Oracle 参数文件

Oracle 参数文件

Table of Contents

1 为什么会有spfile

在数据库运行期间修改pfile,系统只会把参数写入内存,不会写入磁盘,若想将修改的参 数固定到磁盘,必须在DB关闭以后手动修改pfile文件。由此,引入了spfile,因为它是二 进制文件,其内容结构都是有Oracle设定,所以很容易由Oracle直接对其进行读取和修改。 通过指定scope的值就可决定参数的存储方式。

2 指定参数文件启动实例

oracle实例在启动时,会去读取参数文件中的各配置项,其过程如下所述: 若数据库的startup命令指定了pfile,那么Oracle直接读取指定的pfile(但不 能指定spfile)。 若使用不带pfile 子句的startup 命令,Oracle 将从由平台指定的默认位置上的服务器参数文件(spfile)中读取初始化参数。 Oracle查找参数文件的顺序是:在平台指定的默认位置上,Oracle首先查找名为spfile$ORACLE_SID.ora的文件,如果没有就查找spfile.ora文件,还没有的话,就找init$ORACLE_SID.ora文件。 在$ORACLE_BASE\admin \db_name\spfile下,你很可能可以看到一个类似这样init.ora.1 92003215317]名字的文件,这就是初始化参数文件,只是跟上了时间戳(你可以去掉这个长后缀,就是标准的pfile文件了)。对于Oracle9.2以后的版本 ,缺省的就使用spfile启动,但是这个spfile不是凭空而来,而是根据PFILE文件创建而来。 对于Windows NT 和Windows 2000 ,其位置是: $ORACLE_HOME\dbs\spfile$ORACLE_SID.ora。(oracle11gR2,以前的版本就不说了)

指定参数文件启动实例:

startup pfile='$ORACLE_HOME/dbs/pfileSID.ora ';

startup spfile='$ORACLE_HOME/dbs/spfile.ora';

3 查看实例是哪种参数文件启动

方法1

Select isspecified,count(*)

from v$spparameter

group by isspecified;

如果isspecified里有true,表明用spfile进行了指定配置;如果全为false,则表明用pfile启动。

方法2

show parameters spfile

NAME TYPE VALUE

-------- --------- ----------------------------------------------------------------

spfile string %ORACLE_HOME%\DATABASE\SPFILE%ORACLE_SID%.ORA

如果有类似上面的显示,那么你的数据库就是在spfile下启动的,而pfile启动的数据库,其输出如下,其value值是空的。

NAME TYPE VALUE

---------- ----------- ------------------------------

spfile string

4 spfile 与pfile互相转换

通过spfile创建pfile

create pfile='$ORACLE_HOME/dbs/initSID.ora' from spfile='$ORACLE_HOME/dbs/spfileSID.ora';

create pfile='$ORACLE_HOME/dbs/initSID.ora' from spfile;

通过pfile创建spfile

create spfile='$ORACLE_HOME/dbs/spfileSID.ora ' from pfile='$ORACLE_HOME/dbs/initSID.ora ';

create spfile from pfile;

默认情况下,系统使用$ORACLE_HOME/dbs/init.ora缺省PFILE文件来创建SPFILE, SPFILE也放在$ORACLE_HOME/dbs目录下,缺省名为spfile.ora

查看spfile位置

show parameter spfile;

5 查看spfile的内容

(1) 先spfile文件转换成pfile,再用vi查看pfile的内容;(切记切记!一定要先转换成pfile文件,再查看或者用vi命令来编辑) (2) 使用V$PARAMETER视图查找参数值; (3) 使用Linux的Strings命令,提取二进制文件spfile中可读的字符串,并将其显示出来:“Strings spfileSID.ora | more”。 (4) SQL*PLUS命令:show parameter。

6 修改spfile中的参数值

alter system set parameter=value sid='*' scope=spfile;

6.1 scope

memory修改只对内存有效,即只对当前实例有效,且立即生效,但不会保存到SPFILE,数据库重启后此配置丢失;spfile修改只对SPFILE有效,不影响当前实例,需要重启数据库才能生效r;both包含以上两种,立即生效,且永久生效(缺省)。

同时需要注意的是memory 和both 虽然修改内存中的参数值,但对已经存在的会话是无效的。

6.2 sid

用于RAC系统(用在单实例也没有问题),不同的SID分别指定不同的实例。若是 sid = , 那么此参数只适用于SID对应的实例;若是sid = '*',则 此参数适用于所有实例。

对于ALTER SYSTEM的参数修改命令,请注意以下几点: 1)如果当前实例使用的是pfile而非spfile,则scope=spfile或scope=both会产生错误。 2)如果实例以pfile启动,则scope的默认值为MEMORY;若以spfile启动,则默认值为BOTH。 3)删除参数的方法如下:ALTER SYSTEM SET PARAMETER=''。

6.3 恢复spfile中参数的缺省值

alter system reset parameter scope=both sid=“*”; //此时的sid=’*’是必写的

7 SPFILE和PFILE的对比

在9i之前,参数文件只有一种,它是文本格式的,称为pfile,在9i及以后的版本中,新 增了服务器参数文件,称为spfile,它是二进制格式的。这两种参数文件都是用来存储参 数配置以供oracle读取的,但也有不同点。

对比项pfilespfile

文件类型

文本文件

二进制文件

命名规则

init.ora

spfile.ora

默认存放目录

$ORACLE_HOME/dbs

$ORACLE_HOME/dbs

编辑方式

vi 等文本处理命令直接编译

必须在数据库启动后,通过sql命令进行在线修改

配置生效方式

重启实例

spfile配置改变后的生效时限和作用域可由修改参数的sql命令指定,可以立即生效,也可以指定deferred使其在下次登录时再生效。当然有些参数的修改必须重启数据库才能生效。

startup指定

可以

不可以

Author: halberd.lee

Created: 2019-06-22 Sat 19:35

标签:文件,pfile,spfile,ORACLE,参数,Oracle,ora

来源: https://www.cnblogs.com/halberd-lee/p/11070091.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值