1. 程式人生 > >oracle建庫配置規範

oracle建庫配置規範

寫此文單的目的:實際工作的專案整合中資料庫安裝完畢後,會遇到因為配置不規範而給後期運維帶來的各種問題,此文件統一規範可能遇到的問題,以防增加後期的工作量。

一、初始化引數配置


名詞解釋:

open_cursors

單個會話開啟遊標數。通常預設值夠用,如果超過預設值,說明程式碼可能存在問題,如開啟遊標未關閉。調整此引數以減少報錯。

db_files

此引數控制資料檔案個數。對於大庫(容量超過5T),存在此引數值不足的可能,調整此引數需要重啟例項,故可在建庫時直接調整到位(建庫前詢問研發人員資料將最終成長到多少)。

processes

此引數控制最大程序數,相關引數為sessions,但只調整此引數即可。預設

150在大多數場景都偏小,要求至少在600,或者詢問研發人員。

fast_start_mttr_target

控制例項恢復時間,即做檢查點。設定此值控制例項恢復在150秒,可根據需要調整。

max_dump_file_size

控制單個trace檔案的大小。調整此引數可防止trace檔案意外變大撐滿檔案系統。

session_cached_cursors

控制會話可以快取的遊標數。增加該值以減少軟解析。


_undo_autotune

預設引數值可能導致undo空間回收慢,增加ora-01555錯誤的概率。

_gc_policy_time , _gc_undo_affinicy

控制RAC中的

DRM特性啟用與否。因為應用軟體很少針對RAC做訪問控制,所以DRM特性經常造成網路流量巨大,嚴重時導致資料庫hang,弊大於利,故一般需要禁用。

這兩個引數是oracle 11g中關閉DRM的引數。

_gc_affinicy_time , _gc_undo_affinicy

同上,這兩個引數是oracle 10g中關閉DRM的引數

audit_trail

審計使用者登入,11g時預設開啟審計。大多系統中並沒有人關心哪些會話登入了系統,而大量的登入記錄(特別是短連線系統)會導致系統表空間迅速膨脹,對系統性能帶來影響,故儘量將其關閉。

deferred_segment_creation

延遲段生成是

11g新特性,可能導致exp工具無法匯出表,故儘量關閉。

_optimiter_use_feedback

該引數預設值經常導致SQL語句的執行計劃頻繁改變,故儘量關閉。

_clusterwide_global_transcations

該引數經常觸發bug,或者在使用dblink產生DFS lock handle等待事件,故儘量關閉。

調整命令

  • 11g以上

alter system set open_cursors=500 scope=both;

alter system set db_files=500 scope=spfile;

alter system set processes=600 scope=spfile;

alter system set max_dump_file_size=104857600 scope=both;

alter system set fast_start_mttr_target=150 scope=both;

alter system set session_cached_cursors=200 scope=spfile;

alter system set "_undo_autotune"=false scope=both;

alter system set "_gc_policy_time"=0 scope=spfile;

alter system set "_gc_undo_affinity"=false scope=spfile;

alter system set audit_trail=none scope=spfile;

alter system set deferred_segment_creation=false scope=both;

alter system set "_optimizer_use_feedback"=false scope=both;

alter system set "_clusterwide_global_transactions"=false scope=spfile;

  • 10g

alter system set open_cursors=500 scope=both;

alter system set db_files=500 scope=spfile;

alter system set processes=600 scope=spfile;

alter system set max_dump_file_size=104857600 scope=both;

alter system set fast_start_mttr_target=150 scope=both;

alter system set session_cached_cursors=200 scope=spfile;

alter system set "_undo_autotune"=false scope=both;

alter system set "_gc_affinity_time"=0 scope=spfile;

alter system set "_gc_undo_affinity"=false scope=spfile;

二、資料庫檔案配置

1.控制檔案 原則: 預設控制檔案在建庫時有冗餘,(rac 11g 預設為一個),保持即可。 調整方法: 如果資料庫控制檔案沒有冗餘,首先需要停止所有例項,手工copy一份控制檔案,並且調整pfile或spfile。如果是rac 11g R2 操作如下: #su - grid $asmcmd asmcmd>pwd +data/slmz/controlfile asmcmd>cp current.111213 crotrol02.ctl 再使用oracle使用者調整引數 alter system set control_file='+data/slmz/controlfile/control01.ctl','+data/slmz/controlfile/control02.ctl' scope=spfile sid='正調整的例項名' 2.重製日誌  原則:
  • 資料庫預設的redo log 的組數偏少,單例項為三組,RAC為兩組,建議rac每個例項至少有5組redo log。
  • redo log 預設沒冗餘,也就是每組一個成員,但建議在儲存IO效能足夠的情況下,增加redo log 的冗餘。
  • 資料庫預設的redo log容量偏小,儘量保證每小時切換次數小於等於4次,且至少>=256m.
 調整方法: redo log 成員要先加後刪,命令如下:
  • 單例項

加日誌組: 

alter database add log file group 4 ('/oradata/orcl/redo04.log') size 256m;

刪日誌組:

alter database drop log file group 1;

  • RAC
加日誌組:

alter database add logfile thread 1 group 8 ('+data/orcl/onlinelog/redo8a.log') size 256m;

*‘thread 1’為例項號,根據需要調整;

刪日誌組:

alter database drop logfile group 1;

組內增加日誌組成員

alter database add log file member '+data/orcl/redo8b.log' to group 8;

⚠️

刪除日誌組需將其狀態切換到inactive狀態,命令如下:

alter system  switch log file;

alter system checkpoint;

select group#,thread#,members, status bytes/1048576 size_mb from v$log;

3.archivelog

原則:

開歸檔一定要有刪除策略,避免歸檔空間被撐滿。

4.undo tablespace

原則:

建庫預設空間偏小,建議resize當前檔案大小或增加當前檔案大小

alter database datafile '+data/orcl/undotbs01.dbf' resize 2048m;

5.temp tablespace

原則:同undo tablespace

alter database tempfile '+data/orcl/temp.dbf' resize 2048m;

6.監聽檔案(11g)

為防止警告日誌出現 Fatal NI connect error 12170 報錯

編輯listener.ora

INBOUND_CONNECT_TIMEOUT_LISTENER = 0

DIAG_ADR_ENABLED_LISTENER = OFF

編輯sqlnet.ora

DIAG_ADR_ENABLED = OFF

SQLNET.INBOUND_CONNECT_TIMEOUT = 0

重啟或reload監聽

三、使用者配置

1.使用者密碼的有效期(11g以上) 11g預設的使用者密碼有效期為180天,絕大多數需調整為無限制

2.使用者密碼嘗試錯誤次數(11g以上有密碼驗證延遲)

使用者登入時如果密碼錯誤,嘗試10次後會被鎖定,使用一下命令允許無限制嘗試

alter profile DEFAULT LIMIT FAILED_LOGIN_ATTEMPS unlimited;

⚠️:對於11g以上版本,如果嘗試錯誤密碼次數過多,會導致正常使用者登入緩慢,可以通過事假28401禁用密碼驗證延遲。所以調整上述配置檔案時,同時也應設定以下事件

例項級設定:

alter system set events '28401 trace name context forever, level 1';

系統級設定

alter system set event = '28401 trace name context forever , level 1 ' scope = spfile;

四、備份配置

1.控制檔案快照路徑(11g以上RAC環境) 11g以上RAC環境,需要控制檔案快照放在共享儲存上(共享檔案系統或ASM中),否則備份會失敗,預設位置一般為: configure snapshot controlfile name to '/u01/app/oracle/product/11.2.0/dbname/snapcf_orcl1.f'; 調整方法為: rman target / configure snapshost controlfile name to '+data/snapcf_orcl1.f'

五、其他配置

1.初始統計資訊收集

實際執行中發現如果不收集固定物件統計資訊會影響資料庫監控時的監控效果,在使用者物件建立前執行:

exec dbms_stats.GATHER_DATABASE_STATS(no_invalidate=>false);

exec dbms_stats.GATHER_FIXED_OBJECTS_STATS(no_invalidate=>false);

收集系統資訊,便於資料庫引擎作出更貼近實際的IO,運算時間估算

exec stats.GATHER_SYSTEM_STATS(gathering_mode=>'NOWORKLOAD');

2.  _serial_direct_read (11g以上)

對於資料量較大,記憶體較大或儲存較慢的環境,可考慮修改此引數為never(預設為auto),減少物理IO,操作方法如下:

alter system set "_serial_direct_read"=never scope=spfile;

重啟例項生效

該命令也可以用事件10949 替代,此事件可以在例項級別設定,不用重啟例項,也可以在引數檔案裡設定,方法如下:

alter system set events '10949 trace name context forever';

alter system set events '10949 trace name context forever' scope=spfile;

3.關閉oracle_ocm使用者的job(11.2.0.3)

操作方法:

exec dbms_secheduler.disable(‘ORACLE_OCM.MGMT_CONFIG_JOB’);

exec dbms_secheduler.disable(‘ORACLE_OCM.MGMT_STATS_CONFIG_JOB');

4.AWR間隔及保留週期(可選)

10g的awr預設保留7天,間隔1小時;

11g的awr預設保留8天,間隔1小時;

調整方法:

exec dbms_workload_repository.modify_snapshot_settings(interval=>30,retention=>30*24*60);

相應的,SYSAUX表空間也需要擴容,否則無法容納大量的AWR資訊