Oracle區分參數是動態、靜態
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>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[=′路徑+文件名′]
4、Oracle 參數修改
動態參數是指可以使用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可以執行 |
5、Oracle 參數分類
參數的相關信息保存在視圖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.
6、Oracle 參數變更生效範圍
AlterSystem Set Parameter_Name = Value Scope=(Spfile、Menory、Both)
參數 |
取值 |
結果 |
動態參數 |
靜態參數 |
SCOPE |
Spfile |
表示該修改只對服務器參數有效 |
數據庫重啓時有效,永久有效 |
同動態參數,靜態參數只適於這種情況 |
Menory |
表示該修改只對內存有效 |
立即有效,但不產生永久效果,因爲沒有修改服務器參數 |
不允許使用 |
|
Both |
表示該修改對上述兩種都有效 |
立即有效,永久有效 |
不允許使用 |
使用BOTH選項實際上等同於不帶參數的ALTER SYSTEM語句