alter system set
parameter_name =
parameter_value [, parameter_value ]...
[ COMMENT = string ]
[ DEFERRED ]
[ SCOPE = { MEMORY | SPFILE | BOTH } ]
[ SID = { 'sid' | * } ]
SCOPE = { MEMORY | SPFILE | BOTH }的认识
[1]SCOPE = SPFILE
The change is applied in the server parameter file only. The effect is as follows:
For dynamic parameters, the change is effective at the next startup and is persistent.
For static parameters, the behavior. is the same as for dynamic parameters. This is the only SCOPE specification allowed for static parameters.
[2]SCOPE = MEMORY
The change is applied in memory only. The effect is as follows:
For dynamic parameters, the effect is immediate, but it is not persistent because the server parameter file is not updated.
For static parameters, this specification is not allowed.
[3]SCOPE = BOTH
The change is applied in both the server parameter file and memory.
The effect is as follows:
For dynamic parameters, the effect is immediate and persistent.
For static parameters, this specification is not allowed.
For dynamic parameters, you can also specify the DEFERRED keyword. When specified, the change is effective only for future sessions.
查看系统是以pfile还是spfile启动
Select isspecified,count(*) from v$spparameter group by isspecified;
如果isspecified里有true,表明用spfile进行了指定配置
如果全为false,则表明用pfile启动
使用SPfile的好处
Spfile改正了pfile管理混乱的问题,在多结点的环境里,pfile会有多个image
启动时候需要跟踪最新的image。这是个烦琐的过程。
用spfile以后,所有参数改变都写到spfile里面(只要定义scope=spfile或both),参数配置有个权威的来源。
查看spfile location
show parameter spfile
从spfile获取pfile
Create pfile='d:pfileSID.ora' from spfile;
Create pfile='d:pfileSID.ora' from spfile='spfile_location';
从pfile获取spfile
Create spfile from pfile='Your_pfile_location'
Create spfile='spfile_location' from pfile='Your_pfile_location'
动态修改参数
alter system set parameter=Value scope=spfile|both|memory
Startup nomount的时候需要读去spfile或pfile,两者共存,spfile优先
强制用pfile启动
SQL>startup pfile='Your_Pfile.ora'
startup spfile='/data/oracle/product/10.2.0/db_1/dbs/dbs/spfile_mqq.ora' force
通过pfile连接到spfile启动
修改pfile文件
9I中用SPFILE参数文件(二进制形式的)代替了原来的文本形式的参数文件。在(我的SPFILE是在目录$ORACLE_HOME/database下)
其实这个SPFILE是在第一次创建数据库时,根据文本的参数文件生成的,只不过这个文本参数文件的名字是和平台相关的,而不像在9I以前是我们所熟悉的initSID.ora的形式。
你可以通过
create pfile='D:\Oracle9\app\admin\ora9\pfile\initORA9.ora'
from spfile;(该语句的执行者要有SYSDBA或SYSOPER的权限)
来将spfile的内容导出。如果spfile不位于创建时缺省的路径下,在上面的执行时就要规定spfile的完整路径。
启动数据库时(startup)用的就是这个SPFILE,如果想要用PFILE的话,就要在启动时特别指定。
Oracle9i引入了具有延续性的初始化参数文件SPFILE(Server Parameter FILE),所谓延续性是指对初始化参数的在线修改可以直接作用到参数文件中,这样所有被修改的参数将永久生效。
SPFILE有以下几个显著优点:
1、“ALTER SYSTEM”所设定的参数可以直接保存在SPFILE中,不像以前那样需要手工更改参数文件才可以使改动永久生效;
2、RMAN支持对SPFILE的备份,在这之前是无法做到使用RMAN来备份初始化参数文件的;
3、可以实现在本地没有远程数据库的INIT.ORA拷贝的时候,远程启动数据库;
4、在RAC的多个实例之间可以共享一个SPFILE。
下面我们将详细讨论这几个新特性。
1、SPFILE概述:
SPFILE是一个很小的二进制文件,有Oracle服务器自动维护,位于Oracle服务器端($ORACLE_HOME/dbs/spfile.ora),因为Oracle默认就是此SPFILE,所以我们可以通过SQL*PLUS或OEM无需指定初始化参数在客户端远程启动数据库。
2、SPFILE的创建、导出与更新:
SYSDBA/SYSOPER(我不知道别人是不是使用SYSOPER,反正我是从来不用这个)可以在数据库处于任何状态下(IDLE/NOMOUNT/MOUNT/OPEN),通过下面的语句来创建一个SPFILE:
CREATE SPFILE[='SPFILE_NAME'] FROM PFILE[='PFILE_NAME'];
而将这个语句反过来就可以通过SPFILE来建立PFILE,ORACLE称之为SPFILE的导出。
CREATE PFILE[='PFILE_NAME'] FROM SPFILE[='SPFILE_NAME'];
导出的文件格式如下:
*.background_dump_dest='/oracle/app/oracle/admin/ora9/bdump'
*.compatible='9.2.0.0.0'
*.control_files='/dev/rcon1','/dev/rcon2','/dev/rcon3'
*.core_dump_dest='/oracle/app/oracle/admin/ora9/cdump'
*.db_block_size=8192
*.db_cache_size=3072000000#changed at 20030425
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='ora9'
导出SPFILE由两个主要的用途:批量修改参数、作为SPFILE的一种备份方式(如果数据库采用RMAN备份方式,我们可以直接用RMAN来备份SPFILE)。当批量修改(编辑PFILE)完成后,我们可以通过重新创建SPFILE来实现对SPFILE的更新。
3、参数的修改:
对于单个参数的修改,我们可以通过下面的语句来完成:
ALTER SYSTEM SET PARAMETER=value
[COMMENT='COMMENT TEXT'][SCOPE=MEMORY|SPFILE|BOTH]
通过SCOPE选项实现了对初始化参数更改的永久性。
对于动态参数,可以加上DEFERRED关键字来标明更改仅对以后的SESSIONS起作用。
SQL> alter system set sort_area_size=104800
2 comment='temporary seting' scope=spfile;
System altered.
4、启动时参数文件的读取顺序:
数据库启动时STARTUP默认使用初始化参数文件的顺序是: [指定的PFILE -->] SPFILE --> $ORACLE_HOME/dbs/PFILE,当然在PFILE中也可以指向SPFILE。
5、读取SPFILE参数设置:
我们可以从v$spparameter, v$parameter, v$parameter2中获得相关参数的信息,也依旧可以使用SHOW SGA:
SQL> select name,value,update_comment from v$spparameter
2 where name='sort_area_size';
NAME VALUE UPDATE_COMMENT
-------------------- ------------------------------
sort_area_size 104800 temporary seting
6、共享初始化参数文件:
在9i RAC中,多个实例可以共享同一个初始化参数文件,而各实例所特有的参数值可以通过在参数前加上实例名称来标示:
hawk19:sort_area_size=104800
hawk29:sort_area_size=102400