温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

使用Oracle Nologging+Append注意事项是什么

发布时间:2021-11-04 11:02:32 来源:亿速云 阅读:217 作者:iii 栏目:关系型数据库

本篇内容介绍了“使用Oracle Nologging+Append注意事项是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

查看创建的表是否为nologging  user_tables.logging字段。

  如果直接加载的表上有索引,Oracle不会像加载数据的方式那样来处理索引的数据,但是它同样需要维护一个索引,这个成本很高,同时会生成很多的redo。

  所以当使用直接加载时,通常是针对一些数据量非常大的表。如果这些表存在索引,将会带来很大的性能影响,这时可以考虑先将索引disable或者drop掉,等加载数据后,之后在重新建立索引。 

创建索引指定nologging:

create index idx_object_id on idx_test(object_id) nologging;

使用insert append的缺点在于仅会向高水位线之上的块进行插入,会忽略高水位线下的空闲块,所以append会提高高水位线。

insert append时在表上加“6”类型的Exclusive锁,即排它锁,为表级锁,会阻塞表上的所有DML语句。因此在有业务运行的上传环境下要慎重使用。

测试:

SYS@prod>insert /*+APPEND*/ into test select * from test;

在其他会话查看锁定对象情况:

SYS@prod>select object_id,session_id,locked_mode from v$locked_object;

 OBJECT_ID SESSION_ID LOCKED_MODE

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

     88905   125  6

 有关Append的其他错误:

ORA-12938错误
如果直接路径加载的事务未提交或回滚,则同一个会话无法访问被修改的表(报ORA-12838: cannot read/modify an object after modifying it in parallel),非同一个会话可以访问。 

SYS@prod>insert /*+APPEND*/ into test select * from test;

5566720 rows created.

SYS@prod>select count(*) from test;

select count(*) from test

*

ERROR at line 1:

ORA-12838: cannot read/modify an object after modifying it in parallel

“使用Oracle Nologging+Append注意事项是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI