1.primary 首先要设置为 force_log mode ,然后再做备份,在应用到备库上。

2.switch over 之前需要检查v$database_block_corruption  视图 ,看看有没有坏块,

前提是该数据库已经做全备份。

RMAN reports it in v$database_block_corruption with CORRUPTION_TYPE=NOLOGGING

3.如何验证 Nologging方法

Nologging操作对standby的影响

2006年11月22日 11:32:00

阅读数:2242

一、实验环境
SQL> select * from v$version;

BANNER
----------------------------------------------------------------
Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
PL/SQL Release 9.2.0.1.0 - Production
CORE    9.2.0.1.0       Production
TNS for 32-bit Windows: Version 9.2.0.1.0 - Production
NLSRTL Version 9.2.0.1.0 - Production

SQL> select force_logging from v$database;

FOR
---
NO

二、Nologging操作

1.在primary上执行
SQL> create table test nologging tablespace test as select * from all_objects where rownum<1001;

Table created.

2.归档当前日志
SQL> alter system archive log current;

System altered.

3.在备库,等刚才传过来的日志应用后,启动到read only
SQL> alter database recover managed standby database finish;

Database altered.

SQL> alter database open read only;

Database altered.

4.执行查询
SQL> select * from test;
select * from test
              *
ERROR at line 1:
ORA-01578: ORACLE data block corrupted (file # 8, block # 10)
ORA-01110: data file 8: 'D:/ORACLE/ORADATA/TEST/TEST01.DBF'
ORA-26040: Data block was loaded using the NOLOGGING option

可以看到,主库的nologging操作不会无法传递到备库来,这样就会造成主备库的数据不一致,丢失了数据。

三、处理方法
在主库上,将受nologging操作影响的datafile做个热备,然后copy到备库覆盖原来的,再重新应用日志

1.查找受nologging操作影响的datafile
SQL> select a.file_name,a.tablespace_name,b.unrecoverable_change# from dba_data_
files a,v$datafile b where a.file_id=b.file#;

FILE_NAME                                TABLESPACE UNRECOVERABLE_CHANGE#
---------------------------------------- ---------- ---------------------
D:/ORACLE/ORADATA/NING/SYSTEM01.DBF      SYSTEM                         0
D:/ORACLE/ORADATA/NING/UNDOTBS01.DBF     UNDOTBS1                       0
D:/ORACLE/ORADATA/NING/CWMLITE01.DBF     CWMLITE                        0
D:/ORACLE/ORADATA/NING/EXAMPLE01.DBF     EXAMPLE                        0
D:/ORACLE/ORADATA/NING/INDX01.DBF        INDX                                    0
D:/ORACLE/ORADATA/NING/TOOLS01.DBF       TOOLS                          0
D:/ORACLE/ORADATA/NING/USERS01.DBF       USERS                          0
D:/ORACLE/ORADATA/NING/TEST01.DBF        TEST                      738934

8 rows selected.

2.关闭备库
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.

3.从主库备份受影响的test01.dbf到备库
SQL> alter tablespace test begin backup;

Tablespace altered.

在操作系统中复制文件

SQL> alter tablespace test end backup;

Tablespace altered.

4.归档当前日志
SQL> alter system archive log current;

System altered.

5.启动备库并恢复
注意将上一不归档的日志全部copy到备库的归档目的地,需要end backup操作的日志才能将数据库恢复到一致状态
SQL> startup nomount;
ORACLE instance started.

Total System Global Area  135338868 bytes
Fixed Size                   453492 bytes
Variable Size             109051904 bytes
Database Buffers           25165824 bytes
Redo Buffers                 667648 bytes
SQL> alter database mount standby database;

Database altered.

SQL> alter database open read only;
alter database open read only
*
ERROR at line 1:
ORA-16004: backup database requires recovery
ORA-01195: online backup of file 8 needs more recovery to be consistent
ORA-01110: data file 8: 'D:/ORACLE/ORADATA/TEST/TEST01.DBF'

SQL> recover standby database;
ORA-00279: change 738991 generated at 11/22/2006 10:46:44 needed for thread 1
ORA-00289: suggestion : D:/ORACLE/ARCH/TEST/ARC00100.001
ORA-00280: change 738991 for thread 1 is in sequence #100

Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
auto
ORA-00279: change 739327 generated at 11/22/2006 10:53:30 needed for thread 1
ORA-00289: suggestion : D:/ORACLE/ARCH/TEST/ARC00101.001
ORA-00280: change 739327 for thread 1 is in sequence #101
ORA-00278: log file 'D:/ORACLE/ARCH/TEST/ARC00100.001' no longer needed for
this recovery

ORA-00308: cannot open archived log 'D:/ORACLE/ARCH/TEST/ARC00101.001'
ORA-27041: unable to open file
OSD-04002: unable to open file
O/S-Error: (OS 2) The system cannot find the file specified.

SQL> alter database open read only;

Database altered.

6.再在备库执行查询
SQL> select count(1) from test;

COUNT(1)
----------
      1000

四、将主库置于force logging模式
SQL> alter database force logging;

Database altered.

SQL> select force_logging from v$database;

FOR
---
YES

Nologging操作对standby的影响的更多相关文章

  1. 孤荷凌寒自学python第三十四天python的文件操作对file类的对象学习

     孤荷凌寒自学python第三十四天python的文件操作对file类的对象学习 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 一.close() 当一个file对象执行此方法时,将关闭当前 ...

  2. js实现键盘操作对div的移动或改变-------Day43

    <爸爸去哪儿>的第二季据说要开播了额,有点小期待,不知道这一季的小宝贝们会有多萌,还会甜到心底吧, 哈哈,还记得那个风一样的女子呢,不知道她如今怎样了. 言归正传,继续今天的记录,实际上在 ...

  3. axios对put操作对Android的支持之坑

    ### 前段时间我做的一个手机端H5项目,需要发送一个put请求.因为ajax现在用的人有点少了,而且公司里边都是用的axios,所以我也是用的是axios做的请求. ### 再开发的时候测试都没有问 ...

  4. 【腾讯Bugly干货分享】基于RxJava的一种MVP实现

    本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57bfef673c1174283d60bac0 Dev Club 是一个交流移动 ...

  5. 【腾讯Bugly干货分享】一步一步实现Android的MVP框架

    本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/5799d7844bef22a823b3ad44 内容大纲: Android 开发 ...

  6. Learning Spark 第四章——键值对处理

    本章主要介绍Spark如何处理键值对.K-V RDDs通常用于聚集操作,使用相同的key聚集或者对不同的RDD进行聚集.部分情况下,需要将spark中的数据记录转换为键值对然后进行聚集处理.我们也会对 ...

  7. Scalding初探之二:动手来做做小实验

    输入文件 Scalding既可以处理HDFS上的数据,也可以很方便地在本地运行处理一些test case便于debug,Source有好多种 1 TextLine(filename) TextLine ...

  8. ObjectCopy

    对象的传参用的是传引用,但开发中通常不允许对传入参数进行修改.因此对象拷贝很常用,Python提供一个很方便的对象拷贝方法 如代码: __author__ = 'mengxuan' import co ...

  9. ARM指令集——数据处理指令

    ARM汇编指令集 ARM汇编文件的组成 指令:编译完成后作为一条指令(机器码)存储在内存单元中,CPU执行时能够完成处理的操作 伪指令:在编译时替换成能被识别的ARM指令 伪操作:知道编译器进行编译, ...

随机推荐

  1. bzoj 1185 最小矩形覆盖 —— 旋转卡壳

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1185 枚举一条边,维护上.左.右方的点: 上方点到这条边距离最远,所以用叉积求面积维护: 左 ...

  2. android开发 MyEclipse下测试连接MySQL数据库

    1.首先要加载MySQL驱动包. 步骤:右击项目找到build path->configure build path->libraries——>add External JARs添加 ...

  3. 【转】LCS

    动态规划法 经常会遇到复杂问题不能简单地分解成几个子问题,而会分解出一系列的子问题.简单地采用把大问题分解成子问题,并综合子问题的解导出大问题的解的方法,问题求解耗时会按问题规模呈幂级数增加. 为了节 ...

  4. 【转】 Pro Android学习笔记(七一):HTTP服务(5):多线程调用HttpClient

    目录(?)[-] 应用共享HttpClient对象的同步问题 创建共享HttpClient代码 创建共享对象 创建可共享的HttpClient对象 使用共享HttpClient对象的代码 基础代码 修 ...

  5. C语言 mmap()函数(建立内存映射) 与 munmap()函数(解除内存映射)

    mmap将一个文件或者其它对象映射进内存.文件被映射到多个页上,如果文件的大小不是所有页的大小之和, 最后一个页不被使用的空间将会清零.mmap在用户空间映射调用系统中作用很大. 条件 mmap()必 ...

  6. CentOS 7 破解mariadb密码

    1.停止mariadb服务: systemctl stop mariadb 2.进入单用户模式: mysqld_safe  --skip-grant-tables & 3.切换到另外一个工作组 ...

  7. 06_android虚拟机介绍 05_sdkManager介绍

    如果你不对SDK Manager进行设置,它默认会去谷歌官网下载最新的内容.由于官网被墙了,要么你FQ要么去设置代理.通过代理去下载相关的内容. 每一个android版本都对应着一个API的版本号.如 ...

  8. Wannafly 锁

    题意: 现在有 $n$ 个人,每个人有一个已然给定的重要度 $a_i$,现有 K 个锁,每个锁有若干钥匙,分配给一些人,要求一群人能够打开全部 $K$ 把锁, 当且仅当他们重要度的和大于等于 $m$, ...

  9. assert.fail()

    assert.fail(message) assert.fail(actual, expected[, message[, operator[, stackStartFunction]]]) oper ...

  10. SqlParameter用法

    if (id != null) { sql = @"update [User] set Username = @Username, Password = @Password, Type = ...