视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
Oracle参数修改小结
2020-11-09 10:42:23 责编:小采
文档


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

其中:

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加密

下载本文
显示全文
专题