##sample 0 不完全恢复之后,open resetlogs之前,怎么快速的检查数据库是否处于一致性的状态?
https://blog.csdn.net/msdnchina/article/details/55515313

How to quickly check that Database is consistent after incomplete recovery (Point in Time Recovery) before OPEN RESETLOGS (Doc ID 1354256.1)

(主要思想是检查数据库是否同步,文件是否是fuzzy)
通过从物理datafile中读取 datafile header来查询datafile的当前状态和PIT(Point In Time up to which the datafiles have been recovered)
SQL> select fuzzy, status, error, recover, checkpoint_change#, checkpoint_time, count(*)
from v$datafile_header
group by fuzzy, status, error, recover, checkpoint_change#, checkpoint_time ;

For Unix:
% export NLS_DATE_FORMAT='dd-mon-rr hh24:mi:ss'
% rman target /

For Windows:
> set nls_date_format=dd-mon-rr:hh24:mi:ss
> rman target /

找到备份的命令:
RMAN> LIST BACKUP OF DATABASE COMPLETED AFTER '<date>';
or
RMAN> LIST BACKUP OF DATABASE COMPLETED AFTER 'sysdate -n';

设置<date> 来限制backup命令的输出,以便定位到你想要的backup的输出,注意完成时间,
对于一个multi-piece的backup,请注意最后一个被创建的backuppiece的完成时间.

在本文中,运行SQL查询语句时,你应该在session级别设置NLS_DATE_FORMAT,如下:
SQL> alter session set nls_date_format='DD-MON-YYYY HH24:MI:SS';

检查项 1:Checkpoint Time and Fuzziness

目标:验证被恢复(recovered)到想要的时间点(point in time--PIT)的datafiles,这些数据文件是一致的(FUZZY=NO)

通过从物理datafile中读取 datafile header来查询datafile的当前状态和PIT(Point In Time up to which the datafiles have been recovered)
SQL> select fuzzy, status, error, recover, checkpoint_change#, checkpoint_time, count(*)
from v$datafile_header
group by fuzzy, status, error, recover, checkpoint_change#, checkpoint_time ;

FUZ STATUS ERROR REC CHECKPOINT_CHANGE# CHECKPOINT_TIME COUNT(*)
--- ------- --------------- --- ------------------ -------------------- ----------
NO ONLINE 5311260 31-AUG-2011 23:10:14 6
YES ONLINE 5311260 31-AUG-2011 23:10:14 1

a)验证 checkpoint_time/checkpoint_change# 符合你想要的 UNTIL TIME/SCN,如果不符合,继续recover database,若是你有更多的archived log的话

b)如果有些datafile的FUZZY=YES,这意味着需要更多的recovery.
如果这些归档日志被丢失了,定位这些datafile并决定我们是否可以将这些datafile置于offline(译者注:当然可以用bbed进行修改,只不过风险自当,责任自负)
警告:如果把datafile置为offline,我们会丢失这些datafile中的数据.

如果这些datafile属于system or undo 表空间,没有合适的分析,我们决不能把这些文件置为offline状态.请联系Oracle Support以获取进一步的action.
SQL> select file#, substr(name, 1, 50), substr(tablespace_name, 1, 15), undo_opt_current_change# from v$datafile_header where fuzzy='YES' ;

FILE# SUBSTR(NAME,1,50) SUBSTR(TABLESPA UNDO_OPT_CURRENT_CHANGE#
---------- -------------------------------------------------- --------------- ------------------------
3 /u01/app/oracle/oradata/prod111/undotbs01.dbf

###参考Step by Step method to create Primary/Standby Database from Standby Backup (文档 ID 1604251.1)

Note:

Only from 11g, backup of controlfile which is taken as " Backup current controlfile" can be restored at standby database as
(a) current controlfile ( restore controlfile from '<>.BKP'; )
(b) standby controlfie ( restore standby controlfile from <>.bkp')

Step a1:
init ( minimum required parameter )
>>>
DB_NAME=MASTERDB # Database name of standby/primary
DB_UNIQUE_NAME="MASTERDBSNGS" # can be set for differentiation
control_files='/<path><>.CTL'

log_file_name_convert = '<your current standby REDO location >,< your new host location >' ( # optional )
<<<

Step a2:
$ export ORACLE_SID=MASTERDBSNGS
$ sqlplus / as sysdba
sql> startup nomount;

Step a3:
In another session

$ export ORACLE_SID=MASTERDBSNGS
$ rman target /

RMAN> restore controlfile from '<backup location/ctl.BKP'; for ( case a)
RMAN> alter database mount;
RMAN> catalog start with '< backup piece location>';

RMAN
run {
allocate channel t1 type disk;
allocate channel t2 type disk;
set newname for datafile 1 to '< new location/ DF name> ';
set newname for datafile 2 to '< new location/ DF name> ';
...
set until sequence 212; # this is to set as per your requirement
restore database;
switch datafile all;
recover database;
}

Step a4: alter database open resetlogs.
@ mount stage
SQL> alter database rename file '<old file location and name>' to '<new location and name>';

a4.1 Option (1) alter database open resetlogs;
a4.2 Option (b) Activate the Standby

SQL> Alter database activate physical standby database ;
SQL> Alter database open;

n 11.2.0.4 , you can follow below workaround if patch 18455956 NOT applied.
Since controlfile type would be 'STANDBY step (a4) will fail at 'Alter database open resetlogs'

With any of below option you can open the database as Primary role

Option (a) Create trace file of controlfile

recreate the controlfile from trace

recover database using backup controlfile until cancel # Cancel the recovery

alter database open resetlogs

Option (b) Activate the Standby

SQL> Alter database activate physical standby database ;

SQL> Alter database open;

##sample 1 如何对10g容灾库进行一个一致性备份
How to take consistent backups at standby site (文档 ID 1292126.1)

-》1.备库上停下MRP

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

备库上执行
RMAN> backup database plus archivelog ;

##10G 主库上执行
RMAN> backup current controlfile;
(Note: In 10g, you will need to backup the controlfile from the primary site.
The above will result in a consistent, self-contained backup.)

3) 备份重启MRP restart managed recovery:

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNETED FROM SESSION;

3) 使用备份恢复 restart managed recovery:

To restore from this backup:

RMAN> startup nomount;
RMAN> restore controlfile from 'controlfile backuppiece name and location';
RMAN> alter database mount;
RMAN> restore database;
RMAN> recover database noredo;

##sample 2 如何在11g ADG环境备份一个一致性的备份;
Howto make a consistent RMAN backup in an Standby database in Active DataGuard mode (文档 ID 1419923.1)

1.如果在11.2.0.4 主库上备份,只要执行这条命令即可完成一致性备份。
Consistent means, that the backup is having the datafiles and the related archived redologs, so that it can be opened with this backup. This done on the Primary database by using :

RMAN> backup database plus archivelog;

This will execute the following :

Backup the existing archived redologs
Backup the datafiles
Switch a logfile
Backup all the archives again, but this time it will include all the archived redologs created during and just after the datafile backup. This are the archives which are required to make the datafile backup consistent.

2.如果在11.2.0.4 上standby db ADG上执行,就需要显性在主库上执行如下命令,对当前日志进行归档,
因为在恢复模式下对备用数据库进行的备份也不会得到所有归档日志,除非在主日志上执行切换并进行第二次存档日志备份, 否则需要第二次备份存档日志。

-》1.备库上准备远程切换主库的归档日志的脚本
shell script : /usr/local/bin/logswitch.sh

#!/bin/ksh

#
# Change <passwd>
# <primary_db>
#

sqlplus -s "sys/<passwd>@<primary_db> as sysdba" <<EOF
alter system archive log current;
exit
EOF

% chmod 755 /usr/local/bin/logswitch.sh

-》2 备库上执行如下命令,归档进行二次备份。
Example of RMAN backup script on the Active Dataguard Standby database

% rman target / catalog <un/pw@catalog_db>

Rman> Configure controlfile autobackup on ;--------------> This would ensure Controlfile auto backup
RMAN> backup database plus archivelog delete input;

host "/usr/local/bin/logswitch.sh";

backup archivelog all delete input;

注意:
(A backup taken of a MOUNTED standby database in recovery mode will also not get all of the archived logs required unless a switch is performed on the primary and a second archived log backup is taken.

(The missing 'Log Switch' by making an explicit 'Log Switch' on the Primary.
also does apply to the BASIC DATA GUARD case as well where the database is MOUNTED and in
managed recovery mode (MRP).
A backup taken of a MOUNTED standby database in recovery mode will also not get all of the archived logs required unless a switch is performed on the primary and a second archived log backup is taken.

通过在主服务器上创建显式 "日志切换" 来丢失 "日志切换"。
也适用于基本数据保护表的情况下, 以及在其中的数据库是移动和在托管恢复模式 (MRP)。
在恢复模式下对备用数据库进行的备份也不会得到所有归档日志,除非在主日志上执行切换并进行第二次存档日志备份, 否则需要存档日志。

转如何检查数据库是否处于一致性的状态 以及 如果在DG 库上备份,恢复成一个主库的更多相关文章

  1. 【DB宝46】NoSQL数据库之CouchBase简介、集群搭建、XDCR同步及备份恢复

    目录 一. CouchBase概述 1.1.简述 1.2.CouchDB和CouchBase比对 1.2.1.CouchDB和CouchBase的相同之处 1.2.2.CouchDB和CouchBas ...

  2. MS SQL巡检系列——检查数据库上一次DBCC CHECKDB的时间

    DBCC CHECKDB检查指定数据库中的所有对象的逻辑和物理完整性,具体请参考MSDN文档.我们必须定期对数据库做完整性检查(DBCC CHECKDB),以便能及时发现一些数据库损坏(Corrupt ...

  3. 怎样在SharePoint管理中心检查数据库架构版本号、修补级别和修补程序的常规监控

    怎样在SharePoint管理中心检查数据库架构版本号.修补级别和修补程序的常规监控 准备: 确保你是可以訪问管理中心的场管理员. 開始: 1. 打开管理中心--升级和迁移. 2. 点击"查 ...

  4. Oracle安装11.2.0.4.180116补丁及如何检查数据库安装补丁

    最近做了一个安装11.2.0.4.180116补丁的实验,突然想起之前和同事讨论的一个问题:如何检查数据库安装补丁的版本,之前搜到的是去查dba_registry_history,有的说在操作系统中执 ...

  5. Oracle管理监控之检查数据库和日常维护数据库

    linux系统的系统日志一般位于/var/log目录下.linux的系统日志由一个叫syslog的进程管理的,如下日志都是由syslog服务驱动的. /var/log/ messages:记录linu ...

  6. 【计算机网络基础】用 telnet 检查 VPS 的某个端口是否处于监听状态

    命令 telnet x.x.x.x p 其中 x.x.x.x 代表 VPS 的 IP 地址,p 代表要检查的端口号. 起因是我的 ss 不好使了.IP 没被封,查了一下,可能是 ssserver 的端 ...

  7. Redis缓存穿透、击穿、雪崩,数据库与缓存一致性

    Redis作为高性能非关系型(NoSQL)的键值对数据库,受到了广大用户的喜爱和使用,大家在项目中都用到了Redis来做数据缓存,但有些问题我们在使用中不得不考虑,其中典型的问题就是:缓存穿透.缓存雪 ...

  8. Xtrabackup原理及使用innobackupex进行MySQL数据库备份恢复

    Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备的工具. Xtrabackup中主要包含两个工 ...

  9. 删库到跑路?还得看这篇Redis数据库持久化与企业容灾备份恢复实战指南

    本章目录 0x00 数据持久化 1.RDB 方式 2.AOF 方式 如何抉择 RDB OR AOF? 0x01 备份容灾 一.备份 1.手动备份redis数据库 2.迁移Redis指定db-数据库 3 ...

随机推荐

  1. springmvc框架简单搭建

    一.利用xml 配置 1.web.xml   <web-app version="2.4"     xmlns="http://java.sun.com/xml/n ...

  2. 从零开始学习前端JAVASCRIPT — 11、JavaScript运动模型及轮播图效果、放大镜效果、自适应瀑布流

    未完待续...... 一.运动原理 通过连续不断的改变物体的位置,而发生移动变化. 使用setInterval实现. 匀速运动:速度值一直保持不变. 多物体同时运动:将定时器绑设置为对象的一个属性. ...

  3. Android 内存优化[转]

    一. Android的内存机制 Android的程序由Java语言编写,所以Android的内存管理与Java的内存管理相似.程序员通过new为对象分配内存,所有对象在java堆内分配空间:然而对象的 ...

  4. 编写高质量代码改善C#程序的157个建议——建议133:用camelCasing命名私有字段和局部变量

    建议133:用camelCasing命名私有字段和局部变量 私有变量和局部变量只对本类型负责,它们在命名方式也采用和开放的属性及字段不同的方法.camelCasing很适合这类命名. camelCas ...

  5. JW Player开始播放和结束播放事件的捕获

    项目中使用到jwPlayer,需要在用户开始播放盒结束播放的时候触发一些事件,所以研究JWPlayer. <script type="text/javascript"> ...

  6. access函数使用

    调用open函数时,是以有效用户而不是实际用户的身份去验证进程对要打开的文件的读写权限.但是有时候我们想知道的是实际用户而非有效用户对某一文件的权限,此时就要用到access函数.   函数原型:in ...

  7. Ubuntu下使用UFW,以及CentOS7的默认防火墙firewalld

    UFW是一个简化版的iptables,基于iptables,配置比iptables简单 默认UFW是关闭状态,即Ubuntu默认打开所有端口,比较危险. 检测状态 ufw status 设置默认状态, ...

  8. Oracle定時email通知

    small_program_task 這張表的資料是待發送的email通知,再次之前已經有一個job會定時掃描固定時間內未接收到小程式回報狀態將其寫入到該表,send_flag為N,表示為寄過通知.e ...

  9. 关于.NET C#调用Sqlite的总结二

    关于.NET C#调用Sqlite的总结一 在上一篇中我一直疑惑为什么我在使用多层架构进行开发时总是会报些莫名的错误,难道要使用Sqlite就不能分层吗?只能将UI.业务逻辑.数据访问统统都要写在一层 ...

  10. Django-02路由层

    U RL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表:你就是以这种方式告诉Django,对于客户端发来的某个URL调用哪一段逻辑代 ...