对pfile和spfile的研究

pfileParameter File)从oracle8i开始使用,在oracle9i中也可以用。它以文本文件的形式存在,可以用vi等编辑器对其中数据库参数进行修改。文件格式为initSID.oraOracle 9i在安装时为每个数据库建立了一个Pfile,默认的名称为“init+例程名.ora”

    Oracle8i使用pfile存储初始化参数配置,这些参数在实例启动时被读取,任何修改需要重起实例才能生效。

    spfile专用于oracle9i及以后版本,以二进制文件形式存在,含有数据库及例程的参数和数值能够使用RMAN 进行备份,但不能用文本编辑工具打开,不能用vi编辑器对其中数据库参数进行修改。文件格式为spfileSID.ora

         Oracle9i及以后版本,使用spfile存储初始化参数配置,支持使用ALTER SYSTEM ALTER SESSION来动态修改那些可动态修改的参数,任何更改能够立即生效,您能够选择使更改只应用于当前实例还是同时应用到spfile。这就使得任何对spfile 的修改都能够在命令行完成,我们能够完全告别手工修改初始化参数文档,这就大大减少了人为错误的发生。

    除了第一次启动数据库需要pfile(然后根据pfile 创建spfile),我们能够不再需要pfileORACLE 强烈推荐使用spfile,应用其新特性来存储和维护初始化参数配置。

    spfile改正了pfile管理混乱的问题,在多结点的环境里,pfile会有多个image,启动时候需要跟踪最新的image。这是个烦琐的过程。 spfile以后,所有参数改变都写到spfile里面(只要定义scope=spfileboth),参数配置有个权威的来源。

    以下列出与spfile相关的常用SQL,包括相互转换SQL

1、查看系统是以pfile还是spfile启动

SQL> select isspecified, count(*) from v$spparameter group by isspecified;

ISSPECIFIED   COUNT(*)

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

TRUE                23

FALSE              237

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

2、创建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 文档。

3、使用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就会自动生效。

4、spfile获取pfile

Create pfile from spfile;//系统默认路径及文件

Create pfile='/oracle/pfileSID.ora' from spfile;

Create pfile='/oracle/pfileSID.ora' from spfile='/oracle/product/10g/dbs/spfileorcl.ora';

5、pfile获取spfile

Create spfile from pfile;//系统默认路径及文件

Create spfile from pfile='/oracle/initorcl.ora’;

Create spfile='/oracle/product/10g/dbs/spfileorcl.ora' from pfile='/oracle/initorcl.ora';

6、强制用pfile启动

假如你想使用pfile 启动数据库,你能够在启动时指定pfile或删除spfile
SQL> startup pfile='
/oracle/init.ora';
你不能以同样的方式指定spfile,但是能够创建一个包含spfile 参数的pfile 文档,指向spfilespfile是个自Oracle9i 引入的初始化参数,类似于ifile参数。spfile参数用于定义非缺省路径的spfile 文档。您能够在PFILE 链接到SPFILE 文档,同时在PFILE 中定义其他参数,假如参数重复配置,后读的参数将取代先前的配置。

PFILE 参数的使用,例如:
这是我们使用SPFILE 启动的情况,
SQL> startup
ORACLE
例程已启动。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
数据库已打开。
SQL> show parameter log_archive_start
NAME                                           TYPE                                     VALUE
------------------------------------ ----------------------  ------------------------------
log_archive_start         boolean         TRUE
SQL> show parameter spfile
NAME       TYPE                         VALUE
---------- ------------ ------------------------------
spfile      string 
/oracle/product/10g/dbs/spfileorcl.ora
SQL>
我们修改PFILE 文档内容如下:
#Pfile link to SPFILE
SPFILE= '
/oracle/product/10g/dbs/spfileorcl.ora'
log_archive_start = false
能够预见这个log_archive_start 参数配置将会代替spfile中的配置:
SQL> startup pfile='
/oracle/pfileSID.ora '
ORACLE
例程已启动。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
数据库已打开。
SQL> show parameter spfile
NAME     TYPE     VALUE
----------  -----------   ------------------------------
spfile    string     
/oracle/product/10g/dbs/spfileorcl.ora
SQL> show parameter log_archive_start
NAME                        TYPE                                     VALUE

-------------------------- ----------------------   ------------------------------
log_archive_start    boolean                      FALSE
然后我们能够使用ALTER SYSTEM 方式将修改固定到SPFILE.
SQL> alter system set log_archive_start=false scope=spfile;
系统已更改。
所以您也能够通过如上方式在启动时修改初始化参数。

7、修改参数

能够通过ALTER SYSTEM 或导入导出来更改SPFILE 的内容。
ALTER SYSTEM
增加了一个新选项SCOPESCOPE 参数有三个可选值:

MEMORY:只改变当前实例运行
SPFILE
:只改变spfile 的配置
BOTH
:改变实例及spfile

1. SCOPE=MEMORY
SQL> show parameter timed_statistics
NAME                                           TYPE                 VALUE
------------------------------------ ----------------------       ------------------------------
timed_statistics                           boolean          TRUE
SQL> ALTER SYSTEM SET timed_statistics=FALSE SCOPE=MEMORY;
系统已更改。
SQL> show parameter timed_statistics
NAME                                           TYPE                 VALUE
------------------------------------ ----------------------       ------------------------------
timed_statistics                           boolean          FALSE
SQL> shutdown immediate
数据库已关闭。
已卸载数据库。
ORACLE
例程已关闭。
SQL> startup
ORACLE
例程已启动。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
数据库已打开。
SQL> show parameter timed_statistics
NAME                                           TYPE                 VALUE
------------------------------------ ----------------------       ------------------------------
timed_statistics                           boolean          TRUE
2. SCOPE=SPFILE
SQL> show parameter timed_statistics
NAME                                           TYPE                 VALUE
------------------------------------ ----------------------       ------------------------------
timed_statistics                           boolean          TRUE
SQL> ALTER SYSTEM SET timed_statistics=FALSE SCOPE=SPFILE;
系统已更改。
SQL> show parameter timed_statistics
NAME                                           TYPE                 VALUE
------------------------------------ ----------------------       ------------------------------
timed_statistics                           boolean          TRUE
SQL> shutdown immediate
数据库已关闭。
已卸载数据库。
ORACLE
例程已关闭。
SQL> startup
ORACLE
例程已启动。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
数据库已打开。
SQL> show parameter timed_statistics
NAME                                           TYPE                 VALUE
------------------------------------ ----------------------       ------------------------------
timed_statistics                           boolean          FALSE
SQL>
3
SCOPE = BOTH
使用BOTH 选项实际上等同于不带参数的ALTER SYSTEM 语句。
注意:假如修改静态参数,那么需要指定SPFILE 参数,否则将会报错
SQL> show parameter timed_statistics
NAME                                           TYPE                 VALUE
------------------------------------ ----------------------       ------------------------------
timed_statistics                           boolean          FALSE
SQL> ALTER SYSTEM SET timed_statistics=TRUE SCOPE=BOTH;
系统已更改。
SQL> show parameter timed_statistics
NAME                                           TYPE                 VALUE
------------------------------------ ----------------------       ------------------------------
timed_statistics                           boolean          TRUE
SQL> shutdown immediate
数据库已关闭。
已卸载数据库。
ORACLE
例程已关闭。
SQL> startup
ORACLE
例程已启动。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
数据库已打开。
SQL> show parameter timed_statistics
NAME                                           TYPE                 VALUE
------------------------------------ ----------------------       ------------------------------
timed_statistics                           boolean          TRUE
4
.您也能够在数据库shutdown 时创建和修改spfile,例如:
SQL> show sga
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
SQL> shutdown immediate
数据库已关闭。
已卸载数据库。
ORACLE
例程已关闭。
SQL> create pfile from spfile;
文档已创建。
SQL> create spfile from pfile;
文档已创建。
SQL>

 

Pfilespfile对比总结

比较内容

Spfile

Pfile

格式

二进制

文本文件

编辑方式

1)利用企业管理器对Pfile进行修改,然后转换为Spfile

2)在SQL Plus里使用ALTER SYSTEM语句进行修改

1)利用文本工具直接进行修改

2)在企业管理器里修改配置后导出形成

默认名称

spfile+例程名.ora

init+例程名.ora

实际参数文件Init.ora

默认路径

UNIX${ORACLE_HOME}/dbs/

NT${ORACLE_HOME}\database

UNIX${ORACLE_HOME}/dbs/

NT${ORACLE_HOME}\database  or ${ORACLE_HOME}\admin\db_name\pfile\

启动次序

spfile优先于pfile

pfile低于spfile

 

 

 

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9399028/viewspace-681174/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/9399028/viewspace-681174/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值