Oracle自動新增資料檔案過程
建立一個JOB定期執行以下過程就可以自動新增資料檔案
當表空間使用90%觸發過程新增資料檔案,資料檔案時按日期生成
create or replace procedure auto_add_datafile is
ALL_file_name Varchar(500);
file_name Varchar(500);
tablespace_all varchar(500);
Vs_Sql Varchar2(500);
cursor c_tablespace is
select a.表空間名稱,a.使用率,substr(b.FILE_NAME,0,INSTR (b.FILE_NAME, '/',1,5)) as FILE_NAME from (select t.tablespace_name "表空間名稱",round((t.full_space-nvl
(f.free_space,0))/t.full_space*100,0) "使用率"from (select tablespace_name,round
(sum(bytes)/(1024*1024),2) free_space from dba_free_space group by tablespace_name) f ,
(select tablespace_name,round(sum(bytes)/(1024*1024),2) full_space from dba_data_files group by
tablespace_name) t where f.tablespace_name=t.tablespace_name(+)) a,dba_data_files b where a.表空間名稱=b.TABLESPACE_NAME group by a.表空間名稱,a.使用率,substr(b.FILE_NAME,0,INSTR (b.FILE_NAME, '/',1,5));
Begin
PRO_DATA_UPDATE_LOG('auto_add_datafile', '開始', null,null);
for tablespace_all in c_tablespace loop
If tablespace_all.使用率 >=80 Then
if tablespace_all.表空間名稱='USERS' OR tablespace_all.表空間名稱='SYSAUX' OR tablespace_all.表空間名稱='SYSTEM' OR tablespace_all.表空間名稱='UNDOTBS1' then
ALL_file_name := tablespace_all.file_name;
--ALL_file_name := substr(ALL_file_name,0,INSTR (ALL_file_name, '.')-1);
ALL_file_name := ALL_file_name||tablespace_all.表空間名稱||'_'||to_char(sysdate,'yyyymmdd')||'.dbf';
Vs_Sql := 'alter tablespace '||tablespace_all.表空間名稱||' add datafile '''||ALL_file_name||''' size 2G';
--dbms_output.put_line(Vs_Sql);
Execute Immediate Vs_Sql;
else
ALL_file_name := tablespace_all.file_name;
--ALL_file_name := substr(ALL_file_name,0,INSTR (ALL_file_name, '.')-1);
ALL_file_name := ALL_file_name||tablespace_all.表空間名稱||'_'||to_char(sysdate,'yyyymmdd')||'.dbf';
Vs_Sql := 'alter tablespace '||tablespace_all.表空間名稱||' add datafile '''||ALL_file_name||''' size 30G';
--dbms_output.put_line(Vs_Sql);
Execute Immediate Vs_Sql;
end if;
End If;
end loop;
PRO_DATA_UPDATE_LOG('auto_add_datafile', '結束', '正常',1);
exception
when others then
PRO_DATA_UPDATE_LOG('auto_add_datafile',SQLERRM, '異常',0);
End auto_add_datafile;
當表空間使用90%觸發過程新增資料檔案,資料檔案時按日期生成
create or replace procedure auto_add_datafile is
ALL_file_name Varchar(500);
file_name Varchar(500);
tablespace_all varchar(500);
Vs_Sql Varchar2(500);
cursor c_tablespace is
select a.表空間名稱,a.使用率,substr(b.FILE_NAME,0,INSTR (b.FILE_NAME, '/',1,5)) as FILE_NAME from (select t.tablespace_name "表空間名稱",round((t.full_space-nvl
(f.free_space,0))/t.full_space*100,0) "使用率"from (select tablespace_name,round
(sum(bytes)/(1024*1024),2) free_space from dba_free_space group by tablespace_name) f ,
(select tablespace_name,round(sum(bytes)/(1024*1024),2) full_space from dba_data_files group by
tablespace_name) t where f.tablespace_name=t.tablespace_name(+)) a,dba_data_files b where a.表空間名稱=b.TABLESPACE_NAME group by a.表空間名稱,a.使用率,substr(b.FILE_NAME,0,INSTR (b.FILE_NAME, '/',1,5));
Begin
PRO_DATA_UPDATE_LOG('auto_add_datafile', '開始', null,null);
for tablespace_all in c_tablespace loop
If tablespace_all.使用率 >=80 Then
if tablespace_all.表空間名稱='USERS' OR tablespace_all.表空間名稱='SYSAUX' OR tablespace_all.表空間名稱='SYSTEM' OR tablespace_all.表空間名稱='UNDOTBS1' then
ALL_file_name := tablespace_all.file_name;
--ALL_file_name := substr(ALL_file_name,0,INSTR (ALL_file_name, '.')-1);
ALL_file_name := ALL_file_name||tablespace_all.表空間名稱||'_'||to_char(sysdate,'yyyymmdd')||'.dbf';
Vs_Sql := 'alter tablespace '||tablespace_all.表空間名稱||' add datafile '''||ALL_file_name||''' size 2G';
--dbms_output.put_line(Vs_Sql);
Execute Immediate Vs_Sql;
else
ALL_file_name := tablespace_all.file_name;
--ALL_file_name := substr(ALL_file_name,0,INSTR (ALL_file_name, '.')-1);
ALL_file_name := ALL_file_name||tablespace_all.表空間名稱||'_'||to_char(sysdate,'yyyymmdd')||'.dbf';
Vs_Sql := 'alter tablespace '||tablespace_all.表空間名稱||' add datafile '''||ALL_file_name||''' size 30G';
--dbms_output.put_line(Vs_Sql);
Execute Immediate Vs_Sql;
end if;
End If;
end loop;
PRO_DATA_UPDATE_LOG('auto_add_datafile', '結束', '正常',1);
exception
when others then
PRO_DATA_UPDATE_LOG('auto_add_datafile',SQLERRM, '異常',0);
End auto_add_datafile;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29065182/viewspace-1750374/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle 新增儲存自動擴充套件資料檔案流程(auto)Oracle套件
- Oracle資料庫新增和移動控制檔案Oracle資料庫
- OS 刪除oracle資料檔案恢復過程Oracle
- Oracle DG備庫手動管理新增資料檔案Oracle
- 半自動化運維之動態新增資料檔案(一)運維
- 半自動化運維之動態新增資料檔案(二)運維
- Oracle資料庫啟動過程Oracle資料庫
- 非OMF管理 自動新增資料檔案add_datafiles.sh
- ORACLE移動資料檔案Oracle
- OMF管理自動新增資料檔案指令碼add_datafile.sh指令碼
- 達夢資料庫資料檔案遷移過程資料庫
- oracle資料庫移動資料檔案、日誌檔案和控制檔案Oracle資料庫
- HDFS讀檔案過程分析:讀取檔案的Block資料BloC
- oracle 10g R2 恢復完資料庫後自動新增臨時表空間資料檔案Oracle 10g資料庫
- 安全警示錄---記一次oracle資料檔案遷移過程Oracle
- DG備庫手動管理 新增資料檔案
- 微信公眾號自動回覆新增檔案
- oracle資料庫啟動過程大揭祕Oracle資料庫
- ORACLE 資料庫 ASM磁碟組上新增控制檔案Oracle資料庫ASM
- oracle中移動控制檔案、資料檔案、日誌檔案Oracle
- maven外掛執行過程中自動執行sql檔案MavenSQL
- Oracle 資料檔案移動步驟Oracle
- 移動Oracle資料檔案的方法Oracle
- 在Oracle中移動資料檔案Oracle
- 在ORACLE移動資料庫檔案Oracle資料庫
- 通過移動資料檔案來均衡檔案I/O
- 透過移動資料檔案來均衡檔案I/O
- SQL Server資料庫還原過程記錄,bak檔案+mdf檔案SQLServer資料庫
- Oracle 通過儲存過程來生成CSV檔案Oracle儲存過程
- ORACLE 新增控制檔案Oracle
- 給oracle新增裸裝置資料檔案(AIX單機)OracleAI
- Oracle 資料庫例項啟動關閉過程Oracle資料庫
- 輸入表名後自動生成sqlldr控制檔案儲存過程SQL儲存過程
- oracle 9i 裸裝置資料檔案損壞的恢復過程Oracle
- 【STARTUP】Oracle資料庫啟動過程中引數檔案的使用的順序及注意事項Oracle資料庫
- 自動工作量資料檔案庫(AWR)
- oracle ocfs 叢集檔案系統新增資料檔案帶來的問題Oracle
- 為資料庫新增控制檔案資料庫