首页 | 互联网 | IT动态 | IT培训 | Cisco | Windows | Linux | Java | .Net | Oracle | 软件测试 | C/C++ | 嵌入式开发 | 存储世界 | 服务器
网络设备 | IDC | 安全 | 求职招聘 | 数字网校 | 网页设计 | 平面设计 | 技术专题 | 电子书下载 | 教学视频 | 源码下载 | 搜索 | 博客 | 论坛
中国IT实验室Oracle频道
中国IT教育
Google
首页 入门基础 安装配置 体系架构 PLSQL 备份恢复 性能调优 开发技术 资讯动态 考试认证 下载 专题 讨论
您现在的位置: 中国IT实验室 >> Oracle >> PLSQL >> 正文

PL/SQL Developer导出分区索引脚本

  不准确分析及规避方法

  1 案例回访

  硬件环境:IBM XSERIES 3650

  操作系统:Windows2003标准版+Sp02

  数据库版本:Oracle9.2.0.1

  PL/SQL Developer版本:7.0.2.1076

  由于业务需要,需先drop一张分区表T_SMS,再重建此表,要求表结构、索引等完全一致。但当时开局版本一时无法找到,故决定利用PL/SQL Developer工具“View SQL”获取到的SQL语句来重建分区表。(此分区表按天进行分区,且由于每天数据量庞大,故每天凌晨都会truncate上个月的数据,保证表中最多只保留30天数据。)

  重建表后第二天发现此表索引失效,导致无法进行insert等操作。经过分析,truncate分区操作最可能造成索引失效。但此表建立的是本地分区索引,按天truncate操作后,Oracle会自动重建本地分区索引,不应该需要手工干预,且以前此表没有出现过索引失效的问题。故初步判断可能是新旧表结构不同造成,立即查看此表索引类型,发现索引并不是本地索引,且从PL/SQL Developer工具中导出的建索引语句中也并不是本地索引。

  那为何原表索引为本地分区索引,利用PL/SQL Developer工具导出脚本后索引类型就改变了呢?是不是PL/SQL Developer工具在导出索引脚本方面存在bug?

  2 案例分析

  刚才已经通过查看当时建表语句即可定位为PL/SQL Developer工具导出的脚本问题,我们可以再通过以下几个试验来验证一下。

  2.1 建索引时加local关键字

  (1)建索引语句如下:

  create index T_SMS_IDMONTHDAY on T_SMS (MONTHDAY)

  local tablespace SMS_DAT;

  (2)利用PL/SQL Developer工具“View SQL”获取的建索引脚本如下:

  create index T_SMS_IDMONTHDAY on T_SMS (MONTHDAY);

  (3)分析:

  可见,建本地分区索引后再利用PL/SQL Developer工具导出脚本即变为了全局索引,索引类型发生了变化。

  2.2 建索引时不加local关键字或加global关键字

  (1)建索引语句如下:

  create index T_SMS_IDMONTHDAY on T_SMS (MONTHDAY)

  [global] tablespace SMS_DAT;

  (2)利用PL/SQL Developer工具“View SQL”获取的建索引脚本如下:

[1] [2] 下一页

【责编:Chuan】

中国IT教育

相关产品和培训
文章评论
 友情推荐链接
 认证培训
 专题推荐

 ·JAVA的应用编程接口——JAVA API详解…
 ·Linux Shell学习技术专题[上]…
 ·WEB开发——ASP.NET和PHP、JSP究竟学哪个
 ·五步带你入门XML
 ·关于Java框架技术专题
 ·XML全攻略技术专题
 ·JAVA开源技术介绍专题
 ·Java嵌入式开发之J2ME技术专题
 ·超前体验 Oracle 11g的5个新特性…
 ·揭密使用VB.NET的五个实用技巧
 今日更新
 社区讨论
 博客论点
 频道精选
 Oracle频道相关导航