Oracle的參數文件

1.參數文件

          Oracle數據庫相關的參數文件有很多,但是最重要的是數據庫的參數文件,如果沒有這個參數文件,甚至無法啓動數據庫。

          數據庫的參數文件通常稱爲初始化文件(init file),或init.ora文件。這是因爲歷史上它的默認名就是init<ORACLE_SID>.ora。這所以稱爲“歷史上”的默認名,原因是Oracle Database 9i Release 1 以來,對於存儲數據庫的參數設置,引入了一個很大改進的新方法:服務器參數文件(server parameter file),簡稱爲SPFILE。這個文件的默認名爲spfile<ORACLE_SID>.ora

          如果沒有參數文件,就無法啓動Oracle數據庫。所有參數文件相當重要,到了Oracle Database 9i Release 2(9.2及以上版本),備份和恢復工具——恢復管理器(Recovery Manager,RMAN)認識到了這個文件的重要性,允許把服務器參數文件包括在備份集中(而不是遺留的init.ora參數文件類型)。不過由於init.ora參數文件中是一個純文本文件,可以用任何文本編輯器創建,所以這個文件不需要你花大力氣去“保衛”。只要知道文件中的內容,完全可以重新創建(例如,如果能訪問數據庫的警告日誌,就可以從中獲得參數文件的信息)

1.1 什麼是參數

          簡單地說,可以把數據庫參數想成是一個鍵/值對。如db_name參數,可以簡單的存儲爲db_name=orcl,這裏的“鍵”是db_name,“值”是orcl。要得到一個實例參數的當前值,可以查詢V$視圖V$PARAMETER。另外,還可以在SQL*Plus中使用 SHOW PARAMETER命令來查看。

  1. sys@ORCL>select value from v$parameter where name='db_block_size';

  2. VALUE

  1. --------------------------------------------------------------------------------------------------

  1. 8192

  1. sys@ORCL>show parameter db_block_s

  2. NAME                                     TYPE                               VALUE

  1. ------------------------------------ --------------------------------- ------------------------------

  1. db_block_size                                 integer                               8192

v$parameter能夠得到更多的信息,但show parameter命令更簡單,而且還會自動“通配”,上邊中輸入了db_block_s,自動在前面和後面加了%

          注意:不同版本的Oracle上,參數個數會不同,不同的操作系統上可能也會增加另外的參數。

          可以用兩種方式來設置各個參數值:只設置當前實例的參數值或永久性的設置。要確保參數文件包含你期望的值,使用遺留的init.ora參數文件時,這是一個手動過程。要永久的修改一個參數值(即使服務器重啓這個新設置也有效),就必須手動地編輯和修改init.ora參數文件。如果是服務器參數文件,則只需要一條命令就能輕鬆完成。

1.2  init.ora參數文件

這個文件的命名約定默認爲:

init$ORACLE_SID.ora       (Unix enviroment variable)

init%ORACLE_SID%.ora      (Windows enviroment variable)

默認存放的目錄

$ORACLE_HOME/dbs         (Unix)

%ORACLE_HOME%\DATABASE   (Windows)

參數文件不必放在特定的位置上。啓動一個實例時,可以在啓動命令上使用pfile=filename選項。

1.3  服務器參數文件

          在訪問和維護實例參數設置方面,SPFILEOracle做出的一個重要改變。有了SPFILE,可以消除傳統參數文件存在的兩個嚴重問題。

  • 可以杜絕參數文件的繁殖。SPFILE問題存儲在數據庫服務器上;必須存在於服務器主機本身,不能放在客戶機上。參參數設置來說,這樣就可以有一個“信息來源”。

  • 無需在數據庫之外使用文本編輯器手動地維護參數文件(實際上,更確切的說法是不能手動地維護)。利用ALTER SYSTEM命令,完全可以直接將值寫入SPFILE。管理員不必手動的查找和維護所有參數文件。

        這個文件的命名約定默認爲:

$ORACLE_HOME/dbs/spfile$ORACLE_SID.ora          (Unix environment variable)

%ORACLE_HOME%\database\spfile%ORACLE_SID%.ora   (Windows environment variable)

強烈使用默認位置,否則會影響SPFILE的簡單性。如果不在默認位置,就必須告訴Oracle去哪裏找SPFILE

1.轉換爲SPFILE

假設有一個數據庫,使用了inti.ora參數文件,轉換爲SPFILE非常簡單,使用CREATE SPFILE命令

假設使用init.ora參數文件,而且這個init.ora參數文件確實在服務器的默認位置上,那麼只需要發出CREATE SPFILE命令,並重啓實例就行了

wKioL1hWooWRy_XgAABLEkiBshw723.png

從指定目錄中的init.ora參數文件中創建SPFILE使用:create spfile from pfile='/path/to/init.ora';

在集羣環境中,通過使用Oracle RAC,所有實例共享同一個SPFILE,這個SPFILE可以包含所有參數設置,甚至各個實例特有的設置都可以放在這一個SPFILE中。 所有實例共享的參數設置都以*.開頭。單個實例特有的參數設置都以實例名(Oracle SID)爲前綴。

2.設置SPFILE中的參數值

SPFILE是二進制文件,它們不能用文本編輯器來編輯,在linux上可以使用strings命令查看內容。要修改參數值就需要使用ALTER SYSTEM命令。語法如下

alter system set parameter = value <comment='text'> <deferred> <scope=memory|spfile|both> <sid='sid|*'>

默認情況下,ALTER SYSTEM SET命令會更新當前運行的實例,並且修改SPFILE,即默認爲scope=both

  • parameter=value 這個賦值提供了參數名以及參數的新值。例如,pga_aggregate_target=1024M     會把pga_aggregate_target參數設置爲1024MB

  • comment='text 是一個與此參數設置相關的可選註釋。這個註釋會出現在V$PARAMETER視圖的UPDATE_COMMENT字段中。如果使用了相應選項允許同時保存對SPFILE的修改,註釋會寫入SPFILE,而且即便服務器重啓也依然保留,所以將來重啓數據庫時會看到這個註釋。

  • deferred 指定系統修改是否只對以後的會話生效(對當前建立的會話無效,包括執行些修改的會話)。默認情況下,ALTER SYSTEM命令會立即生效,但有些參數不能“立即”修改,只能爲新建立的會話修改這些參數。使用select name from     v$parameter where issys_modifiable='DEFERRED';查詢哪些參數必須使用deferred

  • SCOPE=MEMORY|SPFILE|BOTH 指示了這個參數設置的“作用域”。

    • SCOPE=MEMORY 只在實例中修改,數據庫重啓後將不再保存。下一次重啓數據庫時,設置還是修改前的樣子。

    • SCOPE=SPFILE 只修改SPFILE中的值。數據庫重啓並再次處理SPFILE之前,這個修改不會生效。有些參數只能使用這個選項來修改,例如,processes參數就必須使用SCOPE=SPFILE,因爲我們無法修改活動實例的processes值。

    • SCOPE=BOTH 指內存和SPFILE中都會完成參數修改。這是使用SPFILE時默認的作用域值。如果使用init.ora參數文件,默認爲SCOPE=MEMORY,也是唯一合法值。

  • sid='sid|*' 主要用於集羣環境,默認值爲sid='*'

wKiom1hWop-T73a1AAAKQDZ3hQU763.png

3.取消SPFILE中的值設置

如果想從SPFILE中刪除某個參數設置,則需要使用ALTER SYSTEM命令的RESET子句來執行。

alter system reset parameter <scope=memory|spfile|both> sid='sid|*'

wKioL1hWorSgx2CGAABeSUqYTIs772.png

4.SPFILE創建PFILE

與前面提到的CREATE SPFILE相反,創建PFILE使用CREATE PFILE ... FROM SPFILE。這個命令根據二進制的SPFILE創建一個純文本文件,可以被文本編輯器編輯,並且以後可以用來啓動數據庫。使用這個命令的原因

  • 創建一個“一次性的”參數文件,用戶啓動數據庫來完成維護,其中有一些特殊的設置。所以可以使用這個命令創建PFILE。編輯得到的PFILE,修改所需要設置。然後啓動數據庫,使用PFILE=<FILENAME>選項指定要使用這個PFILE而不是SPFILE。完成後,可以正常的啓動數據庫又會使用SPFILE

  • 維護修改歷史,在註釋中記錄修改。過去,請多DBA會在參數文件中加大量的註釋來記錄修改歷史。

wKiom1hWosqygGQbAAAX4BiC1Zg432.png

5.修正被破壞的SPFILE

Unix平臺上可以使用strings命令提取所有設置

Windows平臺上則需要用write.ext(WordPad,寫字板)打開這個文件

如果SPFILE真的被丟失了,可以從警告日誌恢復參數文件的信息。每次啓動數據庫時警告日誌都會包含如下一部分內容,通過這一部分內容,可以很容易地創建一個PFILE,再用CREATE SPFILE命令將其轉換爲一個新的SPFILE

wKioL1hWouiDLa4MAABdt4t7O30216.png

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章