Oracle9i新特点spfile.docx

上传人:b****6 文档编号:4403802 上传时间:2022-12-01 格式:DOCX 页数:26 大小:23.89KB
下载 相关 举报
Oracle9i新特点spfile.docx_第1页
第1页 / 共26页
Oracle9i新特点spfile.docx_第2页
第2页 / 共26页
Oracle9i新特点spfile.docx_第3页
第3页 / 共26页
Oracle9i新特点spfile.docx_第4页
第4页 / 共26页
Oracle9i新特点spfile.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

Oracle9i新特点spfile.docx

《Oracle9i新特点spfile.docx》由会员分享,可在线阅读,更多相关《Oracle9i新特点spfile.docx(26页珍藏版)》请在冰豆网上搜索。

Oracle9i新特点spfile.docx

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 初中作文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1