如果我没有在Oracle中的数据库对象中指定记录/记录,会发生什么?我的意思是说如何在数据库对象中记录日志/不记录/不记录数据库对象中的/ nologging?在Oracle中记录/记录选项的目的是什么
回答
如果您有带有nologging的表/索引,则当使用直接路径方法(如insert/* + append * /)将数据插入对象时,不会生成重做。
但是,如果数据库处于强制日志模式,那么nologging不会有任何影响。生成重做是否表/索引处于日志记录模式或记录模式。
如果设置了nologging
选项,插入数据时不会生成重做日志。插入大量数据时,可以使用它来显着提高INSERT语句的性能。
在数据保护设置下,千万小心千万不要使用nologging
选项。数据库复制依赖于redolog,所以它会创建一个很大的混乱,你当然想避免。
LOGGING/NOLOGGING帮助管理启用直接路径写入,以减少REDO和UNDO的产生。这是控制可恢复性和性能之间微妙平衡的几种方法之一。
Oracle体系结构的背景信息
REDO是甲骨文如何ACID提供了耐用性,在 “d”。当提交事务时,更改不一定存储在数据文件中。这可以让事情保持快速并让后台进程处理一些工作。重做是对变化的描述。它在多个磁盘上快速存储在“哑”日志中。更改速度很快,如果服务器在提交返回后一微秒失去电源,Oracle可以通过REDO日志来确保更改不会丢失。
UNDO帮助Oracle提供一致性,即A中的“C”。它存储了如何反转更改的说明。另一个正在读取表的进程需要该信息,并且需要知道使用的值是否处于较早的时间点。
直接路径写入跳过REDO,UNDO,缓存等一些功能,并直接修改数据文件。在许多环境中这是一个快速但潜在危险的选择,这就是为什么有太多令人困惑的选项来控制它。直接路径写入仅适用于INSERTS,并且仅适用于下面描述的情况。
如果您什么都不做,默认选项是最安全的LOGGING。
许多方法来控制直接路径写入
记录/ NOLOGGING是几个选项之一,以控制直接路径写入。看看这个表从AskTom了解不同的选项全部如何协同工作:
Table Mode Insert Mode ArchiveLog mode result
----------- ------------- ----------------- ----------
LOGGING APPEND ARCHIVE LOG redo generated
NOLOGGING APPEND ARCHIVE LOG no redo
LOGGING no append ARCHIVE LOG redo generated
NOLOGGING no append ARCHIVE LOG redo generated
LOGGING APPEND noarchive log mode no redo
NOLOGGING APPEND noarchive log mode no redo
LOGGING no append noarchive log mode redo generated
NOLOGGING no append noarchive log mode redo generated
FORCE LOGGING可以覆盖所有的这些设置。可能还有一些我不知道的其他开关。当然,还有很多限制可以阻止直接路径 - 触发器,外键,集群,索引组织表等等。
规则对索引的限制性更大。索引总是在DML语句中生成REDO。只有DDL语句(如NOLOGGING索引中的CREATE INDEX ... NOLOGGING
或ALTER INDEX ... REBUILD
)不会生成REDO。
为什么有这么多的方式?由于可恢复性非常重要,不同的角色可能会对此问题有不同的看法。有时候有些人的决定需要压倒他人。
开发人员决定在语句级别“插入模式”。许多奇怪的事情可能会在/*+ APPEND */
暗示中发生,开发人员需要仔细选择何时使用它。
建筑师决定在对象层面,“表模式”。不管开发人员想要插入多少表格,都必须始终可恢复。
数据库管理员决定在数据库或表空间模式,“归档日志”和FORCE LOGGING。也许组织不关心恢复特定数据库,因此将其设置为NOARCHIVELOG模式。或者,也许组织有一条严格的规则,即一切都必须可恢复,因此将表空间设置为FORCE LOGGING。
- 1. 在oracle中记录plsql表中记录的新记录
- 2. 每周记录的记录数 - Oracle SQL
- 3. 记录cakephp项目
- 4. 什么是CRM中的记录?
- 5. 什么是Java中的“记录器”?
- 6. 什么是log4php禁用日志记录的cofigure选项?
- 7. 什么是“切换记录”?
- 8. 什么是有效记录?
- 9. 复制oracle中的记录
- 10. oracle中记录的顺序
- 11. 为什么nlog记录到我的ASP.NET项目中的文件?
- 12. 什么可能导致记录模块多次记录记录?
- 13. 在Memcached中更新记录时删除记录的优点是什么?
- 14. 什么是从Oracle函数返回记录的标准方式?
- 15. 记录集中的第一条记录为空。为什么?
- 16. Oracle选择最近的日期记录
- 17. 如何从oracle中已有记录的表中找到记录?
- 18. 什么是最好的日志记录
- 19. 什么是记录最好的方法?
- 20. 什么是记录最好的IFormatProvider?
- 21. Oracle在值后选择最大记录
- 22. 本月在Oracle选择记录
- 23. 记录元表中的项目数量?
- 24. pip中“找不到.egg-info目录中的安装记录”是什么意思?
- 25. 递归记录oracle
- 26. 如何比较Oracle中的记录集或记录组?
- 27. 在Oracle中未记录的表格
- 28. 在oracle中获取的记录数
- 29. node-gyp的[选项]在哪里记录?
- 30. 在各自的父记录中选择子记录的总数
感谢所有人,Jon Heller只是一个问题;你已经提到过,在图表下方“NOLOGGING选项只对重建期间的索引有帮助。”这是什么意思?我不明白,我真的很感谢你的支持 – Sohel