随笔 - 750  文章 - 1  评论 - 107  阅读 - 34万

[转][Oracle]数据文件自动扩展

参考:http://www.voidcn.com/article/p-mckvczfj-ov.html
解决 Oracle 数据库文件自动扩展到 32G 后报错 ORA-01563 的问题
复制代码
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 total.tablespace_name, Round(total.MB, 2) AS Total_MB,Round(total.MB - free.MB, 2) AS Used_MB, 
       Round(( 1 - free.MB / total.MB ) * 100, 2) AS Used_Pct  
FROM (SELECT tablespace_name, Sum(bytes)/1024/1024 AS MB FROM dba_free_space GROUP BY tablespace_name) free,   
(SELECT tablespace_name,Sum(bytes) / 1024 / 1024 AS MB FROM dba_data_files GROUP BY tablespace_name) total  
WHERE  free.tablespace_name = total.tablespace_name 
       AND free.tablespace_name <> 'EXAMPLE' 
       and free.tablespace_name <> 'SYSTEM' 
       AND free.tablespace_name <> 'SYSAUX' 
       --AND free.tablespace_name <> 'USERS' 
       AND free.tablespace_name NOT LIKE 'UNDOTBS%';  
Begin  
  for tablespace_all in c_tablespace loop  
        If tablespace_all.USED_PCT >=90 Then  
            ALL_file_name := 'c:\oracle\oradata\数据库DB\' || tablespace_all.tablespace_name;  
            ALL_file_name := ALL_file_name||'_'||to_char(sysdate,'yyyymmddhh24')||'.dbf';  
            Vs_Sql := 'alter tablespace "'||tablespace_all.tablespace_name||'" add datafile '''||ALL_file_name||''' size 100m autoextend on next 100m MAXSIZE UNLIMITED';              
            --dbms_output.put_line(Vs_Sql);  
            Execute Immediate Vs_Sql;  
       End If;  
  end loop;  
exception  
  when others then  
    dbms_output.put_line(sqlerrm);  
End auto_add_datafile;  
复制代码

 添加定时执行(每天1点时)

SQL> variable jobid number;  
SQL> exec dbms_job.submit(:jobid,'auto_add_datafile;',sysdate, 'TRUNC(sysdate) + 1 +1/ (24)');  
--每天凌晨1点执行。  
SQL> exec dbms_job.run(:jobid); 

 如果需要手动执行,可以在 PL/SQL 里执行:

begin
   auto_add_datafile;
end;

 

posted on   z5337  阅读(337)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示