参数文件记录了数据库的配置,在数据库启动时,oracle要根据参数文件中的参数设置配置数据库。如要为各个内存池分配多少内存,允许打开的进程数和会话等
要想让数据库启动,必须先读取参数文件。参数文件中的参数 我们通常称其为初始化参数,简称就是参数
参数文件通常分为两大类
数据库启动的时候要用参数文件,先查找spfile<sid>,找不到再spfile.ora,再找不到 然后 init<sid>.ora
1.pfile ---文本文件 可以通过vi编辑修改 init<sid>.ora
2.spfile ----9i 及之后推出 s代表server p代表parameter,二进制文件 只能存放在服务器端 spfile<sid>.ora
因为spfile是二进制文件 所以可以被rman备份
spfile只能通过 alter system|session set parameter_name=values <>的方式修改
参数文件位置 $ORACLE_HOME/dbs
cd $ORACLE_BASE/admin/$ORACLE_SID/PFILE
init.ora.1022015233559 这个是初始化参数文件,只在数据库初始化时候使用,以后不再使用
oracle9i 之后默认都是spfile
参数文件的转化
create pfile from spfile 由spfile
这个时候创建pfile的路径为$ORACLE_HOME/dbs
也可以指定路径
create pfile ='.....' from spfile;
反之对于创建spfile也适用
11g更强大的功能
create spfile =‘....’ from memory
从内存中创建
修改参数文件 通过修改Initsid的方式修改的话 oracle还是会以spfile的方式启动 修改不会生效
所以要以pfile的方式启动
startup pfile='$ORACLE_HOME/dbs/initdevdb.ora'
此时修改spfile create spfile from pfile ,spfile文件就会覆盖掉,下次就会以新的参数启动
对于spfile的修改
alter system|session set parametername=value scope=memory|spfile|both
memory表示只修改当前实例,不修改成参数文件,下次启动不生效,只对当前instance内存有效
spfile --只对spfile修改,必须下次启动才生效,当前实例没有修改
both --把内存和参数文件都会修改 为不指定scope的默认值
system session
v$parameter ---isses_modifiable 可以被alter session修改
---issys_modifiable 可以被alter system修改
对于rac还可以 指定sid修改
对于查看参数文件的值可以用下面的方法
show parameter sga_
查看sga相关的参数
SQL> alter system set sga_max_size=200m;
alter system set sga_max_size=200m
*
ERROR at line 1:
ORA-02095: specified initialization parameter cannot be modified
这个表示sqa_max_size只能在启动的时候修改 为静态参数
所以这时只能通过修改spfile文件
alter system set sga_max_size=200m scope=spfile;
也可以 alter system set sga_max_size=200m scope=spfile sid=''
对于集群有应用
alter system set pga_aggregate_target=20m scope=memory;
只对当前内存修改 下次启动后这个值并不会被修改