打印

[分享] Oracle9i服务器参数文件

Oracle9i服务器参数文件

Oracle9i服务器参数文件

每一个数据库中都有一个操作系统文件叫参数文件,也叫初始化文件,该文件决定数据库的物理结构、内存、数据库的极限及系统大量的默认值,是进行数据库设计与性能调整的重要文件。
在Oracle9i中,首次引入了服务器参数文件SPFILE(Server Parameter File),该文件是存储于服务器端的二进制文件,从而解决了Oracle数据库中一直无法解决的技术难题,即不能在线修改数据库参数这一问题(ALTER SYSTEM所设定的参数可以直接保存在SPFILE中,不像以前那样需要手工更改参数文件才可以使改动永久生效),并且降低了手动修改参数文件容易发生的错误。
在Oracle9i中可以使用传统的参数文件Pfile及二进制服务器端参数文件Spfile。

■Pfile文件
①、Pfile(Parameter File)文件是基于文本格式的参数文件,含有数据库及例程的参数和配置。
②、默认名称:init+例程名.ora
默认路径:c:\oracle\ora90\database \ init+例程名.ora
该参数文件实际只是起到一个指向作用,它的内容为IFILE=′c:\oracle\admin\hisdb\pfile\init.ora′真正上实际使用的参数文件为c:\oracle\admin\hisdb\pfile\init.ora
③、直接指定初始化参数文件启动:
Startup pfile='c:\oracle\admin\hisdb\pfile\init.ora' (实际的参数文件)
间接指定初始化参数文件启动:
Startup pfile='c:\oracle\ora90\database\inithisdb.ora' (内容指向init.ora)
两种方法都可以正常启动数据库,最后都是打开实际的参数文件

■Spfile文件
①、Spfile(Server Parameter File,服务器参数文件)是基于二进制格式的参数文件,含有数据库及例程的参数和数值,不能用文本编辑工具打开。
②、默认名称:spfile+例程名.ora
默认路径:c:\oracle\ora90\database


Spfile和Pfile文件的比较
比较内容 Spfile Pfile
格式 二进制格式 文本格式
编辑方式 1、利用OEM修改
2、在SQL Plus里使用alter system语句进行修改 1、利用OEM修改
2、利用文本工具直接进行修改
默认名称 spfile+例程名.ora init+例程名.ora
默认路径 c:\oracle\ora90\database c:\oracle\ora90\database
c:\oracle\admin\hisdb\pfile
启动次序 Spfile优于Pfile Pfile低于Spfile
Ifile、Spfile参数:
Pfile link to Spfile 指定非缺省路径的spfile参数文件
SPFILE= 'C:\oracle\ora90\database\spfilehisdb.ora'
Pfile link to SPFILE
IFILE=' C:\oracle\admin\hisdb\pfile\init.ora'

参数文件启动顺序
重新启动数据库,使用startup 命令,Oralce 将会按照以下顺序在缺省目录中搜索参数文件:
1. spfile${ORACLE_SID}.ora
缺省目录UNIX: ${ORACLE_HOME}/dbs/ NT: ${ORACLE_HOME}\database
2. spfile.ora
缺省目录UNIX: ${ORACLE_HOME}/dbs/ NT: ${ORACLE_HOME}\database
3. init${ORACLE_SID}.ora
缺省目录UNIX: ${ORACLE_HOME}/dbs/ NT: ${ORACLE_HOME}\database or
${ORACLE_HOME}\admin\db_name\pfile\
SpfileOracle_Sid.ora――>Spfile.ora――>InitOracle_Sid.ora

★pfile和spfile相互转换
Create Spfile From Pfile(Spfile转Pfile 默认路径、默认文件名)
Create Pfile From Spfile(Pfile e转Spfile默认路径、默认文件名)
Create Spfile[=′路径+文件名′] From Pfile[=′路径+文件名′]
Create Pfile[=′路径+文件名′] From Spfile[=′路径+文件名′]
在实际操作中发现:
Create Spfile From Pfile(Spfile转Pfile 默认路径、默认文件名)
如数据库以Spfile启动则命令不能执行,Spfile被锁定。
Create Pfile From Spfile(Pfile e转Spfile默认路径、默认文件名)
如数据库以Pfile启动则命令不能执行,Pfile被锁定。
在实际操作中发现:在数据库关闭的状态下也能执行Pfile、Spfile的相互转换。如果Spfile的设置错误造成数据库的不能启动,可在数据库关闭的状态下将正常的Pfile转成Spfile文件启动数据库。
在实际操作中发现:使用命令Create Pfile From Spfile,spfile文件的参数内容将改写c:\oracle\ora90\database\inithisdb.ora (原来的inithisdb.ora内容是一个指向语句,指向实际的参数文件init.ora),而不是改写实际的参数文件c:\oracle\admin\hisdb\pfile\init.ora,如果以inithisdb.ora为参数启动数据库startup pfile=′路径+inithisdb.ora′数据库提示参数错误,但数据库自己选择inithisdb.ora作为参数文件游可以启动(SpfileOracle_Sid.ora、Spfile.ora不可用的情况下)。???
问题:使用命令Create Pfile From Spfile建立的Pfile文件,oracle根据什么将哪些参数写入Pfile?对于修改了oracle的默认值的参数将会被写到处到pfile。
在实际操作中发现:Spfile和Pfile都可以用OEM修改,但对于Spfile参数的修改可以是永久性的,即OEM可以对Spfile进行修改。对于Pfile的参数,数据库重新启动后修改的参数就失效了,即OEM不能对pfile进行修改,只能手工对pfile进行修改。

Oracle9i的动态参数和静态参数
所谓动态参数是指可以使用Alter Session或Alter System在数据库运行时进行修改并能立即生效的参数。(8i、9i的修改方法一致)。
所谓静态参数是指只能通过修改参数文件而且数据库必须要重新启动才能生效的参数。(8i、9i的修改方法一致)。
动态参数修改命令:
SQL>Alter Session Set Parameter_Name = Value;
SQL>Alter System Set Parameter_Name = Value [Deferred];
Alter Session 修改的参数只限于本次会话,退出会话再进入时修改失效
Alter System 修改的参数适用于数据库实例的所有会话,数据库关闭则修改失效。有特权用户和DBA可以执行
Alter System Deferred 修改是延迟修改,退出会话,下次进入会话时生效。有特权用户和DBA可以执行
*以上对动态参数的修改,数据库关闭修改失效。
★区分一个参数是动态参数还是静态参数:
静态参数:
Select name from v$parameter
Where isses_modifiable='false'and issys_modifiable='false'
动态参数
Select name from v$parameter
Where isses_modifiable='false' or issys_modifiable='false'

★修改数据库参数
1、传统的数据库文本参数 Pfile
Shutdown数据库
修改数据库文本参数
Startup数据库
2、服务器参数 Spfile
Alter System Set Parameter_Name = Value
Scope=(Spfile、Menory、Both)
参数 取值 结果 动态参数 静态参数
SCOPE Spfile 表示该修改只对服务器参数有效 数据库重启时有效,永久有效 同动态参数,静态参数只适于这种情况
Menory 表示该修改只对内存有效 立即有效,但不产生永久效果,因为没有修改服务器参数 不允许使用
Both 表示该修改对上述两种都有效 立即有效,永久有效 不允许使用
使用BOTH选项实际上等同于不带参数的ALTER SYSTEM语句
★删除参数
SQL>Alter System Set Parameter_Name =′′;

★使用SQL检测数据库是否使用服务器参数文件
SQL>Show Parameter Spfile
Name Type Value
Spfile String
如果Value为空值则表示数据库使用文本类型参数文件

使用OEM查看数据库是否使用服务器参数文件
(如果以Spfile启动,会出现started with。以pfile启动不出现started with)

★创建一个含有当前实例参数(值)的spfile或pfile
用spool命令将这个查询的结果输出到一个“pfile”文件。
ops$tkyte@ORA10GR2> select '*.'||name||' = ' || value
from v$parameter
where isdefault = 'FALSE'

TOP