(转)Oracle中PFILE和SPFILE的使用

本文详细介绍了Oracle数据库中初始化参数文件SPFILE和服务文件PFILE的区别与使用方法。包括如何创建SPFILE、使用SPFILE启动数据库、通过ALTER SYSTEM修改参数、导出SPFILE为文本文件等关键操作。

 

      在9i以前,Oracle使用pfile存储初始化参数设置,这些参数在实例启动时被读取,任何修改需要重起实例才能生效,使用spfile你可以使用 ALTER SYSTEM或者ALTER SESSION来动态修改那些可动态修改的参数,所有更改可以立即生效,你可以选择使更改只应用于当前实例还是同时应用到spfile。这就使得所有对 spfile的修改都可以在命令行完成,我们可以彻底告别手工修改初始化参数文件,这就大大减少了人为错误的发生。

      SPFILE是一个二进制文件,可以使用RMAN进行备份,这样实际上Oracle把参数文件也纳入了备份恢复管理。除了第一次启动数据库需要 PFILE(然后可以根据PFILE创建SPFILE),我们可以不再需要PFILE,ORACLE强烈推荐使用spfile,应用其新特性来存储和维护初始化参数设置。

 

一. 创建SPFILE

缺省的,ORACLE使用PFILE启动数据库,SPFILE必须由PFILE创建,新创建的SPFILE在下一次启动数据库时生效,CREATE SPFILE需要SYSDBA或者SYSOPER的权限:

语法如下:

CREATE SPFILE[='SPFILE-NAME'] FROM PFILE[='PFILE-NAME']



例:

SQL> create spfile from pfile;

缺省的,spfile创建到系统缺省目录

(Unix: $ORACLE_HOME/dbs; NT: $ORACLE_HOME\database)


如果SPFILE已经存在,那么创建会返回以下错误:

SQL> create spfile from pfile;

create spfile from pfile

ERROR 位于第 1 行:

ORA-32002: 无法创建已由例程使用的 SPFILE



判断是否使用了SPFILE,你可以使用SHOW命令来显示参数设置,如果以下结果value列返回空值,那么说明你在使用pfile:

SQL> SHOW PARAMETER spfile

NAME TYPE   VALUE

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

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


二. 使用SPFILE


重新启动数据库,使用startup命令,Oralce将会按照以下顺序在缺省目录中搜索参数文件:

a.    spfile${ORACLE_SID}.ora

缺省目录

UNIX: ${ORACLE_HOME}/dbs/

NT: ${ORACLE_HOME}\database

b.    spfile.ora

缺省目录

UNIX: ${ORACLE_HOME}/dbs/

NT: ${ORACLE_HOME}\database

c. init${ORACLESID}.ora

缺省目录

UNIX: ${ORACLE_HOME}/dbs/

NT: ${ORACLE_HOME}\database or

${ORACLE_HOME}\admin\db_name\pfile\

创建了spfile,重新启动数据库,Oracle会按顺序搜索以上目录,spfile就会自动生效。



三. 使用pfile/spfile启动数据库

如果你想使用pfile启动数据库,你可以在启动时指定pfile或者删除spfile.

SQL> startup pfile='E:\Oracle\admin\eyglen\pfile\init.ora';

你不能以同样的方式指定spfile。



四. 修改参数

可以通过ALTER SYSTEM或者导入导出来更改SPFILE的内容。

ALTER SYSTEM增加了一个新选项:SCOPE。SCOPE参数有三个可选值:MEMORY ,SPFILE , BOTH

MEMORY:只改变当前实例运行

SPFILE:只改变SPFILE的设置

BOTH:改变实例及SPFILE

注意:不带参数的ALTER SYSTEM语句等同于scope=both,如果修改静态参数,那么需要指定SPFILE参数,否则将会报错。


五. 导出SPFILE文件

SPFILE文件可以导出为文本文件,使用导出、创建过程你可以向SPFILE中添加参数。

SQL> create pfile='e:\initeyglen.ora' from spfile;

文件已创建。

然后我们可以使用这个pfile,或者手动修改其中的参数以启动数据库。

我们修改这个pfile,增加一行

*.log_archive_start=true

使用这个PFILE启动数据库

SQL> startup pfile='e:\initeyglen.ora'

ORACLE 例程已经启动。

数据库装载完毕。

数据库已经打开。

SQL> show parameter log_archive_start

NAME TYPE              VALUE

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

log_archive_start Boolean   TRUE


然后我们可以使用新的PFILE创建SPFILE

SQL> create spfile from pfile='e:\initeyglen.ora';

文件已创建。

重新启动数据库,新的SPFILE生效。

SQL> startup

ORACLE 例程已经启动。

数据库装载完毕。

数据库已经打开。

SQL> show parameter spfile

NAME TYPE            VALUE

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

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

SQL> show parameter log_archive_start

NAME TYPE               VALUE

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

log_archive_start Boolean    TRUE


六. 关于920/10的PFILE

在$ORACLE_BASE\admin\db_name\spfile下,你很可能可以看到一个类似这样[init.ora.192003215317]名字的文件,这就是初始化

参数文件,只是跟上了时间戳。

对于Oracle920,缺省的就使用spfile启动,但是这个spfile不是凭空而来,而是根据这个文件创建而来,你可以去掉这个长后缀,就是标准的pfile文件了。

如果手动创建数据库,可以看到以下的过程:
SQL> create spfile='e:\oracle\ora10G\database\spfilesunny.ora'    FROM pfile='E:\oracle\admin\sunny\scripts\init.ora';

文件已创建。

如果你想要使用pfile启动数据库,那么你可以把spfile改名,NT缺省位于$ORACLE_HOME\database下,这样Oracle就不会使用这个spfile了 。

 

 

===========================

//另附一篇文章:

ORACLE初始化参数文件SPFILE、PFILE介绍


### ### 将 OraclePFILE 换为 SPFILE 的方法 在 Oracle 数据库中,PFILE(Parameter File)是文本格式的初始化参数文件,而 SPFILE(Server Parameter File)是二进制格式的初始化参数文件,支持动态修改并持久化保存。将 PFILE 换为 SPFILE 是数据库配置管理中的常见操作,尤其是在数据库启动维护过程中。 要完成 PFILESPFILE换,可以在 SQL*Plus 中以 `SYSDBA` 身份连接数据库,并执行 `CREATE SPFILE` 命令。此命令会根据指定的 PFILE 创建一个 SPFILE,并将其存储在默认的 `$ORACLE_HOME/dbs` 目录下,或者指定自定义路径。 在非自动存储管理(ASM)环境中,可以使用如下命令创建 SPFILE: ```sql CREATE SPFILE FROM PFILE='/u01/app/oracle/admin/NDLNE/pfile/init.ora'; ``` 此命令会基于指定路径下的 PFILE 创建 SPFILE,并在数据库下次启动时使用SPFILE[^1]。 在使用 Oracle 自动存储管理(ASM)的环境中,SPFILE 可以存储在 ASM 磁盘组中。例如,使用以下命令将 SPFILE 创建在 ASM 磁盘组中: ```sql CREATE SPFILE='+data/rhndb/parameterfile/spfile.267.1006814727' FROM PFILE='/u01/app/oracle/product/19.0.0/db_1/dbs/initrhndb.ora'; ``` 此操作会将 SPFILE 存储在 ASM 磁盘组 `data` 中,并用于后续的数据库启动配置[^2]。 在换过程中,数据库应处于 `NOMOUNT` 状态,即实例已启动但数据库未挂载。可以通过以下命令启动数据库至 `NOMOUNT` 状态: ```sql STARTUP NOMOUNT PFILE='/u01/app/oracle/admin/NDLNE/pfile/init.ora'; ``` 一旦 SPFILE 被成功创建,后续的数据库启动将不再需要手动指定 PFILE,因为 Oracle 会自动查找默认路径下的 SPFILE。如果 SPFILE 不在默认路径中,需要在启动时显式指定其位置。 换完成后,验证 SPFILE 是否被正确创建并使用,可以通过以下命令检查当前数据库使用的参数文件类型: ```sql SHOW PARAMETER SPFILE; ``` 如果结果显示 `SPFILE` 参数值非空,则表示当前数据库正在使用 SPFILE。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值