eygle.com   eygle.com
eygle.com eygle
eygle.com  
 

« Oracle9i新特点-如何修改Spfile的参数 | Blog首页 | Oracle9i新特点-在spfile中设置Event事件 »

Oracle9i新特点:SPFILE的使用

本文发表于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就会自动生效。

下一页>>

 


历史上的今天...
    >> 2016-10-10文章:
    >> 2012-10-10文章:
    >> 2008-10-10文章:
           关于Mutex的笔记
    >> 2006-10-10文章:

无觅

By eygle on 2005-10-10 19:52 | Comments (1) | FAQ | 470 |

1 Comment

提个小小的书写问题:
不是NT: ${ORACLE_HOME}\database
而死NT: %ORACLE_HOME%\database


CopyRight © 2004~2020 云和恩墨,成就未来!, All rights reserved.
数据恢复·紧急救援·性能优化 云和恩墨 24x7 热线电话:400-600-8755 业务咨询:010-59007017-7040 or 7037 业务合作: marketing@enmotech.com