Oracle按照用户迁移表

按用户迁移表

迁移表sql

alter table owner.table_name move tablespace tablespace_name;
示例,操作如下:

将表空间下一个用户的所有表迁移到另一个表空间

一、查看表空间表及其大小:

1、查看表空间表及其表大小
select owner, segment_name, tablespace_name, sum(bytes/1024/1024)||'MB' from dba_extents
where tablespace_name ='USERS'
group by owner, segment_name, tablespace_name
order by 4;

2、按照用户查询表及其表大小
select owner, segment_name, tablespace_name, sum(bytes/1024/1024)||'MB' from dba_extents
where OWNER ='TEST'
group by owner, segment_name, tablespace_name
order by 4;

二、创建目标表空间并添加数据文件:

1、创建表空间(#临时表空间 CREATE TEMPORARY TABLESPACE)
CREATE TABLESPACE TEST_DATA DATAFILE '+DATA' SIZE 10G AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED;

2、添加数据文件(#临时表空间 ADD TEMPFILE)
ALTER TABLESPACE TEST_DATA ADD DATAFILE '+DATA' SIZE 10G AUTOEXTEND ON NEXT 2G MAXSIZE UNLIMITED;

三、修改用户默认表空间:

1、永久表空间
alter user TEST default tablespace TEST_DATA;

2、临时表空间
alter user TEST default temporary tablespace TMP_TEST_DATA;

四、按照用户拼接表迁移语句:

1、使用dba_tables查询表拼接迁移语句
select 'alter table '||owner||'.'||table_name ||' move tablespace TEST_DATA;' from dba_tables where owner='TEST';

#有的表用dba_extents能查到,也可以用,但是导出的时候报错表不存在,既然没有那就忽略吧
select distinct 'alter table '||owner||'.'||segment_name ||' move tablespace TEST_DATA;' from dba_extents where owner='TEST' ;

2、输出如下:
SQL> select 'alter table '||owner||'.'||table_name ||' move tablespace TEST_DATA;' from dba_tables where owner='TEST';

'ALTERTABLE'||OWNER||'.'||SEGMENT_NAME||'MOVETABLESPACETS_TANGRZ_DATA;'
-----------------------------------------------------------------------------------
alter table TEST.T_TAB_01 move tablespace TEST_DATA;
alter table TEST.T_TAB_02 move tablespace TEST_DATA;
alter table TEST.T_TAB_02 move tablespace TEST_DATA;
alter table TEST.T_TAB_03 move tablespace TEST_DATA;

#在数据库中执行迁移语句即可,监控一下目标表空间大小,避免空间不够导致表迁移失败

执行 “步骤一”命令验证表所在表空间是否更改。

至此结束,有什么问题欢迎留言,谢谢。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值