Oracle create index online

1.1     create index

  1. 如果目标表有DML操作,并且没有提交,此时创建索引报错

ORA-00054: resource busy and acquire with NOWAIT specifiedor timeout expired;

  1. 如果目标表上正在建立索引(create index),此时DML操作会被阻塞;

总结:直接create index必须确定目标表没有DML操作,或者停业务情况下建立索引。

1.2     create index online

  1. 如果目标表有DML操作,并且没有提交,此时使用online会等待提交后再建立索引;
  2. 如果目标表上正在建立索引(create index online),此后DML操作会不会被阻塞,但是没有提交的话会一直阻塞建立索引,待DML提交后继续创建索引;

总结:如果目标库正在频繁入库,可考虑使用online建立。

实际上,伴随着资源的争用,就是lock的产生,有兴趣的朋友的可以研究lock的兼容矩阵。

时间: 2025-01-05 01:39:10

Oracle create index online的相关文章

Oracle create index on (colname,0)的意义

今天看到一个索引,create index index_name tableanme(colname,0),很奇怪,以前没见过.经过测试发现就是一个相对于联合索引的东西,没有任何意义,就是建错了. SQL> select * from v$version; BANNER -------------------------------------------------------------------------------- Oracle Database 11g Enterprise Ed

sql 高级 (五)(create index(创建索引) drop)

SQL create index 语句 create  index语句用于在表中创建索引. 在不读取整个表的情况下,索引使数据库应用程序可以更快地查找数据. 用户无法看到索引,它们只能被用来加速搜索/查询. 更新一个包含索引的表需要比更新一个没有索引的表更多的时间,这是由于索引本身也需要更新. 理想的做法是仅仅在常常被搜索的列(以及表)上面创建索引. 允许使用重复的值: create index  index_name ON table_name (column_name) SQL create

Oracle(创建index)

概念: 1. 类似书的目录结构 2. Oracle 的“索引”对象,与表关联的可选对象,提高SQL查询语句的速度 3. 索引直接指向包含所查询值的行的位置,减少磁盘I/O 4. 与所索引的表是相互独立的物理结构 5. Oracle 自动使用并维护索引,插入.删除.更新表后,自动更新索引 创建: 1.自动创建 当在表中指定了primary Key或者unique约束时会自动创建唯一值索引. 2.用户创建. 用户可以创建非唯一值所在以提高在访问行时的效率. 语法: CREATE INDEX inde

Oracle alter index rebuild 与 ORA-08104 说明

一. 官网说明 在MOS 上的一篇文章讲到了rebuild online 和offline的区别: Index Rebuild Is Hanging Or Taking Too Long [ID 272762.1] Symptoms:=========       Performance  issues while rebuilding very large indexes. The offline rebuilds of  their index is relatively quick -fi

ORA-01502 oracle数据库 index索引的两种形式

目前的项目中,我们在跑批次的时候,有个SP总是报错 "ORA-01502: index 'WBILL_102.PK_A_NOTWEB_ACT_PROVINCE_M' or partition of such index is in unusable state" ,解决办法就是重建索引,ALTER INDEX IN_AA REBUILD; 但是解决完之后,在跑批还是报这个错误,这就让我需要考虑,产生这个问题的原因是什么! 我的错误场景还原: 有个表 CUS_ASSET_MONTH,主键

Oracle 索引 index

索引是一个模式对象,其中包含每个值的条目,该条目出现在表或集群的索引列中,并提供对行的直接快速访问. 创建一个索引:  create index 索引名 on 表名 (字段名); 删除索引:  drop index 索引名 建立索引的目的就是为了加快查询速度,建立索引后会使DML操作效率慢,但是对用户查询会提高效率.删除一个表时,相对应的索引也会删除.另外,索引是会进行排序. 创建索引就是为了减少物理读,索引会减少扫描的时间.在经常要用到where的子句的字段,应该使用索引,另外还要看所查询的数

Oracle alter index disable/unusable的区别

alter index index_name disable,enable针对函数索引. SQL> create table test as select * from all_objects; SQL> create index ind_t_object_id on test(object_id) nologging; SQL> exec dbms_stats.gather_table_stats(user,'test',cascade => true); SQL> set

SQL CREATE INDEX 语句

CREATE INDEX 语句用于在表中创建索引. 在不读取整个表的情况下,索引使数据库应用程序可以更快地查找数据. 索引 您可以在表中创建索引,以便更加快速高效地查询数据. 用户无法看到索引,它们只能被用来加速搜索/查询. 注释:更新一个包含索引的表需要比更新一个没有索引的表更多的时间,这是由于索引本身也需要更新.因此,理想的做法是仅仅在常常被搜索的列(以及表)上面创建索引. SQL CREATE INDEX 语法 在表上创建一个简单的索引.允许使用重复的值: 1 CREATE INDEX i

CREATE INDEX 语句用于在表中创建索引

CREATE INDEX 语句用于在表中创建索引. 在不读取整个表的情况下,索引使数据库应用程序可以更快地查找数据. 索引 您可以在表中创建索引,以便更加快速高效地查询数据. 用户无法看到索引,它们只能被用来加速搜索/查询. 注释:更新一个包含索引的表需要比更新一个没有索引的表更多的时间,这是由于索引本身也需要更新.因此,理想的做法是仅仅在常常被搜索的列(以及表)上面创建索引. SQL CREATE INDEX 语法 在表上创建一个简单的索引.允许使用重复的值: CREATE INDEX ind