Oracle dba應該定期做什么! 本文從整體上介紹了一個dba的職責和任務等等。 ORACLE數據庫治理員應按如下方式對ORACLE數據庫系統做定期監控: (1). 天天對ORACLE數據庫的運行狀態,日志文件,備份情況,數據庫的空間使用情況,系統資源的使用情況進行檢查,發現并解決問題。 (2). 每周對數據庫對象的空間擴展情況,數據的增長情況進行監控,對數據庫做健康檢查,對數據庫對象的狀態做檢查。 (3). 每月對表和索引等進行Analyze,檢查表空間碎片,尋找數據庫 性能調整的機會,進行數據庫性能調整,提出下一步空間治理 計劃。對ORACLE數據庫狀態進行一次全面檢查。 天天的工作 (1).確認所有的INSTANCE狀態正常 登陸到所有數據庫或例程,檢測ORACLE后臺進程: $ps –efgrep ora (2). 檢查文件系統的使用(剩余空間)。假如文件系統的剩余空間小于20%,需刪除不用的文件以釋放空間。 $df –k (3). 檢查日志文件和trace文件記錄alert和trace文件中的錯誤。 連接到每個需治理的系統 · 使用’telnet’ · 對每個數據庫,cd 到bdump目錄,通常是$ORACLE_BASE//bdump ·使用 Unix ‘tail’命令來查看alert_.log文件 ·假如發現任何新的ORA- 錯誤,記錄并解決 (4). 檢查數據庫當日備份的有效性。 對RMAN備份方式: 檢查第三方備份工具的備份日志以確定備份是否成功 對EXPORT備份方式: 檢查exp日志文件以確定備份是否成功 對其他備份方式: 檢查相應的日志文件 (5). 檢查數據文件的狀態記錄狀態不是“online”的數據文件,并做恢復。 Select file_name from dba_data_files where status=’OFFLINE’ (6). 檢查表空間的使用情況 SELECT tablespace_name, max_m, count_blocks free_blk_cnt, sum_free_m,to_char(100*sum_free_m/sum_m, '99.99') '%' AS pct_free FROM ( SELECT tablespace_name,sum(bytes)/1024/1024 AS sum_m FROM dba_data_files GROUP BY tablespace_name), ( SELECT tablespace_name AS fs_ts_name, max(bytes)/1024/1024 AS max_m, count(blocks) AS count_blocks, sum(bytes/1024/1024) AS sum_free_m FROM dba_free_space GROUP BY tablespace_name ) WHERE tablespace_name = fs_ts_name (7). 檢查剩余表空間 SELECT tablespace_name, sum ( blocks ) as free_blk , trunc ( sum ( bytes ) /(1024*1024) ) as free_m, max ( bytes ) / (1024) as big_chunk_k, count (*) as num_chunks FROM dba_free_space GROUP BY tablespace_name; (8). 監控數據庫性能 運行bstat/estat生成系統報告 或者使用statspack收集統計數據 (9). 檢查數據庫性能,記錄數據庫的cpu使用、IO、buffer命中率等等 使用vmstat,iostat,glance,top等命令 (10). 日常出現問題的處理。 每周的工作 (1). 控數據庫對象的空間擴展情況 根據本周天天的檢查情況找到空間擴展很快的數據庫對象,并采取相 應的措施 -- 刪除歷史數據
--- 擴表空間 alter tablespace add datafile ‘’ size --- 調整數據對象的存儲參數 next extent pct_increase (2). 監控數據量的增長情況 根據本周天天的檢查情況找到記錄數量增長很快的數據庫對象,并采 取相應的措施 -- 刪除歷史數據 --- 擴表空間 alter tablespace add datafile ‘’ size (3). 系統健康檢查 檢查以下內容: init.ora controlfile redo log file archiving sort area size tablespace(system,temporary,tablespace fragment) datafiles(autoextend,location) object(number of extent,next extent,index) rollback segment logging &tracing(alert.log,max_dump_file_size,sqlnet) (4). 檢查無效的數據庫對象 SELECT owner, object_name, object_type FROM dba_objects WHERE status=’INVALID’。 (5). 檢查不起作用的約束 SELECT owner, constraint_name, table_name, constraint_type, status FROM dba_constraints WHERE status = 'DISABLED’ AND constraint_type = 'P' (6). 檢查無效的trigger SELECT owner, trigger_name, table_name, status FROM dba_triggers WHERE status = 'DISABLED’ 每月的工作 (1). Analyze Tables/Indexes/Cluster analyze table estimate statistics sample 50 percent; (2). 檢查表空間碎片 根據本月每周的檢查分析數據庫碎片情況,找到相應的解決方法 (3). 尋找數據庫性能調整的機會 比較天天對數據庫性能的監控報告,確定是否有必要對數據庫性能進 行調整 (4). 數據庫性能調整 如有必要,進行性能調整 (5). 提出下一步空間治理計劃 根據每周的監控,提出空間治理的改進方法 Oracle DBA 日常治理 目的:這篇文檔有很具體的資料記錄著對一個甚至更多的ORACLE 數據庫天天的,每月的, 每年的運行的狀態的結果及檢查的結果,在文檔的附錄中你將會看到所有檢查,修改的SQL 和PL/SQL 代碼。 一.日維護過程 A.查看所有的實例是否已起 確定數據庫是可用的,把每個實例寫入日志并且運行日報告或是運行測試 文件。當然有一些操作我們是希望它能自動運行的。 可選擇執行:用ORACLE 治理器中的‘PROBE’事件來查看 B.查找新的警告日志文件 1. 聯接每一個操作治理系統 2. 使用‘TELNET’或是可比較程序 3. 對每一個治理實例,經常的執行$ORACLE_BASE//bdump 操 作,并使其能回退到控制數據庫的SID。 4. 在提示下,使用UNIX 中的‘TAIL’命令查看alert_.log,或是 用其他方式檢查文件中最近時期的警告日志 5. 假如以前出現過的一些ORA_ERRORS 又出現,將它記錄到數據庫 恢復日志中并且仔細的研究它們,這個數據庫恢復日志在〈FILE〉中 C.查看DBSNMP 的運行情況 檢查每個被治理機器的‘DBSNMP’進程并將它們記錄到日志中。 在UNIX 中,在命令行中,鍵入ps –ef grep dbsnmp,將回看到2 個 DBSNMP 進程在運行。假如沒有,重啟DBSNMP。 D.查數據庫備份是否成功 E.檢查備份的磁帶文檔是否成功 F.檢查對合理的性能來說是否有足夠的資源
1. 檢查在表空間中有沒有剩余空間。 對每一個實例來說,檢查在表空間中是否存在有剩余空間來滿足當天 的預期的需要。當數據庫中已有的數據是穩定的,數據日增長的平均 數也是可以計算出來,最小的剩余空間至少要能滿足天天數據的增 長。 A) 運行‘FREE.SQL’來檢查表空間的剩余空間。 B) 運行‘SPACE.SQL’來檢查表空間中的剩余空間百分率 2. 檢查回滾段 回滾段的狀態一般是在線的,除了一些為復雜工作預備的專用 段,它一般狀態是離線的。 a) 每個數據庫都有一個回滾段名字的列表。 b) 你可以用V$ROLLSTAT 來查詢在線或是離線的回滾段的現在狀 態. c) 對于所有回滾段的存儲參數及名字, 可用 DBA_ROLLBACK_SEGS 來查詢。但是它不如V$ROLLSTAT正確。 3. 識別出一些過分的增長 查看數據庫中超出資源或是增長速度過大的段,這些段的存儲參 數需要調整。 a) 收集日數據大小的信息, 可以用 ‘ANALYZE5PCT.SQL’。假如你收集的是每晚的信息, 則可跳過這一步。 b) 檢查當前的范圍,可用‘NR.EXTENTS.SQL’。