您的位置:首页 > 数据库 > Oracle

Oracle区分参数是动态、静态

2014-11-25 18:01 302 查看
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

1、oracle参数文件概述

每一个数据库中都有一个操作系统文件叫参数文件,也叫初始化文件,该文件决定数据库的物理结构、内存、数据库的极限及系统大量的默认值,是进行数据库设计与性能调整的重要文件。

在Oracle9i中,首次引入了服务器参数文件SPFILE(Server
Parameter
File),该文件是存储于服务器端的二进制文件,从而解决了Oracle数据库中一直无法解决的技术难题,即不能在线修改数据库参数这一问题(ALTER
SYSTEM所设定的参数可以直接保存在SPFILE中,不像以前那样需要手工更改参数文件才可以使改动永久生效),并且降低了手动修改参数文件容易发生的错误。

在Oracle9i及其后续版本中可以使用传统的参数文件Pfile及二进制服务器端参数文件Spfile。

1.1 Pfile文件

①Pfile(Parameter
File)文件格式:
文件是基于文本格式的参数文件,含有数据库及例程的参数和配置。

②Pfile默认名称和路径(10g):

默认名称:init<SID>.ora

默认路径:$ORACLE_BASE\db_1\database\init<SID>.ora。该参数文件实际只是起到一个指向作用,它的内容为包含了真实参数文件路径。

③初始化参数文件使用:

Startup
pfile='$ORACLE_BASE\admin\<SID>\pfile\init.ora'(实际的参数文件)

Startup
pfile='$ORACLE_BASE\db_1\database\init<SID>.ora'(内容指向init.ora)

以上两种方法都可以正常启动数据库,最后都是打开实际的参数文件

1.2 Spfile文件

①Spfile(Server Parameter
File,服务器参数文件)文件格式:
是基于二进制格式的参数文件,含有数据库及例程的参数和数值,不能用文本编辑工具打开。

②Spfile默认名称和路径:

默认名称:spfile<SID>.ora

默认路径:$ORACLE_BASE\db_1\database

1.3
参数文件启动顺序

startup
命令重新启动数据库,Oralce默认按照以下顺序在缺省目录中搜索参数文件:

1.spfile${ORACLE_SID}.ora

UNIX默认目录:${ORACLE_HOME}/dbs/

NT默认目录: ${ORACLE_HOME}\database

2.spfile.ora

UNIX默认目录:${ORACLE_HOME}/dbs/

NT默认目录:${ORACLE_HOME}\database

3.init${ORACLE_SID}.ora

UNIX默认目录:${ORACLE_HOME}/dbs/

NT默认目录:${ORACLE_HOME}\database or

${ORACLE_HOME}\admin\db_name\pfile\

加载参数文件的优先级如下:

Spfile<SID>.ora――>Spfile.ora――>Init<SID>.ora

1.4
Spfile和Pfile文件比较

Spfile和Pfile文件的比较

比较内容

Spfile

Pfile

格式

二进制格式

文本格式

编辑方式

1、利用OEM修改

2、在SQL Plus里使用alter system语句进行修改

1、利用OEM修改(重启失效)

2、利用文本工具直接进行修改

默认名称

spfile<SID>.ora

init<SID>.ora

默认路径

$ORACLE_BASE\db_1\database

$ORACLE_BASE\db_1\database
$ORACLE_BASE\admin\<SID>\pfile\init.ora

启动次序

Spfile优于Pfile

Pfile低于Spfile


2、查看数据库以什么文件启动

方法一:
SQL>select
distinct ISSPECIFIED from
v$spparameter;

ISSPECIFIED
-----------
TRUE
FALSE
备注:如果只有FALSE,使用的是PFILE启动,如果有TRUE,说明用的是SPFILE启动

方法二:
SQL>show
parameters spfile
NAME
TYPE
VALUE
-----------------------------------------------
------------------------------
spfile
string
/u01/app/oracle/product/10.2/d
b_1/dbs/spfilexmlgis.ora
备注:如果有值说明使用spfile启动,反之pfile

3、pfile和spfile相互转换

Spfile转Pfile:

Create Spfile From Pfile

Create Spfile[=′路径+文件名′]From
Pfile[=′路径+文件名′]

Pfile 转Spfile:

Create Pfile From Spfile

Create Pfile[=′路径+文件名′]
FromSpfile[=′路径+文件名′]


4、Oracle 参数修改

动态参数是指可以使用Alter Session或Alter
System在数据库运行时进行修改并能立即生效的参数。

静态参数是指只能通过修改参数文件而且数据库必须要重新启动才能生效的参数。

参数修改命令:

SQL>Alter
Session Set Parameter_Name = Value;

SQL>Alter
System Set Parameter_Name = Value [Deferred];

Alter Session

修改的参数只限于本次会话,退出会话再进入时修改失效

Alter System

修改的参数适用于数据库实例的所有会话,数据库关闭则修改失效。有特权用户和DBA可以执行

Alter System Deferred

修改是延迟修改,退出会话,下次进入会话时生效。有特权用户和DBA可以执行


5、Oracle 参数分类

参数的相关信息保存在视图V$SYSTEM_PARAMETER(v$parameter)中。

Displays information about the
initialization parameters that are currently in effectfor the
instance. A new session inherits parameter values from the
instance-wide values.

SQL>desc
V$PARAMETER;
Name
Type
Nullable Default Comments
----------------------------------
-------- ------- --------
NUM
NUMBER
Y Parameter
number
NAME
VARCHAR2(80)
Y
Name of the parameter
TYPE
NUMBER
Y Parameter
type
VALUE
VARCHAR2(512)
Y
Instance-wide
parameter value(session或实例值)
DISPLAY_VALUE
VARCHAR2(512)
Y
显示名称
ISDEFAULT
VARCHAR2(9)
Y
Indicates whether the parameter is
set to the default value (TRUE) or the parameter value was
specified in the parameter file (FALSE) (参数默认值)
ISSES_MODIFIABLE
VARCHAR2(5)
Y
Indicates whether theparameter can
be changed with ALTER SESSION (TRUE) or not
(FALSE)(参数值是否可以session级可更改)
ISSYS_MODIFIABLE
VARCHAR2(9)
Y Indicates
whether the parameter can be changed with ALTER SYSTEM and when the
change takes effect(参数在实例启动后是否可由实例修改)
ISINSTANCE_MODIFIABLE
VARCHAR2(5)
Y
ISMODIFIED
VARCHAR2(10)
Y
实例启动后参值是否被修改,session级修改(alter
session),值为MODIFIED;实例级修改(alter
system),则值为SYS_MODIFIED


根据v$system_parameter里面的issys_modifiable可以得到其中FLASE:静态参数,IMMEDIATE:动态参数,DEFERREDLEVEL级别动态参数(即只对后续session会话生效).

DEFERRED
----->也是动态参数,对于当前session无效,下一个session生效

FALSE
----->静态参数,需要重启db才能生效

IMMEDIATE
----->动态参数,立即生效

SQL> select
count(*) from v$system_parameter where
issys_modifiable='FALSE';

SQL> select
count(*) from v$system_parameter where
issys_modifiable='IMMEDIATE';

SQL> select
count(*) from v$system_parameter where
issys_modifiable='DEFERRED';

静态参数举例:

SQL> alter
system set processes=151;

alter system set processes=151

*

ERROR at line 1:

ORA-02095: specified initialization parameter cannot be
modified

动态参数举例:

SQL> alter system set undo_retention=10800
scope=both;

System altered.

动态参数(deferred)举例

deferred指定系统修改是否只对以后的会话生效(对当前建立的会话无效,包括执行此修改的会话)。默认情况下,ALTER
SYSTEM命令会立即生效,但是有些参数不能“立即”修改,只能为新建立的会话修改这些参数。

SQL> alter
system set sort_area_size = 65536;

alter system set sort_area_size = 65536

ERROR at line 1:

ORA-02096: specified initialization parameter is not modifiable
with this option

SQL> alter system set sort_area_size = 65536
deferred;

System altered.


6、Oracle 参数变更生效范围

AlterSystem Set Parameter_Name = Value
Scope=(Spfile、Menory、Both)


参数

取值

结果

动态参数

静态参数

SCOPE

Spfile

表示该修改只对服务器参数有效

数据库重启时有效,永久有效

同动态参数,静态参数只适于这种情况

Menory

表示该修改只对内存有效

立即有效,但不产生永久效果,因为没有修改服务器参数

不允许使用

Both

表示该修改对上述两种都有效

立即有效,永久有效

不允许使用

使用BOTH选项实际上等同于不带参数的ALTER
SYSTEM语句
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: