一、Oracle RAC 调整表空间数据文件大小
1、先查找出表空间对应的数据文件路径:
select file_name,tablespace_name from dba_data_files ;
2、确认目前数据文件的大小即表空间的大小
select tablespace_name ,sum(bytes)/1024/1024 total from dba_data_files group by tablespace_name;
3、查看表空间的目前使用情况
select a.tablespace_name,total,free,total-free used from
( select tablespace_name,sum(bytes)/1024/1024 total from dba_data_files
group by tablespace_name) a,
( select tablespace_name,sum(bytes)/1024/1024 free from dba_free_space
group by tablespace_name) b
where a.tablespace_name=b.tablespace_name
4、通过默认参数pctfree=10%,pctused确定表空间的大小是否满足后续的使用
5、通过调整数据文件的大小来增加表空间
alter database datafile '+DATA1/ora11g/datafile/system.262.760023469' resize 3G;
6、确认表空间大小是否更改成功
二、移动表到指定的表空间
1、首先,使用下面的命令移动:
alter table table_name move tablespace tablespace_name;
2、然后,如果有索引的话必须重建索引:
alter index index_name rebuild tablespace tablespace_name;
注:当然,可以使用spool来帮助实现多个表的操作.
set header off;
spool /export/home/oracle/alter_tables.sql;
select 'alter table ' || object_name || ' move tablespace users'
from dba_object
where owner = 'XXX' and object_type = 'TABLE';
spool off;
之后执行此sql脚本即可.
同样对于index也做同样的操作.
如果要使用sql脚本批量执行的话可能会丢失一下索引信息,使得原来建立在别的表空间上的 索引失效
三、批量处理的方法步骤:
首先考虑使用shell执行sql脚本,生成对应的批量执行sql脚本,然后再执行sq脚本。
1、changeSpace.sql脚本:这个主要是生成对应的Alter语句