• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >数据库其它 > 对分区表进行alter-switch时遇到的错误

对分区表进行alter-switch时遇到的错误

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了保存分区表时出现错误,分区表错误,硬盘分区表错误,分区表错误修复,保存分区表出现错误等相关知识,希望本文的分享对您有所帮助
创建一个和目标表一样定义的表;
在表上加上constraint以确保表的数据在目标分区里;
Alter table 源表 switch to 目标表 partition 分区号
其中分区号可以通过$partition.partion_func( column value)获得
这个过程比insert select要快很多,因为不涉及到io,只需要修改元数据,该边partition的onwer而已。

但是上述过程只适用于目标表的分区函数中目标分区已存在的情况。比如你定义了边界为1,2,3的分区函数,那么4和5都会插入到第4个分区里。

所以我推荐使用这种提前定义好分区函数所有分区的方法,如果你要按天分区,你就先定义好1000个分区。这种方法比较简单,不需要在加入数据时进行检查,从而导致错误。

如果您一定要使用动态分区的话,在加入一个源表作为新的分区时,需要如下操作:

首先取得新加入的分区列的值,设为X;
通过sys.Partition_range_values和sys.partition_functions找到目标分区函数所有的边界值;
进行如下的检查:
在这里分界值属于左边分区还是右边分区是有区别的,我们假设属于左边分区;
如果X存在于2步的边界值集合中,那么恭喜你,不需做额外的操作;
如果X大于2步中最大的边界,你不仅需要为X分裂出一个分区,还要保证小于X的数据都有自己分区。
每次加入分区时检查已有的边界值,如果不等于其中的任何一个,则以X为参数split, 并删除目标表中分区列和X相同的数据。
像之前描述的步骤那样switch源表到目标分区中。
如果在2步的时候,目标分区已经存在数据,alter ...switch语句就会失败,原因是目标分区不为空。

可以理解为,switch操作是修改表的元数据,用新的分配单元替换原来的分配单元。如果原来的分配单元不为空,那么这次替换就会造成一些数据的丢失,从而破坏了数据的完整性,因此是不允许的。 </div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 对分区表进行alter-switch时遇到的错误

相关文章

  • 2017-05-11数据库查询优化(主从表的设计)
  • 2017-05-11设置CA证书来强化PostgreSQL的安全性的教程
  • 2017-05-11MSSQL转MySQL数据库的实际操作记录
  • 2017-05-11NoSQL 数据库你应该了解的 10 件事
  • 2017-05-11深入SQL中PIVOT 行列转换详解
  • 2017-05-11收藏的SQLServer技巧集
  • 2017-05-11DBCC SHRINKDATABASEMS SQL数据库日志压缩方法
  • 2017-05-11ACCESS转SQLSERVER数据库的注意事项
  • 2017-05-11PostgreSQL数据库服务端监听设置及客户端连接方法教程
  • 2017-05-11where 子句的执行顺序

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • mybatis映射XML文件详解及实例
    • 数据库面试知识点
    • sqlserver中drop、truncate和delete语句的用法
    • 三表左连接查询的sql语句写法
    • SQL SERVER 与ACCESS、EXCEL的数据转换
    • mssql注入躲避IDS的方法
    • Sql Server、Access数据排名的实现方法(例如:成绩排名)
    • 数据库的ACID特性术语详解
    • MySQL与Oracle SQL语言差异比较一览
    • SQL 注入式攻击的本质

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有