Home > Database > Mysql Tutorial > Oracle 参数修改小结

Oracle 参数修改小结

WBOY
Release: 2016-06-07 17:31:16
Original
841 people have browsed it

Oracle参数的修改比较复杂,有些参数是可以在session级别修改,有些则必须在system级别修改,有些参数修改后马上生效(不需要重启

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的语法如下:

Oracle 参数修改小结

 

其中:

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                                                                            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=false

ORA-02095: specified initialization parameter cannot be modified

推荐阅读:

Oracle基础教程之通过RMAN复制数据库

RMAN备份策略制定参考内容

RMAN备份学习笔记

Oracle数据库备份加密 RMAN加密

linux

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template