oracle spfile 和 pfile

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 
位于第 :
ORA-32002: 
无法创建已由例程使用的 SPFILE
这也能够用来判断当前是否使用了 SPFILE  文档。
然而意外的时, Oracle  并没有向其他文档相同,在运行期间保持锁定,让我们作以下试验:
SQL> host rename SPFILEEYGLEN.ORA SPFILEEYGLEN.ORA.BAK
SQL> alter system set db_cache_size=24M scope=both;
系统已更改。
SQL> host dir *.ora
驱动器 中的卷是 Doc
卷的序列号是 980C-8EFF
E:\Oracle\Ora9iR2\database 
的目录
2003-02-10 14:35 2,048 PWDeyglen.ORA
个文档 2,048  字节
个目录 150,347,776  可用字节
SQL> alter system set db_cache_size=24M scope=spfile;
alter system set db_cache_size=24M scope=spfile
*
ERROR 
位于第 :
ORA-27041: 
无法打开文档
OSD-04002: 
无法打开文档
O/S-Error: (OS 2) 
系统很难找到指定的文档。
SQL> host rename SPFILEEYGLEN.ORA.BAK SPFILEEYGLEN.ORA
SQL> alter system set db_cache_size=24M scope=spfile;
系统已更改。
SQL>
估计 Oracle  以后会想办法来锁定这个文档。
使用 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 ,但是能够创建一个包含 spfile  参数的 pfile  文档,指向
spfile.
SPFILE 
是个自 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_HOME%\DATABASE\SPFILE%
ORACLE_SID%.ORA
SQL>
我们修改 PFILE  文档内容如下:
#Pfile link to SPFILE
SPFILE= 'E:\Oracle\Ora9iR2\database\SPFILEEYGLEN.ORA'
log_archive_start = false
能够预见这个 log_archive_start  参数配置将会代替 SPFILE  中的配置:
SQL> startup pfile='e:\initeyglen.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
E:\Oracle\Ora9iR2\database\SPF
ILEEYGLEN.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;
系统已更改。
所以您也能够通过如上方式在启动时修改初始化参数。比我们在本文最后介绍的导入导
出方法要简便的多。
修改参数
能够通过 ALTER SYSTEM  或导入导出来更改 SPFILE  的内容。
ALTER SYSTEM 
增加了一个新选项: SCOPE SCOPE  参数有三个可选值:
MEMORY ,SPFILE , BOTH
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
SQL> ALTER SYSTEM SET sql_trace=FALSE SCOPE=BOTH;
ALTER SYSTEM SET sql_trace=FALSE SCOPE=BOTH
*
ERROR 
位于第 :
ORA-02095: 
无法修改指定的初始化参数
SQL> ALTER SYSTEM SET sql_trace=FALSE SCOPE=SPFILE;
系统已更改。
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>
是否使用了 spfile
判断是否使用了 SPFILE ,能够使用以下方法:
1
.查询 v$parameter  动态视图,假如以下查询返回空值,那么您在使用 pfile.
SQL> SELECT name,value FROM v$parameter WHERE name='spfile';
NAME
------------------------------------------------------------------
VALUE
------------------------------------------------------------------
spfile
%ORACLE_HOME%\DATABASE\SPFILE%ORACLE_SID%.ORA
2
.或您能够使用 SHOW  命令来显示参数配置,假如以下结果 value  列返回空值,那
么说明您在使用 pfile:
SQL> SHOW PARAMETER spfile
NAME TYPE
------------------------------------ ----------------------
VALUE
------------------------------
spfile string
%ORACLE_HOME%\DATABASE\SPFILE%
ORACLE_SID%.ORA
3
.查询 v$spparameter  视图
假如以下查询返回 值,表示您在使用 pfile, 否则表明您使用的是 spfile:
SQL> SELECT COUNT(*) FROM v$spparameter WHERE value IS NOT NULL;
COUNT(*)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值