ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 實現oracle日常檢查的自動化

實現oracle日常檢查的自動化

原创 Linux操作系统 作者:bin_huhj 时间:2019-04-29 18:00:06 0 删除 编辑

隨著公司數據庫服務器的增加﹐每天日常檢查的工作量增大。想通過在linux下設定排程讓它自動檢查所有數據庫服務器的日常檢查﹐并記錄檢測到的問題。然后﹐通過oracle內發email的功能以網頁格式把相關問題發送email給相關人員 。


1.需要檢查的日常工作

alert log file
dmp log file
rman備份log
rman備份的檢測log
linux排程產生的log
oracle內的job
表空間使用情況(僅顯示使用量>90%)
2.實現方法
首先用ftp從各服務器上抓取相關log當到前linux服務器上(初定為7.3服務器﹐因為它是oracle9i﹐email方面應該更好用一些)
用linux的awk工具實現從各log當中提取有錯誤的信息﹐若沒有錯誤信息則報告正常﹐并另存文檔。
從各數據庫中查找oracle job執行情況(查詢dba_jobs)﹐以及表空間的使用情況(聯合dba_tablespaces ,v$datafile ,dba_data_files)
編寫發email的后端程式﹐并嵌入html格式﹐以各主機分類﹐分別顯示上面log的檢查結果(需考慮內容大于32k時如何處理)。
3.對于32k以上內容的處理﹕
雖然UTL_smtp.write_raw_data的raw類型只能處理32k的的數據﹐但可以重復調用﹐如(每次寫入10000字節)﹕
v_offset:=1;
WHILE v_offset < dbms_lob.getlength(v_body_clob)
LOOP
v_data:=dbms_lob.substr(v_body_clob,10000,v_offset);
v_offset:=v_offset+10000;
vrData := utl_raw.cast_to_raw(v_data);
UTL_smtp.write_raw_data(objConnection, vrData);
END LOOP;
定義v_body_clob為clob類型﹐通過使用dbms_lob.createtemporary﹐如﹕
dbms_lob.createtemporary(v_body_clob, FALSE, 10);
然后調用dbms_lob.write不斷的往v_body_clob中增加數據﹐這樣就存儲超過32k的數據。
dbms_lob.WRITE(v_body_clob, length(v_body), v_offset, v_body);
v_offset := dbms_lob.getlength(v_body_clob) + 1;

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/33600/viewspace-266402/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: 磁盤分區
请登录后发表评论 登录
全部评论

注册时间:2003-01-03

  • 博文量
    28
  • 访问量
    26258