ORACLE初始化引數檔案介紹

kunlunzhiying發表於2016-12-22

Viewing and Modifying Initialization Parameters


初始化引數有三種修改方式:

SCOPE=MEMORY
僅當前例項中下生效,重啟例項後恢復原配置。
SCOPE=BOTH
直到下一次引數值被改變之前,一直生效。
SCOPE=SPFILE
修改的值被記錄再配置檔案中,直到例項重啟後生效。


對於動態引數還可以使用 SCOPE=DEFERRED 該設定允許設定的動態引數在下一個會話生效。當使用SCOPE=SPFILE or BOTH時可以透過COMMENT增加註解,該註解會被寫入到spfile中

alter system
set SEC_MAX_FAILED_LOGIN_ATTEMPTS=3
COMMENT='Reduce from 10 for tighter security.'
SCOPE=SPFILE

About Initialization Parameters and Initialization Parameter Files
 
當oracle例項啟動時,需要讀取初始化引數檔案,引數檔案至少要指定DB_NAME引數。其它引數均為預設值。
官方文件提到這樣一句話:
The initialization parameter file can be either a read-only text file, a PFILE, or a read/write binary file.The binary file is called a server parameter file. A server parameter file enables you to change initialization parameters with ALTER SYSTEM commands and to persist the changes across a shutdown and startup. It also provides a basis for self-tuning by Oracle Database. For these reasons, it is recommended that you use a server parameter file. You can create one manually from your edited text initialization file, or automatically by using Database Configuration Assistant (DBCA) to create your database.
初始化檔案既可以是隻讀的文字檔案,也可以使PFILE引數檔案,或者是可讀寫的二進位制檔案。
二進位制檔案為server parameter file 即我們常說的spfile,該檔案中的引數需要透過ALTER SYSTEM修改,並且重啟後生效。
the Oracle instance first searches for a server parameter file in a default location, and if it does not find one, searches for a text initialization parameter file
oracle啟動的時候會自動去預設目錄下查詢SPFILE,找不到的時候再找pfile
You can also override an existing server parameter file by naming a text initialization parameter file as an argument of the STARTUP command.
也可以在使用startup命令時指定讀取pfile的來覆蓋spfile中定義的引數。
預設目錄是在ORACLE_HOME/dbs下,命名規則為initORACLE_SID.ora
引數的格式為
parameter_name=(value[,value]....)
Parameter values of type string must be enclosed in single quotes ('). Case (upper or lower) in filenames is significant only if case is significant on the host operating system.
引數值如果為字串的必須用單引號引用。大小寫區別取決於系統。
If you repeat a parameter that does not accept multiple values, then only the last value specified takes effect.
對於不允許重複的引數,僅以最後一條給定的值為準。
全域性資料庫名可以是主機名加域名
如: ts.cn.example.com
DB_NAME='ts'
DB_DOMAIN='cn.example.com'
DB_NAME必須是字串且不能大於8個字元。
資料庫建立過程中,DB_NAME被寫入資料檔案,重做日誌檔案和控制檔案中,所以當資料庫啟動時如果DB_NAME與資料檔案中的名字不同,資料庫將無法啟動。

Specifying a Fast Recovery Area
快速恢復區作為一個單獨的區域,用於儲存和管理備份恢復檔案。

DB_RECOVERY_FILE_DEST
該區域可以定義存放在目錄,檔案系統,ASM磁碟組,而非裸裝置檔案系統上。

RECOVERY_FILE_DEST_SIZE
指定該區域的最大大小,並且需要在指定DB_RECOVERY_FILE_DEST之前指定該引數值。

在RAC(Real Application Cluster)環境,該區域必須被定義存放於叢集檔案系統,ASM磁碟組或類似於NFS共享檔案系統上。且DB_RECOVERY_FILE_DEST及DB_RECOVERY_FILE_DEST_SIZE兩個引數,RAC環境中的所有例項均需設定相同的值。
官方文件中同時說明,LOG_ARCHIVE_DEST和LOG_ARCHIVE_DUPLEX_DEST不能與DB_RECOVERY_FILE_DEST同時啟用。但是可以用LOG_ARCHIVE_DEST_n指定歸檔日誌的路徑到快速恢復區。

You cannot enable these parameters if you have set values for the LOG_ARCHIVE_DEST andLOG_ARCHIVE_DUPLEX_DEST parameters. You must disable those parameters before setting up the Fast Recovery Area. You can instead set values for the LOG_ARCHIVE_DEST_n parameters. TheLOG_ARCHIVE_DEST_1 parameter is implicitly set to point to the Fast Recovery Area if a local archiving location has not been configured and LOG_ARCHIVE_DEST_1 value has not been set.


Specifying Control Files
一般可以給資料庫指定一到多個控制檔案,在create database語句中,控制檔案透過語句中的控制檔案列表被建立。
如果在初始化引數中沒有包括控制檔案引數,則預設將控制檔案與引數檔案建立在同一個目錄下。
如果使用了OMF(檔案管理),則資料庫建立管理控制檔案。

Specifying Database Block Sizes
DB_BLOCK_SIZE初始化資料庫塊大小,作為系統表空間及其他表空間的預設塊大小。ORACLE還支援4種非標準塊大小
典型設定,DB_BLOCK_SIZE引數被設定為4k或8k,如果不設定,則調整為與作業系統塊大小相同。
除重建庫以外,庫建立後資料塊大小不可變更,資料庫的塊大小應該是作業系統塊的整數倍。

Nonstandard Block Sizes

非標準塊的指定可以透過CREATE TABLESPACE語句中的 BLOCKSIZE 子句指定。
非標準塊可以指定的大小為2的次方,包括 2k,4k,8k,16k,32k。作業系統平臺也影響最大非標準塊的指定。
注:32k僅在64位平臺下有效
注意:ORACLE建議指定2K的塊大小,當磁碟扇區大小為4K時,因為效能降級可能發生(這部分主要針對redo日誌塊大小規劃而言)。
官網上提到通常redo log的塊大小與磁碟扇區大小一致。對於一些高效能的磁碟(具有4K的扇區),ORACLE會自動將redo log的塊大小同樣調整到4K,但是伴隨而來的是遞增的redo wastage現象,透過V$SYSSTAT,V$SESSTAT可以檢視redo wastage的情況
SELECT name, value FROM v$sysstat WHERE name = 'redo wastage';11GR2以後可以透過CREATE DATABASE,ALTER DATABASE和CREATE CONTROLFILE語句中指定BLOCKSIZE來線上修改redo log塊的大小。ALTER DATABASE orcl ADD LOGFILE
GROUP 4 ('/u01/logs/orcl/redo04a.log','/u01/logs/orcl/redo04b.log')
SIZE 100M BLOCKSIZE 512 REUSE;透過以下語句確認建立日誌檔案的大小:
SELECT BLOCKSIZE FROM V$LOG;這裡有個關於redo wastage的概念,另外開篇分析

Specifying the Maximum Number of Processes

最大程式數設定是指連線資料庫的最大程式數,這裡的最小設定值必須是所有oracle系統後臺程式與使用者連線oracle的程式數之和,而後臺程式數取決於oracle系統開啟的功能  PROCESSES

Specifying the DDL Lock Timeout
DDL發生時在內部結構中需要獲取排它鎖,如獲取不到,則無法執行成功。
DDL_LOCK_TIMEOUT指定DDL在執行失敗之前請求LOCK所等待的時間,其取值範圍從0到1,000,000,該引數值預設為0,既可以在系統級修改,也可以在會話級修改(ALTER SESSION)。

Specifying the Method of Undo Space Management

每一個資料庫都需要有一個undo空間改變的維護資訊,這些資訊記錄則由事務的動作組成,主要由未提交的事務組成。所收集的這些記錄被稱為undo data

UNDO_MANAGEMENT Initialization Parameter
該參數列明undo空間管理是否為自動模式。11g之前,當該引數被省略或為空時,預設為自動模式。

UNDO_TABLESPACE Initialization Parameter
指定undo空間自動管理時,使用的undo表空間檔案,使用表空間則為資料庫例項啟動時使用的undo表空間。如果不指定UNDO_TABLESPACE,undo data會被寫入到system表空間,應儘量避免這種情況的出現。

CREATE DATABASE的時候不需要在SPFILE中指定UNDO_TABLESPACE,僅需要指定UNDO TABLESPACE子句來指明要使用的UNDO表空間。

About The COMPATIBLE Initialization Parameter
COMPATIBLE設定為enable和disable影響磁碟中的檔案格式,比如當使用11GR2時,該引數值被設定為10.0.0. 則在使用11G的功能時報錯
For example:<ORACLE_BASE>用實際oracle家目錄替代
db_name='ORCL'
memory_target=1G
processes = 150
audit_file_dest='<ORACLE_BASE>/admin/orcl/adump'
audit_trail ='db'
db_block_size=8192
db_domain=''
db_recovery_file_dest='<ORACLE_BASE>/flash_recovery_area'
db_recovery_file_dest_size=2G
diagnostic_dest='<ORACLE_BASE>'
dispatchers='(PROTOCOL=TCP)(SERVICE=ORCLXDB)'
open_cursors=300
remote_login_passwordfile='EXCLUSIVE'
undo_tablespace=‘UNDOTBS1’
# You may want to ensure that control files are created on separate physical
# devices
control_files = (ora_control1, ora_control2)
compatible ='11.2.0'
spfile的建立
先手工修改pfile檔案,再在命令列執行CREATE SPFILE FROM PFILE='' or CREATE SPFILE='' FROM PFILE=''語句
也可以從記憶體中獲取spfile
CREATE SPFILE FROM MEMORY;
如果建立時使用相同的SPFILE名稱,已存在的SPFILE會被後建立的覆蓋。
如果多個引數被寫在同一行,則僅第一個引數被讀取,該行後面的引數被忽略。

Clearing Initialization Parameter Values

透過ALTER SYSTEM RESET語句移除已設定的引數,修改時不允許指定SCOPE=MEMORY or BOTH,雖然可以指定SCOPE=SPFILE子句,但並非必須的。

Recovering a Lost or Damaged Server Parameter File

  1. 如果例項在執行 CREATE SPFILE FROM MEMORY
  2. 如果例項停止了,但有pfile配置引數文字的話 CREATE SPFILE FROM PFILE
  3. 如果有專門備份的話也可以透過備份恢復SPFILE(RMAN提供SPFILE的備份)
  4. 以上情況都不滿足的情況下,也可以透過告警日誌來恢復SPFILE





來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28211342/viewspace-2131242/,如需轉載,請註明出處,否則將追究法律責任。

相關文章