使用oracle procedure儲存過程自動擴充套件表空間空間tablespace_自動化運維

wisdomone1發表於2015-08-31

引子:

      近期在某運營商客戶運維資料庫時,多次需要擴充套件可用空間不足的表空間,而我在具體操作時,需要消耗很多無謂時間,不停的重複同樣的動作,極大消減了工作效率;試想如果透過自動化指令碼實現,可以明顯提升工作熱情,當然我這個指令碼還只是雛形,請大家多指正與批評,需要不停的修正,方可滿足生產環境的複雜因素。

結論:

1,還要考慮生產環境擴充套件表空間所用檔案系統不同路徑的複雜問題
2,還要考慮併發控制此自動化運維指令碼的複雜問題
3,還要考慮其它一些問題,比如要過濾不需要擴充套件的表空間,比如:針對RAC資料庫,UNDO表空間以及SYSTEM和USER以及SYSAUX表空間
4,透過dbms_job或dbms_scheduler定期排程其自動化指令碼,即可定期自動化擴充套件空間不足的表空間


具體實現:


1,儲存過程程式碼
create or replace procedure proc_autoextend_tbs
as
log_file1 utl_file.file_type;
cursor cur_tbs is
SELECT
dfs.tablespace_name,
round(Dfs.Free_Space/Ddf.Total_Space,2)*100
from
(
SELECT
tablespace_name,
SUM(bytes/1024/1024/1024) total_space
FROM
dba_data_files
GROUP BY
tablespace_name
)
ddf,
(
SELECT
tablespace_name,
SUM(bytes/1024/1024/1024) free_space
FROM
dba_free_space
GROUP BY
tablespace_name
)
dfs
WHERE
dfs.tablespace_name=ddf.tablespace_name;
v_tbs v$datafile.name%type;
v_ratio number;
v_str varchar2(10);
begin
open cur_tbs;
loop
fetch cur_tbs into v_tbs,v_ratio;
exit when cur_tbs%notfound;
if v_ratio<=20 then
v_str:=dbms_random.string('a',4);
execute immediate 'alter tablespace '||v_tbs||' add datafile '||''''||'/oracle/oradata/guowang/'||v_str||'.dbf'||''''||' size 10m autoextend off';
dbms_output.put_line(v_tbs||' '||v_ratio||' free ratio is low,please add space');
log_file1:=utl_file.fopen('DIR_TBS','test_log.txt','a');
utl_file.new_line(log_file1,1);
utl_file.put(log_file1,'tablespace '||v_tbs||' already extend space');
utl_file.fclose(log_file1);
end if;
end loop;
close cur_tbs;
end;
/

2,執行儲存過程

SQL> exec proc_autoextend_tbs;
SYSAUX 15 free ratio is low,please add space
USERS 16 free ratio is low,please add space
SYSTEM 1 free ratio is low,please add space

PL/SQL procedure successfully completed.

3,檢視作業系統日誌

[oracle@seconary tbs_dir]$ more test_log.txt

tablespace SYSAUX already extend space

tablespace USERS already extend space

tablespace SYSTEM already extend space

個人簡介


8年oracle從業經驗,具備豐富的oracle技能,目前在國內北京某專業oracle服務公司從事高階技術顧問。
服務過的客戶:
中國電信
中國移動
中國聯通
中國電通
國家電網
四川達州商業銀行
湖南老百姓大藥房
山西省公安廳
中國郵政
北京302醫院     
河北廊坊新奧集團公司

 專案經驗:
中國電信3G專案AAA系統資料庫部署及最佳化
      中國聯通4G資料庫效能分析與最佳化
中國聯通CRM資料庫效能最佳化
中國移動10086電商平臺資料庫部署及最佳化
湖南老百姓大藥房ERR資料庫sql最佳化專案
四川達州商業銀行TCBS核心業務系統資料庫模型設計和RAC部署及最佳化
四川達州商業銀行TCBS核心業務系統後端批處理儲存過程功能模組編寫及最佳化
北京高鐵訊號監控系統RAC資料庫部署及最佳化
河南宇通客車資料庫效能最佳化
中國電信電商平臺核心採購模組表模型設計及最佳化
中國郵政儲蓄系統資料庫效能最佳化及sql最佳化
北京302醫院資料庫遷移實施
河北廊坊新奧data guard部署及最佳化
山西公安廳身份證審計資料庫系統故障評估
國家電網上海災備專案4 node rac+adg 
       貴州移動crm及客服資料庫效能最佳化專案
       貴州移動crm及客服務資料庫sql稽核專案
       深圳穆迪軟體有限公司資料庫效能最佳化專案

聯絡方式:
手機:18201115468
qq   :   305076427
qq微博: wisdomone1
新浪微博:wisdomone9
qq群:275813900    
itpub部落格名稱:wisdomone1    http://blog.itpub.net/9240380/

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

相關文章