1.參數文件
oracle存儲過程入參,與Oracle數據庫相關的參數文件有很多,但是最重要的是數據庫的參數文件,如果沒有這個參數文件,甚至無法啟動數據庫。
數據庫的參數文件通常稱為初始化文件(init file),或init.ora文件。這是因為歷史上它的默認名就是init.ora。這所以稱為“歷史上”的默認名,原因是Oracle Database 9i Release 1以來,對于存儲數據庫的參數設置,引入了一個很大改進的新方法:服務器參數文件(server parameter file),簡稱為SPFILE。這個文件的默認名為spfile.ora。
oracle控制文件,如果沒有參數文件,就無法啟動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命令來查看。sys@ORCL>selectvaluefromv$parameterwherename='db_block_size';
VALUE--------------------------------------------------------------------------------------------------8192sys@ORCL>show parameter db_block_s
NAME???????????????????????????????????? TYPE?????????????????????????????? VALUE---------------------------------------------------------------------------------------------------db_block_size
integer8192
v$parameter能夠得到更多的信息,但showparameter命令更簡單,而且還會自動“通配”,上邊中輸入了db_block_s,自動在前面和后面加了%。
注意:不同版本的Oracle上,參數個數會不同,不同的操作系統上可能也會增加另外的參數。
可以用兩種方式來設置各個參數值:只設置當前實例的參數值或永久性的設置。要確保參數文件包含你期望的值,使用遺留的init.ora參數文件時,這是一個手動過程。要永久的修改一個參數值(即使服務器重啟這個新設置也有效),就必須手動地編輯和修改init.ora參數文件。如果是服務器參數文件,則只需要一條命令就能輕松完成。
1.2init.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服務器參數文件
在訪問和維護實例參數設置方面,SPFILE是Oracle做出的一個重要改變。有了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命令,并重啟實例就行了。
從指定目錄中的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
默認情況下,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='*'。
3.取消SPFILE中的值設置
如果想從SPFILE中刪除某個參數設置,則需要使用ALTER SYSTEM命令的RESET子句來執行。
alter system reset
parameter sid='sid|*'
4.從SPFILE創建PFILE
與前面提到的CREATE
SPFILE相反,創建PFILE使用CREATE
PFILE ... FROM SPFILE。這個命令根據二進制的SPFILE創建一個純文本文件,可以被文本編輯器編輯,并且以后可以用來啟動數據庫。使用這個命令的原因創建一個“一次性的”參數文件,用戶啟動數據庫來完成維護,其中有一些特殊的設置。所以可以使用這個命令創建PFILE。編輯得到的PFILE,修改所需要設置。然后啟動數據庫,使用PFILE=選項指定要使用這個PFILE而不是SPFILE。完成后,可以正常的啟動數據庫又會使用SPFILE。
維護修改歷史,在注釋中記錄修改。過去,請多DBA會在參數文件中加大量的注釋來記錄修改歷史。
5.修正被破壞的SPFILE
Unix平臺上可以使用strings命令提取所有設置
Windows平臺上則需要用write.ext(WordPad,寫字板)打開這個文件
如果SPFILE真的被丟失了,可以從警告日志恢復參數文件的信息。每次啟動數據庫時警告日志都會包含如下一部分內容,通過這一部分內容,可以很容易地創建一個PFILE,再用CREATE
SPFILE命令將其轉換為一個新的SPFILE。
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态