目的:验证sqlload的direct方式绕过唯一索引,可能引发索引unusable。

SQL> select * from v$version;

BANNER

--------------------------------------------------------------------------------

Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit

Production

PL/SQL Release 11.2.0.1.0 - Production

CORE 11.2.0.1.0 Production

TNS for Linux: Version 11.2.0.1.0 - Production

NLSRTL Version 11.2.0.1.0 - Production

SQL> CREATE TABLE T_NOPARTITION

2 ( "ID" NUMBER(10,0) CONSTRAINT id_pk PRIMARY

KEY,

3 "CREATED" DATE

4 )

5 TABLESPACE

"USERS"

6 ;

Table created

SQL> select

owner,CONSTRAINT_NAME,TABLE_NAME,STATUS,VALIDATED,INDEX_NAME from

USER_CONSTRAINTS where table_name='T_NOPARTITION';

OWNER CONSTRAINT_NAME TABLE_NAME STATUS VALIDATED INDEX_NAME

------------ ------------------ ------------------- --------

------------- ----------

xxxxxx ID_PK T_NOPARTITION ENABLED VALIDATED ID_PK

SQL> select status from user_indexes a where

a.index_name='ID_PK';

STATUS

--------

VALID

说明:新建表,目前主键、索引状态都是正常的。

oracle@linux-119:~> cat

a.ctl

load data

infile '/home/oracle/a.txt'

append into table t_nopartition

fields terminated by '|'

(id,created)

oracle@linux-119:~> cat

a.txt

1|2013.01.01

2|2013.02.02

3|2013.03.03

oracle@linux-119:~>

sqlldr userid='xxxx/*****' control=a.ctl direct=true

SQL*Loader: Release 11.2.0.1.0 - Production on Wed Aug 14 12:06:36

2013

Copyright (c) 1982, 2009, Oracle and/or its

affiliates. All rights reserved.

Load completed - logical record count 3.

SQL> select * from t_nopartition;

ID CREATED

----------- -----------

1 2013/1/1 星期

2 2013/2/2 星期

3 2013/3/3 星期

SQL> select

owner,CONSTRAINT_NAME,TABLE_NAME,STATUS,VALIDATED,INDEX_NAME from

USER_CONSTRAINTS where table_name='T_NOPARTITION';

OWNER CONSTRAINT_NAME TABLE_NAME STATUS VALIDATED INDEX_NAME

------------ ------------------ --------------- --------

------------- ----------

xxxxxx ID_PK T_NOPARTITION ENABLED VALIDATED ID_PK

SQL> select status from user_indexes a where

a.index_name='ID_PK';

STATUS

--------

VALID

说明:导入数据,数据并不违反约束,因此主键、索引状态均为正常。

oracle@linux-119:~>

sqlldr userid='xxxxxx/******' control=a.ctl direct=true

SQL*Loader: Release 11.2.0.1.0 - Production on Wed Aug 14 12:08:47

2013

Copyright (c) 1982, 2009, Oracle and/or its

affiliates. All rights reserved.

Load completed - logical record count 3.

SQL> select * from t_nopartition;

ID CREATED

----------- -----------

1 2013/1/1 星期

2 2013/2/2 星期

3 2013/3/3 星期

1 2013/1/1 星期

2 2013/2/2 星期

3 2013/3/3 星期

SQL> select

owner,CONSTRAINT_NAME,TABLE_NAME,STATUS,VALIDATED,INDEX_NAME from

USER_CONSTRAINTS where table_name='T_NOPARTITION';

OWNER CONSTRAINT_NAME TABLE_NAME STATUS VALIDATED INDEX_NAME

------------ ------------------ ------------------------------

-------- ------------- ----------

xxxxxx ID_PK T_NOPARTITION ENABLED VALIDATED ID_PK

SQL> select status from user_indexes a where

a.index_name='ID_PK';

STATUS

--------

UNUSABLE

说明:direct方式可以导入违反约束的数据,只是导入后,索引的状态变为unusable,但主键状态依然是正常的。

oracle@linux-119:~> sqlldr

userid='xxxxxx/******' control=a.ctl direct=true

SQL*Loader: Release 11.2.0.1.0 - Production on Wed Aug 14

12:10:05 2013

Copyright (c) 1982, 2009, Oracle and/or its

affiliates. All rights reserved.

ORA-26026: unique index xxxxxx.ID_PK initially in unusable

state

SQL*Loader-2026: the load was aborted because SQL Loader cannot

continue.

Load completed - logical record count 3.

说明:此时再direct方式导入,报索引状态不对,不能正常导入。

说明:direct方式加载数据还是要检查索引状态的(好像之前的说法是direct方式先设置索引状态为unusable),这个后续需要再验证一下。

SQL> insert into t_nopartition(id,created)

values(100,to_date('2013.03.03','YYYY.MM.DD'));

insert into t_nopartition(id,created)

values(100,to_date('2013.03.03','YYYY.MM.DD'))

ORA-01502: 索引 'xxxxxx.ID_PK' 或这类索引的分区处于不可用状态

说明:因为插入数据需要维护索引,目前索引状态不可用,因此正常插入数据也不可行。

oracle direct-load,sqlldr direct方式导致索引失效实测相关推荐

  1. mysql left join 索引失效_MySQL索引列上做操作导致索引失效案例分析

    索引列上做操作导致索引失效 通常我们认为只要建立索引就可以万事大吉,以为只要建立就一定会使用到,可其实在索引列上的计算.函数.类型转换都可能导致索引失效,所以我们不仅要会创建索引,更重要的是如何正确的 ...

  2. 【数据库】13种会导致索引失效语句写法

    数据库的索引是保证数据快速查询的重中之重,以下13种会导致索引失效语句会导致你的SQL查询索引失效,具体如下: 1.使用like关键字模糊查询时,% 放在前面索引不起作用,只有"%" ...

  3. 索引法则--LIKE以%开头会导致索引失效进而转向全表扫描(使用覆盖索引解决)...

    Mysql 系列文章主页 =============== 1 准备数据 1.1 建表 DROP TABLE IF EXISTS staff; CREATE TABLE IF NOT EXISTS st ...

  4. 索引法则--字符串不加单引号会导致索引失效

    Mysql 系列文章主页 =============== 1 准备数据 1.1 建表 DROP TABLE IF EXISTS staff; CREATE TABLE IF NOT EXISTS st ...

  5. or导致索引失效的解决方法_SQL优化之索引失效

    尽量全值匹配 建表语句: CREATE TABLE `t_logs` ( `id` int(10) NOT NULL AUTO_INCREMENT, `action` varchar(100) DEF ...

  6. MySQL 字符集不一致导致索引失效的一个真实案例

    文章目录 问题描述 问题分析 总结 大家好,我是只谈技术不剪发的 Tony 老师.今天给大家分析一个由于 MySQL 字符集不一致导致索引失效的案例. 问题描述 有个朋友给我发来一个问题,说是他们的系 ...

  7. Oracle 删除分区 导致索引失效

    创建分区时如果创建了全局索引,删除时必须更新索引. 多分区查询,全局索引效率高点,如果针对于某分区查询,local 索引 效率会好点. --删除一个分区 :         一:常规写法        ...

  8. or导致索引失效的解决方法_索引失效原因总结

    索引为什么会失效?总的来说有两大点: 第一,完全失效,即该表的索引不可用.原因:当某些操作导致数据的rowid改变, 索引就会完全失效. 那什么时候会导致rowid改变使得索引unuseable或者i ...

  9. MySql中当in或or参数过多时导致索引失效

    今天的文章很短只讲一件事情,但发现很多同学还不知道,以至于引发一些数据库使用层面的慢查询.访问超时问题. mysql有个阈值,决定了阈值之下使用索引查询,而超过阈值则退化,优化器选择索引下潜,进而引起 ...

最新文章

  1. GitHub最最最火的开源爬虫工具箱,一爬就取
  2. flash读取程序 msp430_MSP430读写擦除FLASH程序
  3. php 上传文件漏洞,【文件上传】PHP文件上传漏洞
  4. 分支-08. 高速公路超速处罚
  5. 不显示参数名_第51p,万能参数与返回值,Python中函数的返回值
  6. sublime Text3安装插件
  7. RabbitMQ核心概念和AMQP协议(二)
  8. Mysql数据库设计规范之四数据库操作行为规范
  9. EFM (Explicit Factor Models)显因子模型
  10. Hart 常用命令 命令格式+命令含义 中文翻译
  11. 【pyqt5学习】——日历控件calendarWidget设置单元格格式(前景、背景)、日历控件属性编辑
  12. SpringBoot-引入jackson-dataformat-xml之后,本返回json的接口返回xml
  13. PPT开场,吸引人的几点技巧
  14. 使用itext到处PDF,使用PDF模板导出PDF文件
  15. 使用HTML制作网页
  16. Google Draco 源码解析
  17. 微软宣布IE进入死亡倒计时 回顾IE传奇的一生
  18. 抖音seo源码.源代码开发可二开搭建/抖音seo优化系统代开发
  19. 【简介】流程化项目管理咨询师刘俊平介绍
  20. [转]emacs自动备份

热门文章

  1. 计算机考试的知识要记忆背,2019年3月计算机等级考试这样复习才更有效率
  2. python 排产计划_生产排程计划表
  3. 怎样用Netfilter/IPtables控制P2P流量
  4. 20-《电子入门趣谈》第四章_自己制作电路板-4.1面包板的介绍和经典案例使用教程
  5. 【项目预估】PERT(计划评审技术)
  6. 3D打印机的优势到底在哪
  7. zlib 1.2.9 not found
  8. 【大数据计算】(四) Spark的安装和基础编程
  9. python是由哪个人创造的文字_秦朝的文字是什么样的?是由谁创造出来的?
  10. 《波西亚时光》为配音员未付薪金提供补偿