oracle RAC调整数据文件大小并移动表到指定的表空间

一、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语句

    set echo off
    set feedback off
    set newpage none
    set verify off
    set term off
    set trims on
    set heading  off
    set timing off
    set verify off
    spool AlterchangeSpace.sql
  
    
    select 'alter table  '||owner||'.'||table_name||'  move '||' tablespace '||' FAB '||';' from (
      select * from dba_tables where owner='FAB' and tablespace_name not in ('FAB')
    ); 
    spool off
    
    2、执行changeSpace.sql的脚本changeSpaceFirst.sh:
    
      echo "begin `date '+%Y%m%d %H:%M:%S'`"
      . ${HOME}/yz/env.sh
      . ${MIGRATE_PATH}/cfg/par_set.sh
      if [ $? -eq 1 ]
      then
      echo "初始化环境ERROR!"
      return 1
      fi
 
      sqlplus $dbusr/$dbpwd@$dbsid << !
 
      @changeSpace.sql;
 
      exit
      !
      echo "end `date '+%Y%m%d %H:%M:%S'`"
    此时生成了对应的AlterChangeSpace.sql脚本:
  3、利用changeSpaceSecond.sh执行AlterChangeSpace.sql脚本:
    
      echo "begin `date '+%Y%m%d %H:%M:%S'`"
      . ${HOME}/yz/env.sh
      . ${MIGRATE_PATH}/cfg/par_set.sh
      if [ $? -eq 1 ]
      then
      echo "初始化环境ERROR!"
      return 1
      fi
 
      sqlplus $dbusr/$dbpwd@$dbsid << !
 
      @AlterchangeSpace.sql;
 
      exit
      !
      echo "end `date '+%Y%m%d %H:%M:%S'`"
  注:基于原来表空间的建立在移动表上的索引必须重建
    alter index index_name rebuild tablespace tablespace_name;
    批量执行索引的重建方法类似于批量移动表
    生成alter的select语句如下;
 
    select 'alter index '|| t.object_name ||' rebuild tablespace FAB;' from dba_objects t,dba_indexes q
      where t.owner='FAB'
        and t.object_type='INDEX'  
        and q.index_name=t.object_name
        and q.index_type!='LOB';
 

 

 

posted on 2015-03-28 17:04 moonfans 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/moonfans/p/4374466.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值