暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle9i新特点:SPFILE的使用

原创 eygle 2005-10-10
927

本文发表于itpub技术丛书《Oracle数据库DBA专题技术精粹》,未经许可,严禁转载本文.


简介:
本文是关于Oracle9i spfile的一篇文字,这是Oracle9i的一个新特性,虽然是很小的一个改进,但是却体现了Oracle在安全性和可靠性上的一个提高,
通过rman备份或者控制文件的自动备份,Oracle把spfile纳入到整个备份恢复体系当中。
本文对spfile的使用和修改等作了详细描述,对于其备份恢复也给出了相应的例子,希望大家能够从这篇文章中受益,从Oracle的这个新特性中获得收益。



在Oracle9i中,一个新的文件被引入-spfile,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文件。
然而意外的时,Oracle并没有向其他文件一样,在运行期间保持锁定,让我们作以下试验:






 


SQL> host rename SPFILEEYGLEN.ORA SPFILEEYGLEN.ORA.BAK


SQL> alter system set db_cache_size=24M scope=both;
系统已更改。
SQL> host dir *.ora
驱动器 E 中的卷是 Doc
卷的序列号是 980C-8EFF


E:\\Oracle\\Ora9iR2\\database 的目录


2003-02-10 14:35 2,048 PWDeyglen.ORA
1 个文件 2,048 字节
0 个目录 150,347,776 可用字节


SQL> alter system set db_cache_size=24M scope=spfile;
alter system set db_cache_size=24M scope=spfile
*
ERROR 位于第 1 行:
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就会自动生效。


下一页>>


 

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论