可以通过alter方法,将一个表移动到另外一个表空间中:
成都创新互联公司专业为企业提供汾阳网站建设、汾阳做网站、汾阳网站设计、汾阳网站制作等企业网站建设、网页设计与制作、汾阳企业网站模板建站服务,10多年汾阳做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
sql: alter table spaceOne.tablename move tablespace spaceTwo;
解释:以上语句就是把tablename表从spaceOne移动到spaceTwo中。
备注一:
当前的用户必须对spaceTwo、spaceOne都有操作权限才可以。
备注二:
其实如果对两个表空间都有权限的话,可以通过
create spaceTwo.tablename as select * from spaceOne.tablename;
之后再删除spaceOne中tablename表的间接方式也能实现。
alter table IPMONMEX add PARTITION DATA_2012 --给表IPMONMEX增加一个DATA_2012分区
values less than ('2012010100000001') --分区依据(这个地方是不是没有写全?估计是存储2012年1月1日前的数据)
tablespace USERS2011 --在表空间USERS2011上创建此分区
--以下为分区控制参数
pctfree 10 --保留10%作为update用
initrans 1 --指明每个事物影响的最小数据块数
maxtrans 255 --指明每个事物影响的最大数据块数
--以下为存储参数
storage
(
initial 48K --存储初始大小
minextents 1 --最小扩展数量
maxextents unlimited --最大可扩展数量(无限)
) ;
1.关闭运行中的数据库
SQL shutdown immediate
2.启动数据库到mount状态
SQL startup mount
3.移动系统表空间(SYSTEM表空间)的数据文件
SQL host move D:\ORADATA\ORCL\SYSTEM01.DBF D:\ORACLE\ORADATA\
4.修改该表空间的数据文件路径
SQL alter database rename file 'D:\ORADATA\ORCL\SYSTEM01.DBF' to 'D:\ORACLE\ORA
DATA\SYSTEM01.DBF';
5.启动数据库,打开实例
SQL alter database open;
首先,使用下面的命令移动:
alter table table_name move tablespace tablespace_name;
然后,如果有索引的话必须重建索引:
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也做同样的操作.
alter table 表名move tablespace 新表空间名称\x0d\x0a注意:移动表的表空间后,该表的索引肯定会失效的,所以需要把索引重建一下\x0d\x0a索引重建索引语法:\x0d\x0aalter index 索引名称 rebuild;\x0d\x0a如果你的Oracle是企业板的话:\x0d\x0aalter index 索引名称 rebuild online;
一、使用imp/exp。先导出源库,再创建新库把表空间创建好,然后再导入。(据说这样可以,前提是新的库里面不能有与源库相同名字的表空间。有待验证!)
二、使用脚本进行修改。据目前所了解,正长情况下需要修改表的空间和表的索引的空间,如果涉及到BOLB字段的表,修改的方式又不一样了!