您的位置:首页 > 数据库 > Oracle

Oracle(表空间) 数据文件自动增加

2011-11-10 09:42 375 查看
 --------执行此脚本之前需要创建名称为 datafile_no 的序列 最小值为1 增长量为1 最大值为 10000000

 --------默认为在表空间HIS_DATA下创建数据文件。

 --------过程创建之后需要进行编译,编译成功后,创建job进行调用。间隔时间为 trunc(sysdate+1,'DD')+1/24 每天调用。

 --------并且调用时间必须在同步数据的job运行前前两小时执行。

 Create Or Replace Procedure Temp_1 Is

 Tablespacename Varchar(500);

 Free           Number(10);

 Vs_Sql         Varchar2(500);

 Data_File_No   Number(4);

Begin

 Free := 0;

 Select Tablespace_Name, Fz

 Into Tablespacename, Free

 From (Select a.Tablespace_Name, a.Bytes / 1024 / 1024 "总共MB", (a.Bytes - b.Bytes) / 1024 / 1024 "使用MB",

        b.Bytes / 1024 / 1024 "空闲MB", Round(((a.Bytes - b.Bytes) / a.Bytes) * 100, 2) Fz ------使用百分比

     From (Select Tablespace_Name, Sum(Bytes) Bytes From Dba_Data_Files Group By Tablespace_Name) a,

       (Select Tablespace_Name, Sum(Bytes) Bytes, Max(Bytes) Largest From Dba_Free_Space Group By Tablespace_Name) b

     Where a.Tablespace_Name = b.Tablespace_Name)

 Where Tablespace_Name = 'HIS_DATA'; ----默认表空间名称

 If Free >= 80 Then

  Select Data_Src.Datafile_No.Nextval Into Data_File_No From Dual;

  Vs_Sql := 'alter tablespace HIS_DATA add datafile ''D:/ORACLE/PRODUCT/10.2.0/ORADATA/DBHOUSE/HIS_DATA' || Data_File_No || '.dbf'' size 5M autoextend on next 5m maxsize unlimited';

  -----alter中的路径需要根据本地数据库的安装路径修改

  Execute Immediate Vs_Sql;

 End If;

End Temp_1;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息