咱們錯誤修改了oracle系統參數,有的時候會致使數據庫沒法啓動,參數保存在spfile中,咱們沒法經過直接編輯這個文件來恢復咱們的誤操做,由於 這個文件是個二進制文件,切勿直接更改!可是在之前的版本中有個pfile文件,那個文件是個文本文件,能夠直接編輯修改!恢復的思路就是經過spfile文件建立pfile文件,更改完配置之後,再經過pfile文件來建立咱們的spfile文件!
sql
下面就是詳細的操做步驟,以及我在實驗的時候遇到的問題!
1、修改參數數據庫
SQL> alter system set db_block_buffers=1000 scope=spfile;服務器
System altered.session
2、停掉數據庫併發
SQL> shutdown immediateoracle
Database closed.app
Database dismounted.ide
ORACLE instance shut down.工具
3、啓動數據庫(報錯)性能
SQL> startup
ORA-00824: cannot set sga_target due to existing internal settings, see alert log for more information
4、經過建立pfile來恢復
SQL> create pfile from spfile;
File created.
執行這條命令之後我沒有找到pfile文件,利用find / -name 「pfile*」 –print也沒找到
在請教了itpub的高手後經過指定路徑的辦法解決,下面是詳細的過程!
SQL> create pfile='/opt/oracle/aaaa.ora' from spfile;
File created.
而後編輯/opt/oracle/aaaa.ora文件,去掉*.db_block_buffers=1000這行!
接着經過pfile文件生成spfile文件
SQL> create spfile from pfile='/opt/oracle/aaaa.ora';
File created.
5、啓動數據庫
SQL> startup
ORACLE instance started.
至此spfile文件恢復成功!
學過Oracle的人都知道,Oracle參數對數據庫初始化來講很是重要。 由於Oracle初始化參數可以對數據庫約束和資源限制,下面就有關Oracle參數及參數文件設置進行講述。
初始化參數分爲3類:
推導參數
操做系統依賴參數
可變參數
1.推導Oracle參數(derived parameters)
select name,value from v$parameter where name in (‘processes’,’sessions’);
processes參數表明oracle併發鏈接數,合理設置processes參數是十分重要的,超過最大進程數,dba也沒法登陸數據庫。
一般在建立數據庫時,建議將該參數值修改成500,我機器默認是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.操做系統依賴參數
某些參數的有效值或者取值範圍受限於操做系統,好比db_cache_size參數,設置oracle使用的buffer cache內存大小,該參數
的最大值就要受限於物理內存,這一類參數一般被稱爲操做系統依賴參數。
3.可變Oracle參數
可變參數包含絕大多數潛在影響系統性能的可調整參數,某些可變參數設置的是限制條件,如open_cursors,有的是設置容量,如
db_cache_size等
初始化參數的獲取
show parameter sga
使用sql_trace跟蹤當前會話
alter session set sql_trace=true; show parameter sga; alter session set sql_trace=false;
4.Oracle參數文件
初始化參數文件(initialization parameter files) PFILE,文本文件,可手工修改
服務器參數文件(server parameter files) SPFILE,二進制文件,不能手工修改
cd /var/oracle11g/app/dbs file init.ora file spfilehugwww.ora
SPFILE文件,對於參數的修改均可以在命令行完成,在sqlplus中經過alter system 修改參數
select sid,name,value from v$spparameter where value is not null; show spparameter; show spparameter memory_target;
在經過pfile中調用spfile,使用後設置的參數覆蓋spfile中的參數設置,是解決spfile中參數設置錯誤的一種方法
5.修改參數
能夠經過alter system或者導入導出來更改spfile的內容
scope新選項,有3個可選值:
memory 只改變當前實例,重啓數據庫後失效
spfile 只改變spfile的設置,不改變當前實例,重啓數據庫後生效
both 同時改變實例及spfile,當前更改當即生效,重啓後仍然有效
在rac環境,能夠指定sid=<實例名>
用法:
1).scope=memory show parameter db_cache_ad alter system set db_cache_advice=off scope=memory; show parameter db_cache_ad
重啓數據庫後更改失效
2)
.scope=spfile alter system set db_cache_advice=off scope=spfile; show parameter db_cache_ad
當前實例不受影響,重啓後生效
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參數和scope=both是同樣的,若是修改的是靜態參數,那麼須要指定spfile參數,不能指定both參數,不然會報錯
如:
alter system set sql_trace=false scope=both; alter system set sql_trace=false scope=spfile;
6.在關閉數據庫狀態修改spfile
若是錯誤修改了參數致使數據庫沒法啓動,則能夠經過建立pfile文件,修改其中的參數,再由pfile建立spfile的方式解決,最後由
spfile正常啓動數據庫,經過這種方式,能夠快速修正spfile中的錯誤參數定義
故障演示,修改db_block_buffers=1000致使數據庫不能啓動
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;
7.其餘
重置spfile中設置的參數
alter system reset parameter=memory|spfile|both>
判斷是否使用了spfile
若是查詢返回空值,那麼說明在使用pfile
方法1:
select name,value from v$parameter where name=’spfile’;
方法2:
show parameter spfile
指定pfile文件啓動實例
startup pfile=$ORACLE_HOME/dbs/inityang.ora
8.spfile的備份與恢復
oracle把spfile也放到rman的備份恢復策略當中,若是配置了控制文件自動備份,oracle會在數據庫發生重大變化時自動進行
控制文件及spfile文件的備份。
1)設置控制文件自動備份
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)記錄數據庫變化
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/*
若是數據庫沒法mount,是不能使用以上方法恢復自動備份的控制文件或者參數文件,可手工臨時編輯一個pfile文件啓動
實例,便可進行spfile恢復
注意:自動備份功能缺省是關閉的,強烈推薦你們用上面的方法打開這個功能。
9.oracle11g參數文件恢復
從oracle11g開始,恢復實例參數引入了一個新的命令
create from memory;
create spfile=’/tmp/spfile.ora’ from memory;|pfile>
10.如何設置events事件
events事件是oracle重要的診斷工具及問題解決辦法,不少時候須要經過events設置來屏蔽或更改oracle的行爲
alter system set event=’10841 trace name context forver’ scope=spfile; startup force; show parameter event
取消event參數設置
show parameter event alter system reset event scope=spfile sid=’*'; startup force; show parameter event
從oracle10g開始,修改數據庫的歸檔模式不須要設置log_archive_start參數,經過如下方法設置:
sqlplus "/as sysdba" archive log list; alter database archivelog; alter database open; archive log list;
注意:鑑於告警日誌文件的重要做用,當數據庫出現故障時,經過咱們最早的處理步驟是檢查日誌文件,以便發現相關錯誤信息,快
速找到問題所在,這是dba必須明確的一個知識點
位置:
show parameter background_dump_dest;
顯示錯誤號的意思,用以下命令
$oerr ora 30012
完成!