当前位置:  数据库>oracle

关于Oracle分区表的move操作

    来源: 互联网  发布时间:2017-06-09

    本文导语: 关于分区表的move操作还是很值得深究的一个问题。如果分区表中含有lob字段,难度还会加大。 对于普通的表而言,做move操作室理所当然,Oracle提供的方式很直接快捷。当然了这个命令也不是高可用的范畴。但是对于数据重组...

关于分区表的move操作还是很值得深究的一个问题。如果分区表中含有lob字段,难度还会加大。
 对于普通的表而言,做move操作室理所当然,Oracle提供的方式很直接快捷。当然了这个命令也不是高可用的范畴。但是对于数据重组还是很方便快捷的。

一般来说,如果尝试对分区表进行move操作,会得到如下的错误警告。
SQL> alter table charge move tablespace large_data;
 alter table charge move tablespace large_data
            *
 ERROR at line 1:
ORA-14511: cannot perform operation on a partitioned object

 
这个时候可以使用如下的sql语句生成动态sql来做partition级别的move操作。
 比如对下面3个大表,如下的sql就可以生成成百上千条语句来完成partition级别的move操作。

select 'alter table '||table_name||' move partition '||partition_name||' tablespace large_data;' from user_tab_partitions where table_name in ('CHARGE','MEMO','CHARGE_REL')

如果表中含有lob字段,可能会碰到如下的问题

alter table memo move partition xxxx tablespace large_data;

          *
 ERROR at line 1:
 ORA-01658: unable to create INITIAL extent for segment in tablespace DATAS01

 碰到这种问题,一般有以下的几种原因,一种需要查看quota的情况,是否在对应的表空间中含有足够的quota
一种就是查看表空间的存储情况,是否有足够的空间。
 如果空间有限,而且有的分区没有数据,可以开启延迟加载的方式。启用deferred_segment

 expdp/impdp
使用数据泵是一种很好的选择,可以很方便的进行数据结构的dump到处,然后在导入的时候直接做remap_tablespace,这个功能是exp/imp所无法企及的。
 推荐使用impdp的remap功能。

perl/shell
当然了,可以利用exp+imp+shell/perl的方式来解析dump文件
 可以参考如下的博文。

里面详细讨论了解析dump文件的一些细节。

dbms_metadata.get_ddl
如果源shema可以随时访问到,在条件允许的时候可以直接通过dbms_metadata来生成对应的创建语句,可以在此基础上进行表空间的重新手工mapping。
 这个过程看似简单,其实还要考虑很多的细节。分区的分区太多,很容易就超过最大字符长度了,需要自己把握控制。


exchange partition
这种方式可能风险有些大,不过在某些情况下也是一种方案,可以通过exchange partition的形式来完成表空间的重新映射。
 使用普通表来和分区做一个交换。

 不过以上的方法都不太适合高可用的情况,不过downtime的时间也是需要考虑的,需要最大程度的减少操作时间,毕竟使用分区表的环境中,数据都是很大的,这个也需要大家斟酌。表空间的变更是目的,但是数据的重组就牵扯了数据的导出,导入之类的工作,大道至简,但是细节太多,还是需要多加注意。

浅谈Oracle分区表之范围分区

Oracle分区表迁移

Oracle分区表使用实例

Oracle分区表 (Partition Table) 的创建及管理


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • ORACLE日期相关操作
  • Linux下如何用C语言操作Oracle数据库相关的图书推荐
  • Oracle终于涉入支持Linux操作系统了
  • Linux平台下Oracle的操作
  • linux c 怎样利用pro*c/c++操作 win2000 下 oracle 谢谢
  • Window客户端通过ADO是否能够连接和操作Unix平台下的Oracle数据库?
  • Oracle将字符编码从GBK转到UTF8,如何操作比较稳妥?
  • 如何设定linux red hat 9的oracle9,让window的电脑可以操作数据库
  • linux oracle数据库删除操作指南
  • Linux环境中Oracle数据导入与导出备份操作
  • Oracle针对数据库某一行进行操作的时候,如何将这一行加行锁
  • oracle的plsql里有没有位操作的功能
  • fedora core5 (FC5) 下面不能装 Oracle 10g 么? (检查操作系统就通不过啊,晕)
  • Linux操作系统下Oracle数据库多实例启动方式及修改内存
  • 怎样在c语言的代码里内嵌的操作oracle数据库,各位大虾谢谢了
  • 一个关于JAVA操作oracle数据库时UPDATE权限的问题
  • Oracle中操作分页
  • Oracle 数据库操作技巧集
  • secureCRT远程连接服务器操作oracle数据库出现的问题
  • 请教各位:JAVA操作ORACLE的问题 急!!!
  • 学习登录oracle数据库时常用的操作命令
  • Oracle 12c发布简单介绍及官方下载地址
  • 在linux下安装oracle,如何设置让oracle自动启动!也就是让oracle那个服务自动启动,不是手动的
  • oracle 11g最新版官方下载地址
  • 请问su oracle 和su - oracle有什么不同?
  • Oracle 数据库(oracle Database)Select 多表关联查询方式
  • 虚拟机装Oracle R12与Oracle10g
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • Oracle 数据库开发工具 Oracle SQL Developer
  • 如何设置让Oracle SQL Developer显示的时间包含时分秒
  • Oracle EBS R12 支持 Oracle Database 11g


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,