数据库复制对nologging操作的处理

简介: 当DML操作以NOLOGGING方式执行时,或者SQLLoader以UNRECOVERABLE方式进行直接路径加载时,会禁止生成重做日志或者只会生成很少的日志信息,这些可以加快这些操作的速度。

nologging操作的介绍

当DML操作以NOLOGGING方式执行时,或者SQLLoader以UNRECOVERABLE方式进行直接路径加载时,会禁止生成重做日志或者只会生成很少的日志信息,这些可以加快这些操作的速度。但在这些情况下,由于重做日志中缺乏记录,DML修改不会被捕获。如果这些联机重做日志或归档日志被用来恢复数据文件,那么Oracle会将对应的数据块标志为无效(Soft Corrupt),而且下一次访问这些数据块时,会报ORA-01578和ORA-26040错误。为了保证正确记录表修改日志,可以在表空间级别或数据库级别设置FORCE LOGGING。一旦设置,Oracle就可以自动为所有的NOLOGGING操作和UNRECOVERABLE操作生成重做日志信息。

查询当前数据的FORCE LOGGING状态:

SQL> select force_logging from v$database;
FORCE_LOGGING
--------------------------------------------------------------------------------
NO


在主库上执行一个nologging的操作

归档数据库中的不可恢复操作(无重做日志),需要及时发现,及时备份,避免介质恢复时产生逻辑坏块。

执行一个nologging操作

SQL> create table t nologging  as select object_id,object_name from dba_objects where rownum<=10;
Table created.
SQL> 
set linesize 200
col name form a50
 select name,unrecoverable_change#,to_char(unrecoverable_time-1,'yyyy/MM/dd hh24:mi:dd') unrecoverable_time from v$datafile;
SQL> SQL> SQL> 
NAME         UNRECOVERABLE_CHANGE# UNRECOVERABLE_TIME
-------------------------------------------------- --------------------- -------------------
+DATA/orcl/datafile/system.256.1028903219          0
+DATA/orcl/datafile/sysaux.257.1028903219          0
+DATA/orcl/datafile/undotbs1.258.1028903219          0
+DATA/orcl/datafile/users.259.1028903219          0
+DATA/orcl/datafile/example.269.1028903297    4534712 2020/05/11 15:59:11


使用v$datafile.unrecoverable_change#查看不可恢复操作scn;如果数据库为非归档模式,该列不更新。


在从库上查询nologging的对象

SQL>  select * from t;
 select * from t
               *
ERROR at line 1:
ORA-01578: ORACLE data block corrupted (file # 1, block # 91041)
ORA-01110: data file 1: '/u01/app/oracle/oradata/orcl/system01.dbf'
ORA-26040: Data block was loaded using the NOLOGGING option


检查坏块

RMAN>  backup validate tablespace system;
Starting backup at 13-MAY-20
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=134 device type=DISK
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00001 name=/u01/app/oracle/oradata/orcl/system01.dbf
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:03
List of Datafiles
=================
File Status Marked Corrupt Empty Blocks Blocks Examined High SCN
---- ------ -------------- ------------ --------------- ----------
1    OK     1              14838        94721           988324    
  File Name: /u01/app/oracle/oradata/orcl/system01.dbf
  Block Type Blocks Failing Blocks Processed
  ---------- -------------- ----------------
  Data       0              63193           
  Index      0              13038           
  Other      0              3651            
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
including current control file in backup set
including current SPFILE in backup set
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
List of Control File and SPFILE
===============================
File Type    Status Blocks Failing Blocks Examined
------------ ------ -------------- ---------------
SPFILE       OK     0              2               
Control File OK     0              594             
Finished backup at 13-MAY-20
[oracle@oracle11g-2 ~]$ dbv file=/u01/app/oracle/oradata/orcl/system01.dbf
DBVERIFY: Release 11.2.0.4.0 - Production on Wed May 13 11:10:39 2020
Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.
DBVERIFY - Verification starting : FILE = /u01/app/oracle/oradata/orcl/system01.dbf
DBV-00201: Block, DBA 4285345, marked corrupt for invalid redo application
DBVERIFY - Verification complete
Total Pages Examined         : 94720
Total Pages Processed (Data) : 63193
Total Pages Failing   (Data) : 0
Total Pages Processed (Index): 13038
Total Pages Failing   (Index): 0
Total Pages Processed (Other): 3651
Total Pages Processed (Seg)  : 1
Total Pages Failing   (Seg)  : 0
Total Pages Empty            : 14838
Total Pages Marked Corrupt   : 1
Total Pages Influx           : 0
Total Pages Encrypted        : 0
Highest block SCN            : 988324 (0.988324)


用rman和dbv均发现一个坏块


检查从库的日志:

/u01/app/oracle/diag/rdbms/orcl/orcl/trace/alert_orcl.log
Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_3332.trc  (incident=9753):
ORA-01578: ORACLE data block corrupted (file # 1, block # 91041)
ORA-01110: data file 1: '/u01/app/oracle/oradata/orcl/system01.dbf'
ORA-26040: Data block was loaded using the NOLOGGING option
Incident details in: /u01/app/oracle/diag/rdbms/orcl/orcl/incident/incdir_9753/orcl_ora_3332_i9753.trc
Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_3332.trc  (incident=9754):
ORA-01578: ORACLE data block corrupted (file # 1, block # 91041)
ORA-01110: data file 1: '/u01/app/oracle/oradata/orcl/system01.dbf'
ORA-26040: Data block was loaded using the NOLOGGING option
Incident details in: /u01/app/oracle/diag/rdbms/orcl/orcl/incident/incdir_9754/orcl_ora_3332_i9754.trc
Wed May 13 10:55:34 2020

检查坏块视图


SQL> select * from v$database_block_corruption ;
     FILE#     BLOCK#   BLOCKS CORRUPTION_CHANGE# CORRUPTIO
---------- ---------- ---------- ------------------ ---------
  1 91041        1      987602 NOLOGGING
SQL>


在迪备的日志中没有找到ora错误! grep ORA- /var/log/dbackup3/agent.log


rman 的 report unrecoverable;

RMAN> report unrecoverable
2> ;
using target database control file instead of recovery catalog
Report of files that need backup due to unrecoverable operations
File Type of Backup Required Name
---- ----------------------- -----------------------------------
13   full                    /u01/app/oracle/oradata/orcl/soe10.dbf
14   full                    /u01/app/oracle/oradata/orcl/soe11.dbf
17   full                    /u01/app/oracle/oradata/orcl/soe14
18   full                    /u01/app/oracle/oradata/orcl/soe15
RMAN> backup tablespace soe10;
Starting backup at May 19 2020 15:47:52
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=1132 device type=DISK
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00013 name=/u01/app/oracle/oradata/orcl/soe10.dbf
channel ORA_DISK_1: starting piece 1 at May 19 2020 15:47:52
channel ORA_DISK_1: finished piece 1 at May 19 2020 15:49:47
piece handle=/u01/app/oracle/product/11.2.0/dbhome_1/dbs/01v0jkp8_1_1 tag=TAG20200519T154752 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:01:55
Finished backup at May 19 2020 15:49:47
RMAN>  report unrecoverable
2> ;
Report of files that need backup due to unrecoverable operations
File Type of Backup Required Name
---- ----------------------- -----------------------------------
14   full                    /u01/app/oracle/oradata/orcl/soe11.dbf
17   full                    /u01/app/oracle/oradata/orcl/soe14
18   full                    /u01/app/oracle/oradata/orcl/soe15
RMAN> quit
相关实践学习
通过日志服务实现云资源OSS的安全审计
本实验介绍如何通过日志服务实现云资源OSS的安全审计。
相关文章
|
JavaScript 应用服务中间件 nginx
|
10月前
|
Oracle 关系型数据库 数据库
【赵渝强老师】在PostgreSQL中访问Oracle
本文介绍了如何在PostgreSQL中使用oracle_fdw扩展访问Oracle数据库数据。首先需从Oracle官网下载三个Instance Client安装包并解压,设置Oracle环境变量。接着从GitHub下载oracle_fdw扩展,配置pg_config环境变量后编译安装。之后启动PostgreSQL服务器,在数据库中创建oracle_fdw扩展及外部数据库服务,建立用户映射。最后通过创建外部表实现对Oracle数据的访问。文末附有具体操作步骤与示例代码。
717 6
【赵渝强老师】在PostgreSQL中访问Oracle
|
虚拟化
【2025最新】VMware Workstation Pro 虚拟机基础配置教程,方便你的神操作!
VMware Workstation Pro 是一款强大的虚拟化工具,本文简要介绍其基本配置与操作。安装后,用户可以通过“编辑菜单 &gt; 首选项”设置虚拟机保存路径、是否显示托盘图标等全局配置。新建虚拟机时,需选择操作系统类型、配置处理器、内存、网络和硬盘等参数。建议根据主机硬件性能合理分配资源,避免过度占用。创建完成后,用户可加载 ISO 镜像文件安装所需操作系统。通过这些步骤,您可以轻松搭建并管理多个虚拟环境。
3616 8
【2025最新】VMware Workstation Pro 虚拟机基础配置教程,方便你的神操作!
|
算法 安全 区块链
区块链如何实现交易匿名性
**区块链匿名性摘要:** - 匿名性源于公钥/私钥系统,公钥作地址,私钥验证交易,不透露身份信息。 - Coin Mixing 和 CoinJoining 混合交易,使资金流向难以追踪。 - 匿名币如 Monero、Zcash 使用零知识证明和环签名技术增强匿名。 - 隐身地址和一次性地址增加隐私,公私钥交换确保安全交易而不暴露身份。 - 多层次加密与协议结合,保障区块链交易隐私。
|
存储 编解码 负载均衡
数据分片算法
【10月更文挑战第25天】不同的数据分片算法适用于不同的应用场景和数据特点,在实际应用中,需要根据具体的业务需求、数据分布情况、系统性能要求等因素综合考虑,选择合适的数据分片算法,以实现数据的高效存储、查询和处理。
|
安全 Linux
Linux查看和剔除当前登录用户详细教程
Linux查看和剔除当前登录用户详细教程
501 0
Linux查看和剔除当前登录用户详细教程
|
NoSQL 安全 Shell
MongoDB 用户管理
10月更文挑战第12天
425 0
|
监控 关系型数据库 数据库
PostgreSQL和greenplum的copy命令如何使用?
【6月更文挑战第5天】PostgreSQL和greenplum的copy命令如何使用?
645 2
|
存储 数据可视化 Java
Logstash快速入门
Logstash快速入门
444 1
|
SQL Java 数据库连接
不受支持的SQL类型1111
不受支持的SQL类型1111
429 0