Welcome 微信登录

首页 / 数据库 / MySQL / Oracle 参数修改小结

v$parameter

Oracle参数的修改比较复杂,有些参数是可以在session级别修改,有些则必须在system级别修改,有些参数修改后马上生效(不需要重启),有些参数则必须重启才能生效,那么我们如何知道这些信息呢?可以查询动态视图v$parameter中的两列(如下所示)得知:1. ISSES_MODIFIABLE指示参数是否可以在session级别( Alter session set )修改(True or False)2. ISSYS_MODIFIABLE指示参数是否可以在system级别(Alter system set)修改,有如下3个取值:1)IMMEDIATE - 立即生效2)DEFERRED - 下个session生效3)False - 必须得重启才能生效(必须指定Scope=spfile)我们来看下面的例子:SYS@TEST16>select name,ISSES_MODIFIABLE,ISSYS_MODIFIABLE from v$parameter where name in ("workarea_size_policy","audit_file_dest","sga_target","sga_max_size");NAME                                                                           ISSES_MODIFIABL ISSYS_MODIFIABL
-------------------------------------------------------------------------------- --------------- ---------------
sga_max_size                                                                   FALSE         FALSE
sga_target                                                                     FALSE         IMMEDIATE
audit_file_dest                                                                  FALSE         DEFERRED
workarea_size_policy                                                           TRUE            IMMEDIATE其中只有workarea_size_policy可以在session级别修改,其它3个都只能在system级别修改。 sga_target修改后立即生效,audit_file_dest修改后下一个session生效,sga_max_size修改后必须重启才能生效(spfile)。 

ALTER SESSION/SYSTEM SET 

alter session set的语法如下:alter session set parameter_name = parameter_value;如上所述,并不是所有的参数都可以在session级别修改,只有isses_modifiable为true才可以。alter system set的语法如下: 其中:Comment(可选):修改时可附加说明;Deferred(可选):如果v$parameter的issys_modifiable为deferred,修改时必须加上deferred选项,表示下个session才生效。Scope(默认:both):有如下3个取值:-- memory 表示只在内存中修改,实例重启后失效;-- spfile表示只在spfile中修改,只有当重启重新读取spfile之后才生效;-- both表示同时在memory和spfile中修改(推荐)Sid (默认:*):该选项针对RAC,默认为*,表示RAC的所有实例同时修改,如果不想全部修改,用Sid指定Oracle实例即可。

一个例子

今天,开发人员抱怨Oracle数据库时常连接不上,报如下错误:ORA-12519, TNS:no appropriate service handler found该错误是因为Oracle参数processes设置过小,需要调整它,processes当前的值为:SYS@TEST16>show parameter processes;
NAME                               TYPE        VALUE
------------------------------------ ----------- ------------------------------
processes                            integer   100通过查询v$parameter(如下所示)可知,该参数是系统级别的,且必须重启才能生效:select name,ISSES_MODIFIABLE,ISSYS_MODIFIABLE from v$parameter where name="process";
NAME                                                                           ISSES_MODIFIABL ISSYS_MODIFIABL
-------------------------------------------------------------------------------- --------------- ---------------
processes                                                                        FALSE         FALSE通过alter system set修改:SYS@TEST16>alter system set processes=1500 comment="change from 100 to 1500" scope=spfile;System altered.注意:这里一定要加上scope=spfile,否则会报如下错误,因为issys_modifiable=falseORA-02095: specified initialization parameter cannot be modified推荐阅读:Oracle基础教程之通过RMAN复制数据库 http://www.linuxidc.com/Linux/2013-07/87072.htmRMAN备份策略制定参考内容 http://www.linuxidc.com/Linux/2013-03/81695.htmRMAN备份学习笔记 http://www.linuxidc.com/Linux/2013-03/81892.htmOracle数据库备份加密 RMAN加密 http://www.linuxidc.com/Linux/2013-03/80729.htm更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12Oracle 在线段收缩(Online Segment Shrink)MySQL 账户及权限管理相关资讯      Oracle修改参数 
  • Oracle在Linux内核参数的修改  (11/19/2012 19:03:17)
本文评论 查看全部评论 (0)
表情: 姓名: 字数


评论声