oracle direct-load,sqlldr direct方式导致索引失效实测
目的:验证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方式导致索引失效实测相关推荐
- mysql left join 索引失效_MySQL索引列上做操作导致索引失效案例分析
索引列上做操作导致索引失效 通常我们认为只要建立索引就可以万事大吉,以为只要建立就一定会使用到,可其实在索引列上的计算.函数.类型转换都可能导致索引失效,所以我们不仅要会创建索引,更重要的是如何正确的 ...
- 【数据库】13种会导致索引失效语句写法
数据库的索引是保证数据快速查询的重中之重,以下13种会导致索引失效语句会导致你的SQL查询索引失效,具体如下: 1.使用like关键字模糊查询时,% 放在前面索引不起作用,只有"%" ...
- 索引法则--LIKE以%开头会导致索引失效进而转向全表扫描(使用覆盖索引解决)...
Mysql 系列文章主页 =============== 1 准备数据 1.1 建表 DROP TABLE IF EXISTS staff; CREATE TABLE IF NOT EXISTS st ...
- 索引法则--字符串不加单引号会导致索引失效
Mysql 系列文章主页 =============== 1 准备数据 1.1 建表 DROP TABLE IF EXISTS staff; CREATE TABLE IF NOT EXISTS st ...
- or导致索引失效的解决方法_SQL优化之索引失效
尽量全值匹配 建表语句: CREATE TABLE `t_logs` ( `id` int(10) NOT NULL AUTO_INCREMENT, `action` varchar(100) DEF ...
- MySQL 字符集不一致导致索引失效的一个真实案例
文章目录 问题描述 问题分析 总结 大家好,我是只谈技术不剪发的 Tony 老师.今天给大家分析一个由于 MySQL 字符集不一致导致索引失效的案例. 问题描述 有个朋友给我发来一个问题,说是他们的系 ...
- Oracle 删除分区 导致索引失效
创建分区时如果创建了全局索引,删除时必须更新索引. 多分区查询,全局索引效率高点,如果针对于某分区查询,local 索引 效率会好点. --删除一个分区 : 一:常规写法 ...
- or导致索引失效的解决方法_索引失效原因总结
索引为什么会失效?总的来说有两大点: 第一,完全失效,即该表的索引不可用.原因:当某些操作导致数据的rowid改变, 索引就会完全失效. 那什么时候会导致rowid改变使得索引unuseable或者i ...
- MySql中当in或or参数过多时导致索引失效
今天的文章很短只讲一件事情,但发现很多同学还不知道,以至于引发一些数据库使用层面的慢查询.访问超时问题. mysql有个阈值,决定了阈值之下使用索引查询,而超过阈值则退化,优化器选择索引下潜,进而引起 ...
最新文章
- GitHub最最最火的开源爬虫工具箱,一爬就取
- flash读取程序 msp430_MSP430读写擦除FLASH程序
- php 上传文件漏洞,【文件上传】PHP文件上传漏洞
- 分支-08. 高速公路超速处罚
- 不显示参数名_第51p,万能参数与返回值,Python中函数的返回值
- sublime Text3安装插件
- RabbitMQ核心概念和AMQP协议(二)
- Mysql数据库设计规范之四数据库操作行为规范
- EFM (Explicit Factor Models)显因子模型
- Hart 常用命令 命令格式+命令含义 中文翻译
- 【pyqt5学习】——日历控件calendarWidget设置单元格格式(前景、背景)、日历控件属性编辑
- SpringBoot-引入jackson-dataformat-xml之后,本返回json的接口返回xml
- PPT开场,吸引人的几点技巧
- 使用itext到处PDF,使用PDF模板导出PDF文件
- 使用HTML制作网页
- Google Draco 源码解析
- 微软宣布IE进入死亡倒计时 回顾IE传奇的一生
- 抖音seo源码.源代码开发可二开搭建/抖音seo优化系统代开发
- 【简介】流程化项目管理咨询师刘俊平介绍
- [转]emacs自动备份
热门文章
- 计算机考试的知识要记忆背,2019年3月计算机等级考试这样复习才更有效率
- python 排产计划_生产排程计划表
- 怎样用Netfilter/IPtables控制P2P流量
- 20-《电子入门趣谈》第四章_自己制作电路板-4.1面包板的介绍和经典案例使用教程
- 【项目预估】PERT(计划评审技术)
- 3D打印机的优势到底在哪
- zlib 1.2.9 not found
- 【大数据计算】(四) Spark的安装和基础编程
- python是由哪个人创造的文字_秦朝的文字是什么样的?是由谁创造出来的?
- 《波西亚时光》为配音员未付薪金提供补偿