Chinaunix首页 | 论坛 | 博客
  • 博客访问: 654532
  • 博文数量: 244
  • 博客积分: 9445
  • 博客等级: 中将
  • 技术积分: 2572
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-11 16:39
个人简介

简单点,再简单点

文章分类

全部博文(244)

文章存档

2020年(2)

2019年(1)

2018年(2)

2014年(2)

2013年(4)

2012年(13)

2011年(24)

2010年(12)

2009年(34)

2008年(61)

2007年(51)

2006年(38)

我的朋友

分类: Oracle

2006-09-16 11:55:43

这是Oracle9i的一个新特性,体现了Oracle在安全性和可靠性上的一个提高,Rman的备份也把spfile纳入了备份恢复体系当中。
在Oracle9i中,spfile被引入用于服务器端管理初始化参数。9i以前,Oracle使用Pfile存储初始化参数,在实例启动时被读取,任何修改需要重起实例才能生效,使用spfile可以使用alter system或alter session来动态修改那些可动态修改的参数,并立即生效。
spfile是一个二进制文件。除了第一次启动数据库需要Pfile,我们可以不再需要PFILE,Oracle强烈推荐使用spfile,应用其新特性来存储和维护初始化参数设置。
一、创建SPFILE
缺省的,Oracle使用PFIle启动数据库,spfile必须由pfile创建,新创建的spfile在下一次启动数据库时生效,Create spfile需要sysdba或者sysoper的权限。语法如下:
Create spfile ='Path\spfilename' from pfile='path\pfilename'
如: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;
系统已更改。
而单独用scope=spfile则会如下:
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;
系统已更改。
 
二. 使用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就会自动生效。
 
阅读(1039) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~