oracle nologging使用总结

2024年 1月 3日 22.5k 0

一、oracle对logging与nologging的控制。

Oracle在4个级别 提供对操作是否记录redo日志进行控制

 

  1. 数据库级别

  Force_logging, 数据库级别开启force logging ,将忽略一切nologging的操作,即使显示加上nologging也不起作用。所以搭建物理standby时,一定要将force logging开启。

 

开启关闭语句

Alter database force logging;

Alter database no force logging;

 

  1. 表空间级别

Force_logging属性 , 表空间是否开启强制记日志,如果开启,表空间上所属对象上的操作都会记日志到redo log ,忽略一切nologging操作。

 

Logging/nologging属性,为表空间上的对象提供logging属性的默认值,如果创建对象时不显示指定是logging还是nologging,则取表空间的logging属性。

开启关闭语句

Alter tablespace users force logging;

Alter tablespace users no force logging;

 

Alter tablespace users logging;

Alter tablespace users nologging;

 

查询表空间的日志记录属性

Select tablespace_name,force_logging,logging from dba_tablespaces where tablespace_name=’USERS’;

 

  1. 对象级别

Logging属性取值为yes或no,对该对象的更改是否记录日志。

查询对象的logging属性

Select logging from dba_tables where table_name=’T’;

对象的logging开启与关闭

Alter table t logging;

Alter table t nologging;

 

  1. 语句级别

指定该sql语句是否记录日志,默认依赖对象的logging属性。

Insert into t nologging select object_id,object_name from dba_objects;

 

二、nologging的好处与影响

好处:

(1)可以大大减少插入大型表的时间

(2)提高并行创建大型表或索引的性能

(3)减少日志生成量,节省磁盘空间

 

影响:

(1) 无法从重做日志中恢复更改,带来数据丢失的风险

(2) 对于物理standby,数据库一旦应用了无效的重做日志,所有相应的数据块将标记为逻辑坏块,查询引用时将报错。

(3) 对于逻辑standby,SQL apply会忽略无效的重做日志,因为它无法将其转换为有效的sql,逻辑standby也不会立即收到任何错误,只是在查询引用丢失的数据时报错。

 

实验:

数据库表空间对象的logging属性都设为no

把数据库的force logging设为no,表空间的force logging设为no,logging设为nologging,对象的logging属性设为nologging

在这个基础上,sql语句显示加nologging 并不是都不记录日志。

 

Insert into .... values 不管是否加hint /*+append*/, 始终会记录redo log

 

以下语句可以调用nologging, 使nologging生效

(1) Insert /*+append*/ select .....

(2) CTAS , nologging模式下只记录建表的日志

(3) Create index....

(4) Alter index ... rebuild

(5) Alter table ....move ...

(6) Sqlloader, datapump加载数据

 

三,如何防止nologging带来的风险

  1. 对于有standby的数据库,一定要开启数据库级别的force logging
  2. 对于核心的生产数据库,为了避免数据丢失的风险,一定要开启force logging
  3. 重要程度不高的数据库上可以考虑使用nologging,临时性批量操作可以考虑使用nologging,或在nologging操作之后及时做一次全备。

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论