解决方案 »
- 菜鸟提问:关于VIEW可否跨SCHEMA查询的问题,解决马上给分!
- 两个磁盘阵列间的数据转移
- oracle聚合函数使用问题!急
- 能否从oracle日志文件中获取最近对数据库的操作
- 我在sql*Plus中创建表和相应的触发器,但总是有错误:创建的触发器带有编译错误。 请看下面代码:
- oracle是没有希望的!没落的贵族!不解决我不用了!
- 在windows2000server上安装目录服务后,oracle8.1.7无法自动启动
- 那位大哥安装过oracle app 11i,帮忙解决一下下列问题。郁闷!!!!!
- 在oracle存储过程中,如何定义可变数组?
- 为什么我的ORACLE安装程序运行不起来?
- 同義字 建立的權限問題
- 递归查询 排序问题 求指教?
语法很简单:alter table tbname merge partitions/subpartitions pt1,pt2 into partition/subpartition pt3;
同样也支持update indexes子句以避免单独执行造成索引失效的问题。
需要注意一点,要合并的两个分区必须是连续的,这点是由分区本身的特性所决定的
分区表及分区索引(11)--合并表分区
最近需要把一个大的分区表的分区重新进行安排。看了网上的资料,发觉有3种方法。
1、alter table table_name split partition
alter table table_name split partition在我的10.2.0.1好像有bug,有时候不能操作,而且速度很慢
2、Oracle的在线重定义表功能
尝试使用大表好像也不成功
3、exp/imp
最后我是使用这个方式,因为数据库是个历史库。
1)exp使用tables方式就行了
exp userid=host/report tables=(table_name) grants=n indexes=n constraints=n file=table_name.dmp log=table_name_exp.log
2)重新建表,先不建索引和主键
3)imp导入,几个参数需要注意。1、ignore=y因为表已经建了,有这个参数可以让表导入继续下去2、buffer要增加,否则会出错,我加到1000000。3、commit=y默认是表加载完才提交,表的数据太多了,会挤暴undo表分区,增加这个参数后buffer满了就提交。索引和主键我是导入数据后再建
imp userid=host/report buffer=1000000 ignore=y commit=y tables=(table_name) grants=n indexes=n constraints=n file=table_name.dmp log=table_name_imp.log
4)删除旧表后重建索引和主键
create unique index pk_table_name on table_name (col1, col2) local tablespace tablespace_name;
alter table table_name add constraint pk_table_name primary key(col1, col2);