Oracle參數(shù)及參數(shù)文件7大類解析
學(xué)過Oracle的人都知道,Oracle參數(shù)對數(shù)據(jù)庫初始化來說非常重要。 因?yàn)镺racle初始化參數(shù)能夠?qū)?shù)據(jù)庫約束和資源限制,下面就有關(guān)Oracle參數(shù)及參數(shù)文件設(shè)置進(jìn)行講述。
初始化參數(shù)分為3類: 
推導(dǎo)參數(shù) 
操作系統(tǒng)依賴參數(shù) 
可變參數(shù)
1.推導(dǎo)Oracle參數(shù)(derived parameters)
- select name,value from v$parameter where name in (‘processes’,’sessions’);
 
processes參數(shù)代表oracle并發(fā)連接數(shù),合理設(shè)置processes參數(shù)是十分重要的,超過***進(jìn)程數(shù),dba也無法登錄數(shù)據(jù)庫。
通常在創(chuàng)建數(shù)據(jù)庫時(shí),建議將該參數(shù)值修改為500,我機(jī)器默認(rèn)是150
- alter system set processes=500 scope=spfile;
 
重啟后看修改過的值
- select name,value from v$parameter where name=’processes’;
 - select * from v$sgastat where name=’processes’;
 
2.操作系統(tǒng)依賴參數(shù)
某些參數(shù)的有效值或者取值范圍受限于操作系統(tǒng),比如db_cache_size參數(shù),設(shè)置oracle使用的buffer cache內(nèi)存大小,該參數(shù) 
的***值就要受限于物理內(nèi)存,這一類參數(shù)通常被稱為操作系統(tǒng)依賴參數(shù)。
3.可變Oracle參數(shù)
可變參數(shù)包含絕大多數(shù)潛在影響系統(tǒng)性能的可調(diào)整參數(shù),某些可變參數(shù)設(shè)置的是限制條件,如open_cursors,有的是設(shè)置容量,如 
db_cache_size等
初始化參數(shù)的獲取 
show parameter sga
使用sql_trace跟蹤當(dāng)前會話
- alter session set sql_trace=true;
 - show parameter sga;
 - alter session set sql_trace=false;
 
4.Oracle參數(shù)文件
初始化參數(shù)文件(initialization parameter files) PFILE,文本文件,可手工修改 
服務(wù)器參數(shù)文件(server parameter files)         SPFILE,二進(jìn)制文件,不能手工修改
- cd /var/oracle11g/app/dbs
 - file init.ora
 - file spfilehugwww.ora
 
SPFILE文件,對于參數(shù)的修改都可以在命令行完成,在sqlplus中通過alter system 修改參數(shù)
- select sid,name,value from v$spparameter where value is not null;
 - show spparameter;
 - show spparameter memory_target;
 
在通過pfile中調(diào)用spfile,使用后設(shè)置的參數(shù)復(fù)蓋spfile中的參數(shù)設(shè)置,是解決spfile中參數(shù)設(shè)置錯(cuò)誤的一種方法
5.修改參數(shù)
可以通過alter system或者導(dǎo)入導(dǎo)出來更改spfile的內(nèi)容 
scope新選項(xiàng),有3個(gè)可選值: 
memory    只改變當(dāng)前實(shí)例,重啟數(shù)據(jù)庫后失效 
spfile    只改變spfile的設(shè)置,不改變當(dāng)前實(shí)例,重啟數(shù)據(jù)庫后生效 
both    同時(shí)改變實(shí)例及spfile,當(dāng)前更改立即生效,重啟后仍然有效 
在rac環(huán)境,可以指定sid=<實(shí)例名>
#p#
用法:
- 1).scope=memory
 - show parameter db_cache_ad
 - alter system set db_cache_advice=off scope=memory;
 - show parameter db_cache_ad
 
重啟數(shù)據(jù)庫后更改失效
2)
- .scope=spfile
 - alter system set db_cache_advice=off scope=spfile;
 - show parameter db_cache_ad
 
當(dāng)前實(shí)例不受影響,重啟后生效
3).
- scope=both
 - alter system set db_cache_advice=off scope=both;
 - alter system set db_cache_advice=off;
 - show parameter db_cache_ad
 
不帶scope參數(shù)和scope=both是一樣的,如果修改的是靜態(tài)參數(shù),那么需要指定spfile參數(shù),不能指定both參數(shù),否則會報(bào)錯(cuò) 
如:
- alter system set sql_trace=false scope=both;
 - alter system set sql_trace=false scope=spfile;
 
6.在關(guān)閉數(shù)據(jù)庫狀態(tài)修改spfile
如果錯(cuò)誤修改了參數(shù)導(dǎo)致數(shù)據(jù)庫無法啟動,則可以通過創(chuàng)建pfile文件,修改其中的參數(shù),再由pfile創(chuàng)建spfile的方式解決,***由 
spfile正常啟動數(shù)據(jù)庫,通過這種方式,可以快速修正spfile中的錯(cuò)誤參數(shù)定義
故障演示,修改db_block_buffers=1000導(dǎo)致數(shù)據(jù)庫不能啟動
- startup;
 - alter system set db_block_buffers=1000 scope=spfile;
 - shutdown immediate;
 - startup;
 
解決方法:
- create pfile from spfile;
 - !vi /var/oracle11g/app/dbs/inithugwww.ora
 - 將包含db_block_buffers=1000的那行刪除
 - create spfile from pfile;
 - startup;
 
#p#
7.其他
重置spfile中設(shè)置的參數(shù) 
alter system reset parameter 
判斷是否使用了spfile 
如果查詢返回空值,那么說明在使用pfile 
方法1: 
select name,value from v$parameter where name=’spfile’; 
方法2: 
show parameter spfile
指定pfile文件啟動實(shí)例 
startup pfile=$ORACLE_HOME/dbs/inityang.ora
8.spfile的備份與恢復(fù)
oracle把spfile也放到rman的備份恢復(fù)策略當(dāng)中,如果配置了控制文件自動備份,oracle會在數(shù)據(jù)庫發(fā)生重大變化時(shí)自動進(jìn)行 
控制文件及spfile文件的備份。 
1)設(shè)置控制文件自動備份
- rman target /
 - configure controlfile autobackup on;
 
查詢: 
sql>select * from v$rman_configuration;
2)更改自動備份的位置 
rman>configure controlfile autobackup format for device type disk to ‘/var/oracle11g/obak/control%F’
3)檢查自動備份 
sql>select * from v$backup_spfile; 
rman target / 
list backup of spfile;
4)記錄數(shù)據(jù)庫變化 
create tablespace yang datafile ‘/var/oracle11g/app/base/oradata/hugwww/yang01.dbf’ size 5M;
5)測試 
rman target / 
restore spfile to ‘/tmp/spfileyang.ora’ from autobackup; 
restore controlfile to ‘/tmp/control01.ctl’ from autobackup;
ls -ltr /tmp/*
如果數(shù)據(jù)庫無法mount,是不能使用以上方法恢復(fù)自動備份的控制文件或者參數(shù)文件,可手工臨時(shí)編輯一個(gè)pfile文件啟動 
實(shí)例,即可進(jìn)行spfile恢復(fù)
注意:自動備份功能缺省是關(guān)閉的,強(qiáng)烈推薦大家用上面的方法打開這個(gè)功能。
#p#
9.oracle11g參數(shù)文件恢復(fù)
 
從oracle11g開始,恢復(fù)實(shí)例參數(shù)引入了一個(gè)新的命令 
create 
create spfile=’/tmp/spfile.ora’ from memory;
10.如何設(shè)置events事件 
events事件是oracle重要的診斷工具及問題解決辦法,很多時(shí)候需要通過events設(shè)置來屏蔽或更改oracle的行為
- alter system set event=’10841 trace name context forver’ scope=spfile;
 - startup force;
 - show parameter event
 
取消event參數(shù)設(shè)置
- show parameter event
 - alter system reset event scope=spfile sid=’*';
 - startup force;
 - show parameter event
 
從oracle10g開始,修改數(shù)據(jù)庫的歸檔模式不需要設(shè)置log_archive_start參數(shù),通過以下方法設(shè)置:
- sqlplus "/as sysdba"
 - archive log list;
 - alter database archivelog;
 - alter database open;
 - archive log list;
 
注意:鑒于告警日志文件的重要作用,當(dāng)數(shù)據(jù)庫出現(xiàn)故障時(shí),通過我們***的處理步驟是檢查日志文件,以便發(fā)現(xiàn)相關(guān)錯(cuò)誤信息,快 
速找到問題所在,這是dba必須明確的一個(gè)知識點(diǎn) 
位置: 
show parameter background_dump_dest;
顯示錯(cuò)誤號的意思,用如下命令 
$oerr ora 30012
完成!
【編輯推薦】















 
 
 



 
 
 
 