ORACLE_表空间_计算增加数据文件数量

来源:互联网 发布:淘宝短信营销话术 编辑:程序博客网 时间:2024/06/06 17:41


脚本说明:
脚本可以在pl/sql命令行模式下执行,ovsee用户即可(推荐)。
新卷添加数据文件的名字格式为:表空间名(小写)+ 新卷号 + 文件号(计算得出,一个32G算,小数则进位取整)。
脚本需要输入3个变量,需关闭卷的路径名(&old_vol_name),新卷的路径名(&new_vol_name),新卷的数字号(&new_vol_num)。
变量输入时,注意新旧卷名尽量详实,尤其是新卷路径,请一定填写到数据文件所在的目录。
脚本输出后,注意测算下新加文件的个数,是否会超出db_files的设置值。
确认OK后,就可执行脚本,进行新文件的创建了。完毕后再ping个脚本关闭旧卷的自动扩展,resize等等,搞定。

脚本:
--version_1.0.0.0
--script_add_new_dbfiles
--wendao_20140326
**************************************************************************************************************
set serveroutput on
exec dbms_output.enable(9999999999);
declare
my_code varchar2(30000);
my_tabspace varchar2(20);
my_num number(10):=1;
i number(10);
cursor my_cursor is
select f1.tablespace_name,ceil((sum(f1.maxbytes/1024/1024/1024)-sum(f1.bytes/1024/1024/1024))/32) num_need_to_extend
from dba_data_files f1,dba_data_files f2
where f1.file_name like '&old_vol_name%'
and f1.autoextensible='YES'
and f1.file_id=f2.file_id
and f1.bytes<f2.maxbytes
group by f1.tablespace_name
order by 2 asc;
begin
open my_cursor;
loop
fetch my_cursor into my_tabspace,my_num;
i:=1;
while i<=my_num
loop
select 'alter tablespace '||my_tabspace||' add datafile '||''''||'&new_vol_name'||lower(my_tabspace)||'_'||'&new_vol_num'||'_'||i||'.dbf'''||' size 100m autoextend on next 100m;'
into my_code from dual;
dbms_output.put_line(my_code);
i:=i+1;
end loop;
exit when my_cursor%notfound;
end loop;
close my_cursor;
end;
/


统计表空间需添加的数据文件:
select f1.tablespace_name,ceil((sum(f1.maxbytes/1024/1024/1024)-sum(f1.bytes/1024/1024/1024))/32) num_need_to_extend
from dba_data_files f1,dba_data_files f2
where f1.file_name like '&old_vol_name%'
and f1.autoextensible='YES'
and f1.file_id=f2.file_id
and f1.bytes<f2.maxbytes
group by f1.tablespace_name
order by 2 asc;

阅读全文
0 0
原创粉丝点击