基礎知識3——資料庫初始化引數

與刃爭鋒發表於2014-01-07
設定資料庫初始化引數
例項由用於在記憶體中構建它的引數進行定義,一些引數可以在啟動後更改,有些則不能,必須關閉例項再次啟動時更改.
構建例項的引數最初源於引數檔案(靜態pfile或動態spfile)或預設值.除DB_NAME引數外,每個引數都有預設值,DBA可以設定近300個引數,還有1500個不需要設定的"隱藏"引數,這些引數不可見,只能在oracle support指導下進行設定.
引數分"基本引數"和"高階引數"兩類,只要高階引數使用了預設設定,大多數資料庫例項都能完美執行,只有大約33個引數時基本引數,因此,設定引數並不繁瑣,但很重要.

檢視引數及其當前值,查詢v$parameter檢視

select name,value from v$parameter order by name

下面的查詢結果稍有不同:

select name,value from v$spparameter order by name

差異在於v$parameter顯示當前執行例項中生效的引數值,v$spparameter顯示磁碟上spfile中儲存的值,通常兩者相同.


更改引數用alter system命令,比如:

alter system set db_create_file_dest='d:\oranew' scope=memory/spfile/both

如果不將scope指定為spfile,則無法更改靜態引數,預設scope值是both,即作用於執行中的例項和spfile,如果用pfile啟動例項,設定scope=spfile將失敗.



第一次建立資料庫時,使用pfile,用下列命令建立spfile:

create spfile [ ='spfilename' ] from pfile [ ='pfilename' ]

如果沒給出具體名稱,則使用預設名稱,也可由spfile建立pfile

create pfile [ ='pfilename' ] from spfile [ ='spfilename' ]


可隨時執行create pfile命令和create spfile命令,例項沒啟動也可以的說.



基本引數
select name,value from v$parameter 
where isdefault='TRUE' order by name;
或者
select s.name,s.value from v$spparameter s join v$parameter  p on s.name=p.name
where p.isdefault='TRUE' order by name;

可能有一些差異,因為某些引數已更改並用於例項,但沒用於spfile,使用join的原因是v$spparameter中不顯示引數時基本引數或高階引數的列.

cluster_database                    資料庫是RAC還是單例項

compatible                            此例項要模仿的版本,通常就是世紀版本

control_files                            控制檔案副本的名稱和位置

db_block_size                        置資料檔案格式的預設塊大小

db_create_file_dest                資料檔案的預設位置

db_create_online_log_dest_1                    聯機重做日誌檔案的預設位置

db_create_online_log_dest_2                     聯機重做日誌檔案多路複用副本的預設位置

db_domain                    可以新增到db_name末尾來生成全域性唯一名稱的域名

db_name                      資料庫名稱(唯一沒有預設值的引數)

db_recovery_file_dest                    閃回區域的位置

db_recovery_file_dest_size            閃回區的大小,要先設定大小,再設定閃回區位置!

db_unique_name                            一臺計算機上安裝兩個相同名稱db_name的資料庫,則需要使用唯一識別符號

instance_number                            用於區分兩個或多個開啟同一資料庫的RAC例項

job_queue_processes                        執行所排程作業可用的程式數

log_archive_dest_1                        歸檔重做日誌檔案的目標

log_archive_dest_2                         歸檔重做日誌檔案的多路複用副本的目標

log_archive_dest_state_1                    是否啟用了目標

log_archive_dest_state_2                    是否啟用了目標

nls_language                                    例項的語言(多種預設格式)

nls_territory                                    例項的地理位置

open_cursors                                會話一次可以開啟的SQL工作區域數量

pga_aggregate_target                    例項可以分配給PGA的總記憶體量

processes                                    可以連線到例項的最大程式數量(包含會話伺服器程式)

remote_listener                                例項註冊到的另一臺計算機上的偵聽器的地址

remote_login_passwordfile                     是否使用外部口令檔案,以便允許口令檔案身份驗證

rollback_segments                                基本廢棄,被undo引數取代

sessions                                                允許連線到例項的最大會話數量

sga_target                                              SGA的大小,oracle將在此範圍內管理各種SGA記憶體結構

shared_servers                                      要啟動的共享伺服器程式數量

star_transformation_enabled                   是否允許優化器重寫將事實表的維度聯接在一起的查詢

undo_management                                 在撤銷表空間中自動管理撤銷資料,還是在回滾段中手動管理

undo_tablespace                                     在使用自動撤銷管理時,確定撤銷資料的位置





要更改靜態引數,只能用alter system...scope=spfile句子,此命令更新spfile,靜態引數不能立刻生效,log_buffer是一個靜態引數的示例.

將日誌緩衝區大小更改為6MB:
alter system set log_buffer=6m;會提示ora-02095錯誤,必須指定scope=spfile,更改成功,但新值只有重啟例項後才生效.

一般情況下預設的日誌緩衝區大小是正確的,如果改為小於預設值,會重新調整為預設大小.

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

相關文章