在Oracle 9i以前,Oracle只有一个文本形式的参数配置文件init(sid).ora也就是pfile,如果要修改数据库参数,必须编辑修改该文本文件中相应参数的值,然后再重启数据库才能生效。从Oracle 9i开始,Oracle引入了二进制的参数配置文件spfile(sid).ora也就是spfile,如果数据库使用了spfile,Oracle的许多参数就可以通过命令动态实时修改,切注意spfile文件不允许手工编辑,否则会损坏。
1、Oracle9i读取初始化参数文件的顺序
Oracle9i数据库启动时读取参数文件的顺序是:
会首先在$ORACLE_HOME/dbs(Windows为database目录)目录下查找spfile(sid).ora文件(spfile),如果有,则利用该文件启动数据库;
若找不到该spfile,则继续在$ORACLE_HOME/dbs(Windows为database目录)目录下查找init(sid).ora文件(pfile),若有则利用该文件启动数据库;
若以上文件都没有,则oracle会报错,无法启动。
2、检查Oracle版本和参数值
可以用SYS用户在SQLPLUS中发出以下命令查询oracle的版本信息:
SQL>select * from v$version;
返回如下结果:
BANNER
--------------------------------------------------------------------
Oracle9i Enterprise Edition Release 9.2.0.5.0 - 64bit Production
PL/SQL Release 9.2.0.5.0 - Production
CORE 9.2.0.6.0 Production
TNS for Solaris: Version 9.2.0.5.0 - Production
NLSRTL Version 9.2.0.5.0 – Production
以上结果说明该数据库版本为64位的oracle 9.2.0.5。如果返回结果中没有64bit Production的信息,则为32位版本的数据库。
特别要注意,32位版本oracle数据库的SGA区最大不超过1.7G,如果在初始化参数文件里配置的SGA超过了1.7G,oracle无法利用,且可能会导致不可测的问题。Windows平台在设置了boot.ini后,最多可以达到2.6G
3、设置Oracle9i初始化参数
Oracle9i初始化参数我们只需关注两种
动态参数,可以用alter system命令修改,修改后立即生效;
静态参数,可以用alter system..scope=spfile修改,修改后必须重新启动实例才能够生效;
查看初始化参数的类型
SQL> select name, value, issys_modifiable from v$parameter;
如果issys_modifiable为immediate说明是动态参数;
如果issys_modifiable为false说明是静态参数;
SPFILE的备份
彩铃要求统一使用SPFILE,因此在修改初始化参数前应对SPFILE进行一次备份。
查看Oracle是否使用SPFILE启动:
SQL> show parameter spfile
--如结果为空,则说明使用的不是SPFILE,而是PFILE!
备份SPFILE(SYSDBA登陆):
SQL> create pfile='/home/oracle/spfile.bak' from spfile;
create pfile='/home/spfile.bak' from /dev/spfile;
修改初始化参数
修改初始化参数必须用AS SYSDBA身份登陆数据库。
动态参数
SQL> alter system set job_queue_processes=20;
静态参数
SQL> alter system set sga_max_size=2048M scope=spfile;
修改完毕,重新启动实例使之生效。