Oracle區分參數是動態、靜態

Oracle區分參數是動態、靜態

1oracle參數文件概述

每一個數據庫中都有一個操作系統文件叫參數文件,也叫初始化文件,該文件決定數據庫的物理結構、內存、數據庫的極限及系統大量的默認值,是進行數據庫設計與性能調整的重要文件。

在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>selectdistinct ISSPECIFIED  from v$spparameter;

ISSPECIFIED

-----------

TRUE

FALSE

備註:如果只有FALSE,使用的是PFILE啓動,如果有TRUE,說明用的是SPFILE啓動

 

方法二:

SQL>showparameters 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[=′路徑+文件名′]

4Oracle 參數修改

動態參數是指可以使用AlterSession或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可以執行

5Oracle 參數分類

參數的相關信息保存在視圖V$SYSTEM_PARAMETER(v$parameter)中。

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

 

SQL>desc V$PARAMETER;

Name                  Type          Nullable Default Comments

---------------------------------- -------- ------- --------

NUM                   NUMBER        Y    Parameternumber

NAME                  VARCHAR2(80)  Y     Name of the parameter

TYPE                  NUMBER        Y    Parametertype

VALUE                 VARCHAR2(512) Y     Instance-wide parametervalue(session或實例值)

DISPLAY_VALUE         VARCHAR2(512) Y     顯示名稱

ISDEFAULT             VARCHAR2(9)   Y     Indicates whether theparameter is set to the default value (TRUE) or the parameter value wasspecified 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     Indicateswhether the parameter can be changed with ALTER SYSTEM and when the changetakes effect(參數在實例啓動後是否可由實例修改)                

ISINSTANCE_MODIFIABLEVARCHAR2(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 whereissys_modifiable='FALSE';

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

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

 

靜態參數舉例:

SQL> alter system set processes=151;

alter system set processes=151

                 *

ERROR at line 1:

ORA-02095: specified initializationparameter cannot be modified

動態參數舉例:

SQL> alter system set undo_retention=10800scope=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 initializationparameter is not modifiable with this option

SQL> alter system set sort_area_size = 65536 deferred;

System altered.

6Oracle 參數變更生效範圍

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

參數

取值

結果

動態參數

靜態參數

SCOPE

Spfile

表示該修改只對服務器參數有效

數據庫重啓時有效,永久有效

同動態參數,靜態參數只適於這種情況

Menory

表示該修改只對內存有效

立即有效,但不產生永久效果,因爲沒有修改服務器參數

不允許使用

Both

表示該修改對上述兩種都有效

立即有效,永久有效

不允許使用

使用BOTH選項實際上等同於不帶參數的ALTER SYSTEM語句


發佈了115 篇原創文章 · 獲贊 21 · 訪問量 67萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章