Oracle9i新特点spfile.docx
- 文档编号:4403802
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:26
- 大小:23.89KB
Oracle9i新特点spfile.docx
《Oracle9i新特点spfile.docx》由会员分享,可在线阅读,更多相关《Oracle9i新特点spfile.docx(26页珍藏版)》请在冰豆网上搜索。
Oracle9i新特点spfile
Oracle9i新特点:
SPFILE的使用
--HowtoCreateandusespfile
简介:
本文是关于Oracle9ispfile的一篇文字,这是Oracle9i的一个新特性,虽然是很小的一个改进,但是却体现了Oracle在安全性和可靠性上的一个提高,
通过rman备份或者控制文件的自动备份,Oracle把spfile纳入到整个备份恢复体系当中。
本文对spfile的使用和修改等作了详细描述,对于其备份恢复也给出了相应的例子,希望大家能够从这篇文章中受益,从Oracle的这个新特性中获得收益。
在Oracle9i中,一个新的文件被引入-spfile,spfile用于服务器端,管理初始化参数。
在9i以前,Oracle使用pfile存储初始化参数设置,这些参数在实例启动时被读取,任何修改需要重起实例才能生效,使用spfile你可以使用ALTERSYSTEM
或者ALTERSESSION来动态修改那些可动态修改的参数,所有更改可以立即生效,你可以选择使更改只应用于当前实例还是同时应用到spfile。
这就使
得所有对spfile的修改都可以在命令行完成,我们可以彻底告别手工修改初始化参数文件,这就大大减少了人为错误的发生。
SPFILE是一个二进制文件,可以使用RMAN进行备份,这样实际上Oracle把参数文件也纳入了备份恢复管理。
除了第一次启动数据库需要PFILE(然后可以根据PFILE创建SPFILE),我们可以不再需要PFILE,ORACLE强烈推荐使用spfile,应用其新特性来存储和
维护初始化参数设置。
一.创建SPFILE
缺省的,ORACLE使用PFILE启动数据库,SPFILE必须由PFILE创建,新创建的SPFILE在下一次启动数据库时生效,CREATESPFILE需要SYSDBA或者
SYSOPER的权限:
语法如下:
CREATESPFILE[='SPFILE-NAME']FROMPFILE[='PFILE-NAME']
例:
SQL>createspfilefrompfile;
缺省的,spfile创建到系统缺省目录
(Unix:
$ORACLE_HOME/dbs;NT:
$ORACLE_HOME\database)
如果SPFILE已经存在,那么创建会返回以下错误:
SQL>createspfilefrompfile;
createspfilefrompfile
*
ERROR位于第1行:
ORA-32002:
无法创建已由例程使用的SPFILE
这也可以用来判断当前是否使用了SPFILE文件。
然而意外的时,Oracle并没有向其他文件一样,在运行期间保持锁定,让我们作以下试验:
SQL>hostrenameSPFILEEYGLEN.ORASPFILEEYGLEN.ORA.BAK
SQL>altersystemsetdb_cache_size=24Mscope=both;
系统已更改。
SQL>hostdir*.ora
驱动器E中的卷是Doc
卷的序列号是980C-8EFF
E:
\Oracle\Ora9iR2\database的目录
2003-02-1014:
352,048PWDeyglen.ORA
1个文件2,048字节
0个目录150,347,776可用字节
SQL>altersystemsetdb_cache_size=24Mscope=spfile;
altersystemsetdb_cache_size=24Mscope=spfile
*
ERROR位于第1行:
ORA-27041:
无法打开文件
OSD-04002:
无法打开文件
O/S-Error:
(OS2)系统找不到指定的文件。
SQL>hostrenameSPFILEEYGLEN.ORA.BAKSPFILEEYGLEN.ORA
SQL>altersystemsetdb_cache_size=24Mscope=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}\databaseor
${ORACLE_HOME}\admin\db_name\pfile\
创建了spfile,重新启动数据库,Oracle会按顺序搜索以上目录,spfile就会自动生效。
三.使用pfile/spfile启动数据库
如果你想使用pfile启动数据库,你可以在启动时指定pfile或者删除spfile.
SQL>startuppfile='E:
\Oracle\admin\eyglen\pfile\init.ora';
你不能以同样的方式指定spfile,但是可以创建一个包含spfile参数的pfile文件,指向spfile.
SPFILE是一个自Oracle9i引入的初始化参数,类似于IFILE参数。
SPFILE参数用于定义非缺省路径的spfile文件。
你可以在PFILE链接到SPFILE文件,同时在PFILE中定义其他参数,如果参数重复设置,后读取的参数将取代先前的设置。
PFILE参数的使用,例如:
这是我们使用SPFILE启动的情况
SQL>startup
ORACLE例程已经启动。
TotalSystemGlobalArea135338868bytes
FixedSize453492bytes
VariableSize109051904bytes
DatabaseBuffers25165824bytes
RedoBuffers667648bytes
数据库装载完毕。
数据库已经打开。
SQL>showparameterlog_archive_start
NAMETYPE
----------------------------------------------------------
VALUE
------------------------------
log_archive_startboolean
TRUE
SQL>showparameterspfile
NAMETYPE
----------------------------------------------------------
VALUE
------------------------------
spfilestring
%ORACLE_HOME%\DATABASE\SPFILE%
ORACLE_SID%.ORA
SQL>
我们修改PFILE文件内容如下:
#PfilelinktoSPFILE
SPFILE='E:
\Oracle\Ora9iR2\database\SPFILEEYGLEN.ORA'
log_archive_start=false
可以预见这个log_archive_start参数设置将会代替SPFILE中的设置:
SQL>startuppfile='e:
\initeyglen.ora'
ORACLE例程已经启动。
TotalSystemGlobalArea135338868bytes
FixedSize453492bytes
VariableSize109051904bytes
DatabaseBuffers25165824bytes
RedoBuffers667648bytes
数据库装载完毕。
数据库已经打开。
SQL>showparameterspfile
NAMETYPE
----------------------------------------------------------
VALUE
------------------------------
spfilestring
E:
\Oracle\Ora9iR2\database\SPF
ILEEYGLEN.ORA
SQL>showparameterlog_archive_start
NAMETYPE
----------------------------------------------------------
VALUE
------------------------------
log_archive_startboolean
FALSE
然后我们可以使用ALTERSYSTEM方式将修改固定到SPFILE.
SQL>altersystemsetlog_archive_start=falsescope=spfile;
系统已更改。
所以你也可以通过如上方式在启动时修改初始化参数。
比我们在本文最后介绍的导入导出方法要简便的多。
四.修改参数
可以通过ALTERSYSTEM或者导入导出来更改SPFILE的内容。
ALTERSYSTEM增加了一个新选项:
SCOPE。
SCOPE参数有三个可选值:
MEMORY,SPFILE,BOTH
MEMORY:
只改变当前实例运行
SPFILE:
只改变SPFILE的设置
BOTH:
改变实例及SPFILE
1.SCOPE=MEMORY
SQL>showparametertimed_statistics
NAMETYPE
----------------------------------------------------------
VALUE
------------------------------
timed_statisticsboolean
TRUE
SQL>ALTERSYSTEMSETtimed_statistics=FALSESCOPE=MEMORY;
系统已更改。
SQL>showparametertimed_statistics
NAMETYPE
----------------------------------------------------------
VALUE
------------------------------
timed_statisticsboolean
FALSE
SQL>shutdownimmediate
数据库已经关闭。
已经卸载数据库。
ORACLE例程已经关闭。
SQL>startup
ORACLE例程已经启动。
TotalSystemGlobalArea135338868bytes
FixedSize453492bytes
VariableSize109051904bytes
DatabaseBuffers25165824bytes
RedoBuffers667648bytes
数据库装载完毕。
数据库已经打开。
SQL>showparametertimed_statistics
NAMETYPE
----------------------------------------------------------
VALUE
------------------------------
timed_statisticsboolean
TRUE
2.SCOPE=SPFILE
SQL>showparametertimed_statistics
NAMETYPE
----------------------------------------------------------
VALUE
------------------------------
timed_statisticsboolean
TRUE
SQL>ALTERSYSTEMSETtimed_statistics=FALSESCOPE=SPFILE;
系统已更改。
SQL>showparametertimed_statistics
NAMETYPE
----------------------------------------------------------
VALUE
------------------------------
timed_statisticsboolean
TRUE
SQL>shutdownimmediate
数据库已经关闭。
已经卸载数据库。
ORACLE例程已经关闭。
SQL>startup
ORACLE例程已经启动。
TotalSystemGlobalArea135338868bytes
FixedSize453492bytes
VariableSize109051904bytes
DatabaseBuffers25165824bytes
RedoBuffers667648bytes
数据库装载完毕。
数据库已经打开。
SQL>showparametertimed_statistics
NAMETYPE
----------------------------------------------------------
VALUE
------------------------------
timed_statisticsboolean
FALSE
SQL>
3.SCOPE=BOTH
使用BOTH选项实际上等同于不带参数的ALTERSYSTEM语句。
注意:
如果修改静态参数,那么需要指定SPFILE参数,否则将会报错。
SQL>showparametertimed_statistics
NAMETYPE
----------------------------------------------------------
VALUE
------------------------------
timed_statisticsboolean
FALSE
SQL>ALTERSYSTEMSETtimed_statistics=TRUESCOPE=BOTH;
系统已更改。
SQL>showparametertimed_statistics
NAMETYPE
----------------------------------------------------------
VALUE
------------------------------
timed_statisticsboolean
TRUE
SQL>shutdownimmediate
数据库已经关闭。
已经卸载数据库。
ORACLE例程已经关闭。
SQL>startup
ORACLE例程已经启动。
TotalSystemGlobalArea135338868bytes
FixedSize453492bytes
VariableSize109051904bytes
DatabaseBuffers25165824bytes
RedoBuffers667648bytes
数据库装载完毕。
数据库已经打开。
SQL>showparametertimed_statistics
NAMETYPE
----------------------------------------------------------
VALUE
------------------------------
timed_statisticsboolean
TRUE
SQL>ALTERSYSTEMSETsql_trace=FALSESCOPE=BOTH;
ALTERSYSTEMSETsql_trace=FALSESCOPE=BOTH
*
ERROR位于第1行:
ORA-02095:
无法修改指定的初始化参数
SQL>ALTERSYSTEMSETsql_trace=FALSESCOPE=SPFILE;
系统已更改。
4.你也可以在数据库shutdown时创建和修改spfile,例如:
SQL>showsga
TotalSystemGlobalArea135338868bytes
FixedSize453492bytes
VariableSize109051904bytes
DatabaseBuffers25165824bytes
RedoBuffers667648bytes
SQL>shutdownimmediate
数据库已经关闭。
已经卸载数据库。
ORACLE例程已经关闭。
SQL>createpfilefromspfile;
文件已创建。
SQL>createspfilefrompfile;
文件已创建。
SQL>
所以spfile的修改是相当容易的.
五.是否使用了spfile
判断是否使用了SPFILE,可以使用以下方法:
1.查询v$parameter动态视图,如果以下查询返回空值,那么你在使用pfile.
SQL>SELECTname,valueFROMv$parameterWHEREname='spfile';
NAME
------------------------------------------------------------------
VALUE
------------------------------------------------------------------
spfile
%ORACLE_HOME%\DATABASE\SPFILE%ORACLE_SID%.ORA
2.或者你可以使用SHOW命令来显示参数设置,如果以下结果value列返回空值,那么说明你在使用pfile:
SQL>SHOWPARAMETERspfile
NAMETYPE
----------------------------------------------------------
VALUE
------------------------------
spfilestring
%ORACLE_HOME%\DATABASE\SPFILE%
ORACLE_SID%.ORA
3.查询v$spparameter视图
如果以下查询返回0值,表示你在使用pfile,否则表明你使用的是spfile:
SQL>SELECTCOUNT(*)FROMv$spparameterWHEREvalueISNOTNULL;
COUNT(*)
----------
32
或者使用以下查询,如果true值返回非0值,那么说明我们使用的是spfile.
SQL>selectisspecified,count(*)fromv$spparametergroup
2byisspecified;
ISSPECIFIEDCOUNT(*)
----------------------
FALSE226
TRUE33
更为直接的:
SQL>selectdecode(count(*),1,'spfile','pfile')USED
2fromv$spparameter
3whererownum=1andisspecified='TRUE'
4/
USED
------------
spfile
六.SPFILE的备份与恢复
在本文开篇我们提到,Oracle把Spfile也纳入到Rman的备份恢复策略当中,如果你配置了控制文件自动备份(autoback),那么Oracle会
在数据库发生重大变化(如增减表空间)时自动进行控制文件及Spfile文件的备份。
下面我们来看一下这个过程:
a.设置控制文件自动备份:
[oracle@jumperoracle]$rmantarget/
RecoveryManager:
Release9.2.0.3.0-Production
Copyright(c)1995,2002,OracleCorporation.Allrightsreserved.
connectedtotargetdatabase:
HSJF(DBID=1052178311)
RMAN>CONFIGURECONTROLFILEAUTOBACKUPON;
usingtargetdatabasecontrolfileinsteadofrecoverycatalog
oldRMANconfigurationparameters:
CONFIGURECONTROLFILEAUTOBACKUPOFF;
newRMANconfigurationparameters:
CONFIGURECONTROLFILEAUTOBACKUPON;
newRMANconfigurationparametersaresuccessfullystored
RMAN>exit
这个设置可以在数据库中通过如下方式查询得到:
[oracle@jumperbdump]$sqlplus"/assysdba"
SQL*Plus:
Release9.2.0.3.0-ProductiononSatJan1701:
08:
052004
Copyright(c)1982,2002,OracleCorporation.Allrightsreserved.
Connectedto:
Oracle9iEnterpriseEditionRelease9.2.0.3.0-Production
WiththePartitioning,OLAPan
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Oracle9i 特点 spfile