目錄(?)[+]
- Oracle區分參數是動态靜态
- oracle參數檔案概述
- Pfile檔案
- Spfile檔案
- 參數檔案啟動順序
- Spfile和Pfile檔案比較
- 檢視資料庫以什麼檔案啟動
- pfile和spfile互相轉換
- Oracle 參數修改
- Oracle 參數分類
- Oracle 參數變更生效範圍
- oracle參數檔案概述
轉載http://blog.csdn.net/java3344520/article/details/7998563
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語句