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”获取的建索引脚本如下:

createindexT_SMS_IDMONTHDAYonT_SMS(MONTHDAY)
tablespaceSMS_DAT
pctfree10
initrans2
maxtrans255
storage
(
initial64K
minextents1
maxextentsunlimited
);

(3)分析:

可见,建索引时无论不加local关键字还是加global关键字再利用PL/SQL Developer工具导出的脚本都变为了全局索引,同时多了些存储相关的选项。

2.3 分别利用PL/SQL Developer 工具的“Oracle Export”、“SQL Insert”、“PL/SQL Developer”三种方式导出

通过导出后再导入的方式来验证,只有“Oracle Export”方式导出再导入后,表结构和索引结构没有发生变化,另两种方式都改变了索引类型。

时间: 2025-01-30 13:57:45

PL/SQL Developer导出分区索引脚本的相关文章

PL/SQL Developer导入导出数据库方法及说明

PL/SQL Developer是Oracle数据库中用于导入或导出数据库的主要工具,本文主要介绍了利用PL/SQL Developer导入和导出数据库的过程,并对导入或导出时的一些注意事项进行了说明,接下来我们就一一介绍. 一.导出步骤1 tools ->export user object 选择选项,导出.sql文件 2 tools ->export tables-> Oracle Export 选择选项导出.dmp文件   二.导入步骤导入之前最好把以前的表删除,当然导入另外数据库

解析PL/SQL Developer导入导出数据库的方法以及说明_oracle

PL/SQL Developer是Oracle数据库中用于导入或导出数据库的主要工具,本文主要介绍了利用PL/SQL Developer导入和导出数据库的过程,并对导入或导出时的一些注意事项进行了说明,接下来我们就一一介绍. 导出步骤:    1 tools ->export user object 选择选项,导出.sql文件.    2 tools ->export tables-> Oracle Export 选择选项导出.dmp文件.导入步骤:    注:导入之前最好把以前的表删除

设置PL/SQL Developer的方法

PL/SQL Beautifier(PL/SQL 美化器) PLD 6以上版本有对DML代码格式化的功能.在SQL Window或Program Window中选中部分代码(如果 不选则对整个窗口的代码操作),在菜单中选Edit -> PL/SQL Beautifier,得到格式化的代码. 对于非法的DML语句或DDL语句,PLD将会在下方状态栏提示PL/SQL Beautifier could not parse text .在缺省的状态下,PLD会把DML语句的每一个字段都排在单独的一行,这

PL/SQL DEVELOPER 6会话管理(原创)

原创 PL/SQL DEVELOPER 6会话管理   PL/SQL DEVELOPER 6的会话管理功能非常出色,几可以完成所有常用的会话管理功能,主要功能有: 查询会话列表信息 结束会话 会话跟踪 导出会话信息 查询会话具体的详细信息 会话当前打开的游标 会话当前正在执行的SQL 会话所有的统计信息 会话当前锁定的对象 还可以根据个人要求定制查询与会话相关的信息   下面我将全面介绍PL/SQL DEVELOPER 6会话管理功能: 打开Tools/Sessions菜单,会话窗口显示如下:

PL/SQL DEVELOPER 6对象比较功能说明(原创)

比较|对象|原创 PL/SQL DEVELOPER 6对象比较功能说明(原创)   PL/SQL DEVELOPER 6的对象比较功能非常强大与实用,对于开发人员来说是一个必备的工具,主要有以下用途: 检查两个不同数据库间某个用户下所有对象的不同信息 自动生成用来匹配的SQL脚本 常用于开发数据库与生成数据库对比或者新版数据库与旧数据库   下面我将全面介绍PL/SQL DEVELOPER 6对象比较功能的操作步骤: 1.打开窗口 打开Tools/Compare User Objects-菜单,

PL/SQL DEVELOPER中查询结果复制出来中文乱码如何解决

PL/SQL DEVELOPER中查询结果导出到EXCEL时中文显示正常,但直接复制出来中文显示为乱码,如何? 解决方案:切换到中文输入法状态,再复制,即可. 本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/database/Oracle/

PL/SQL Developer过期的两种解决方法

方法一: 1.首先,登陆PL/SQL Developer,PL/SQL Developer要到期了 2.输入指令"regedit"打开注册表,如图所示 3.然后,在注册表里按HKEY_CURRENT_USER\Software\Allround Automations 这个路径找到"Allround Automations ",然后删除它. 4.删除上一步中的后,在找到HKEY_CURRENT_USER\Software\Microsoft\Security,删除&

PL/SQL DEVELOPER 使用的一些技巧_MsSql

1,登录后默认自动选中My Objects 默认情况下,PLSQL Developer登录后,Brower里会选择All objects,如果你登录的用户是dba,要展开tables目录,正常情况都需要Wait几秒钟,而选择My Objects后响应速率则是以毫秒计算的. Tools菜单 --> Object Brower Filters,会打开Brower Folders的定单窗口,把"My Objects"设为默认即可. Tools菜单--> Object Brower

PL/SQL developer export/import (转)

export/import图标为灰色:原因:相关应用程序没有关联菜单栏 --> Tools --> Import Tables... --> Oracle Import Export Executable  :   %ORACLE_HOME%\bin\imp.exe Output File : C:\Documents and Settings\Administrator\桌面\eam.dmp     PL/SQL Developer是Oracle数据库中用于导入或导出数据库的主要工具,