Oracle9i数据库DataGuard实施及维护手册3

以下命令均在Standby端执行

1.如果是使用ARCH传递redo数据,那么执行以下命令:

检查是否有gap archive

SELECT THREAD#, LOW_SEQUENCE#, HIGH_SEQUENCE# FROM V$ARCHIVE_GAP;

如果有则register

ALTER DATABASE REGISTER PHYSICAL LOGFILE 'filespec1';

实行Failover:

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

ALTER DATABASE ACTIVATE STANDBY DATABASE;

ALTER DATABASE MOUNT;

ALTER DATABASE OPEN;

2.如果是使用LGWR传递redo数据,那么执行以下命令:

检查是否有gap archive

SELECT THREAD#, LOW_SEQUENCE#, HIGH_SEQUENCE# FROM V$ARCHIVE_GAP;

如果有则register

ALTER DATABASE REGISTER PHYSICAL LOGFILE 'filespec1';

如果是由于网络问题而导致需要切换,那么通常standby端的RFS进程并不会意识到primary已经不可访问,所以RFS进程也不会释放当前的standby redo log文件。

如果是primary端的数据库实例由于故障中断,那么一般情况下standby端的RFS进程会立刻意识到primary已经不可访问,也就会立刻释放当前的standby redo log文件。

只要RFS进程没有释放standby redo log文件,那么执行ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH命令就会在alertlog文件中发现如下的报错信息

Warning: log 4 of thread 1 is being archived or modified

Recovery interrupted.

Media Recovery failed with error 261

如果在报上述错误的时候,执行SWITCH,那么将会出现下面的错误:

ORA-16139: media recovery required

所以必须检查alertlog文件,直到发现如下信息才表示RFS进程已经释放了standby redo log文件,这时候才可以作FINISH:

RFS: Possible network disconnect with primary database

促使RFS进程释放standby redo log 文件有两种方法:

              1. 等待RFS进程的network timeout,通常需要等待8分钟左右

              2. 关闭standby数据库,再重新开启,这样会强制RFS进程释放standby redo log

 

我们可以通过v$managed_standby视图来监控RFS进程何时释放

实行Failover:

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH;

alertlog中将显示如下信息,表示finish成功:

Terminal Incomplete Recovery: UNTIL CHANGE 3738452

Terminal Incomplete Recovery: End-Of-Redo log allocation

Terminal Incomplete Recovery: log 4 reserved for thread 1 seq# 8772

TERMINAL RECOVERY changing datafile format version from 8.0.0.0.0 to

9.0.0.0.0

Switching logfile format version from 8.0.0.0.0 to 9.0.0.0.0

Terminal Incomplete Recovery: clearing standby redo logs.

Terminal Incomplete Recovery: thread 1 seq# 8772 redo required

Terminal Incomplete Recovery: End-Of-Redo log /global/oradata/ctsdb/stdby_redo04.log

Identified end-of-REDO for thread 1 sequence 8772

Terminal Incomplete Recovery: end checkpoint SCN 3738453

Media Recovery Complete

Switching logfile format version from 9.0.0.0.0 to 8.0.0.0.0

Terminal Incomplete Recovery: successful completion

Begin: Wait for standby logfiles to be archived

Wed Sep 1 13:42:28 2004

ARC1: Evaluating archive log 4 thread 1 sequence 8772

Wed Sep 1 13:42:28 2004

ARC0: Evaluating archive log 4 thread 1 sequence 8772

Wed Sep 1 13:42:28 2004

ARC1: Beginning to archive log 4 thread 1 sequence 8772

Wed Sep 1 13:42:28 2004

ARC0: Unable to archive log 4 thread 1 sequence 8772

Wed Sep 1 13:42:28 2004

Creating archive destination LOG_ARCHIVE_DEST_1: '/global/oradata/ctsdb/archive/arch1_8772.log'

Wed Sep 1 13:42:28 2004

Log actively being archived by another process

Wed Sep 1 13:42:28 2004

ARC1: Completed archiving log 4 thread 1 sequence 8772

Wed Sep 1 13:42:43 2004

End: All standby logfiles have been archived

Resetting standby activation ID 4038461969 (0xf0b60a11)

Completed: ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH

FINSH成功之后再执行SWITCH:

ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;

SWITCH成功之后,重新启动数据库:

SHUTDOWN IMMEDIATE;

STARTUP;

使用Data Guard Broker

创建Management Server repository:

emca

启动Management Server:

oemctl start oms

检查Management Server状态:

oemctl status oms sysman/oem_temp@bftest

启动Intelligent Agent:

agentctl start agent

如果启动agent报错,则检查相应的log文件,如果log文件中有如下错误:

Failed while initializing user subsystem

Error initializing subsystems

nmiumini_initializeUM: Unable to initialize UQAgent

则进行如下操作之后,重新启动agent:

rm $ORACLE_HOME/network/agent/*.q

alter system set resource_manager_plan='SYSTEM_PLAN' scope=both;

在所有站点上将BROKER启动。

SQL> ALTER SYSTEM SET DG_BROKER_START=TRUE SCOPE=BOTH;

System altered.

SQL> SHOW PARAMETER DG_BROKER_START

NAME TYPE VALUE

------------------------------------

dg_broker_start boolean TRUE

连接Data Guard Manager,必须使用具有sysdba权限的用户连接到Primary库上

>dgmgrl

DGMGRL> connect sys/dba

创建配置方案

DGMGRL> CREATE CONFIGURATION 'cts' AS

PRIMARY SITE IS 'bftest'

RESOURCE IS 'ctsdb'

HOSTNAME IS 'bftest'

INSTANCE NAME IS 'ctsdb'

SERVICE NAME IS 'ctsdb.primary'

SITE IS MAINTAINED AS PHYSICAL;

创建备用站点方案

DGMGRL> CREATE SITE 'report'

RESOURCE IS 'ctsdb'

HOSTNAME IS 'report'

INSTANCE NAME IS 'ctsdb'

SERVICE NAME IS 'ctsdb.standby'

SITE IS MAINTAINED AS PHYSICAL;

激活配置方案

DGMGRL> ENABLE CONFIGURATION;

激活资源

DGMGRL> ENABLE RESOURCE 'ctsdb';

资源的日志传送模式必须和Primary库的数据保护模式相匹配,比如数据保护模式是maximize availability,那么需要配置资源的LogXptMode属性为SYNC方式。

DGMGRL>ALTER RESOURCE 'ctsdb' ON SITE 'Boston' SET PROPERTY LogXptMode=SYNC;

DGMGRL>ALTER RESOURCE 'report_db' ON SITE 'Beijing' SET PROPERTY LogXptMode=SYNC;

DGMGRL> ALTER CONFIGURATION SET PROTECTION MODE AS MAXAVAILABILITY;

查看资源情况

DGMGRL> show resource verbose 'ctsdb';

查看某个节点上资源中的某一属性

DGMGRL> show resource verbose 'ctsdb' 'LogXptMode' on site 'Boston';

DGMGRL> SHOW RESOURCE 'ctsdb' LogXptStatus;

查看Broker的日志

DGMGRL> show log latest on site 'Boston';

查看数据库告警日志

DGMGRL> show log alert latest on site 'Boston';

查看资源的各种属性

DGMGRL> SHOW RESOURCE 'ctsdb' SendQEntries;

DGMGRL> SHOW RESOURCE 'report_db' SbyLogQueue;

DGMGRL> show resource verbose 'ctsdb' InconsistentLogXptProps;

修改资源属性,将自动修改数据库的相应初始化参数

DGMGRL> ALTER RESOURCE product_db on site v280 SET PROPERTY StandbyArchiveDest = '/global/oradata/ctsdb/archive';

Property "standbyarchivedest" updated.

DGMGRL> ALTER RESOURCE product_db on site v280 SET PROPERTY StandbyFileManagement = 'AUTO';

Property "standbyfilemanagement" updated.

DGMGRL> ALTER RESOURCE product_db on site v280 SET PROPERTY ArchiveLagTarget = '3600';

Property "archivelagtarget" updated.

停止Data Guard环境中的某个节点

DGMGRL> ALTER RESOURCE 'report_db' ON SITE 'Beijing' SETSTATE='offline';

启动Data Guard环境中的某个节点

DGMGRL> ALTER RESOURCE 'report_db' ON SITE 'Beijing' SETSTATE='LOGICAL-APPLY-ON';

修改 Data Guard环境中的某个节点的状态

DGMGRL> ALTER RESOURCE 'report_db' ON SITE 'v480' SETSTATE='READ-ONLY';

先停止连接到备用库上的所有连接

DGMGRL> ALTER RESOURCE 'report_db' ON SITE 'v480' SETSTATE='PHYSICAL-APPLY-ON';

停止Broker

SQL> ALTER SYSTEM SET DG_BROKER_START=FALSE;

作Switchover

DGMGRL> SWITCHOVER TO 'v480';

然后关闭Pirmary和Standby,重新启动

七.在Cluster环境中的主备切换步骤

在应用中cluster环境是很常见的,下面简单介绍一下在Sun Cluster 3.0的环境中,如果作Data Guard主备数据库的Switchover工作。

1.由于Cluster环境的监控,我们要手动关闭数据库的话,必须先关闭cluster,单独起一个节点的oracle。其中listener.ora.sigle的配置文件是预先写好的监听配置,主要不同是用主机的真实IP替换原先Cluster环境中的虚拟IP。

/usr/cluster/bin/scswitch -F -g oracle-rg

mount /global/oradata

cd /export/home/oracle/app/oracle/product/9.2.0/network/admin

cp listener.ora.sigle listener.ora

lsnrctl start

lsnrctl start listener_dg

sqlplus “/ as sysdba”

startup

2.在SQL*Plus中依次进行以下操作,完成切换Primary和Standby的工作

主数据库端:

ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY;

SHUTDOWN IMMEDIATE;

STARTUP NOMOUNT;

ALTER DATABASE MOUNTSTANDBY DATABASE;

备用数据库端:

ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;

SHUTDOWN IMMEDIATE;

STARTUP;

主数据库端:

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

八.参考文档

Oracle Data Guard Concepts and Administration Release 2 (9.2)

Oracle9i Data Guard Broker Release 2 (9.2)

技术专题总结:standby Database - snowhite、chao_ping

Oracle 9i备用数据库配置使用参考手册 - piner

[作者简介]

张乐奕,通常使用的网名为kamus,也曾用过seraphim,现在任职于北京某大型软件公司,Oracle数据库DBA,主要负责证券行业的核心交易系统数据库管理及维护工作。

热切关注Oracle技术和相关操作系统技术,出没于各大数据库技术论坛,目前是中国最大的Oracle技术论坛www.itpub.net的数据库管理版版主,

时间: 2024-09-20 06:25:20

Oracle9i数据库DataGuard实施及维护手册3的相关文章

Oracle9i数据库DataGuard实施及维护手册2

六.实施步骤 Physical Standby配置 修改控制文件,修改最大日志组为10 alter database backup controlfile to trace; ORACLE_HOME为/export/home/oracle/app/oracle/product/9.2.0 190作为primary,185作为Standby 创建Standby的Oracle软件 打包Primary上的oracle软件 cd /export/home/oracle/app/oracle/produc

Oracle9i数据库Data Guard实施及维护手册 1

  Oracle9i数据库Data Guard实施及维护手册 By Kamus 一.Data Guard介绍 备用数据库(standby database)是ORACLE 推出的一种高可用性(HIGH AVAILABLE)数 据库方案,在主节点与备用节点间通过日志同步来保证数据的同步,备用节点作为主节点的 备份,可以实现快速切换与灾难性恢复. ORACLE 从7.3 才开始支持standby database.7.3.x-8.0.x 需要手工拷贝所有归档日志并 手工同步,从ORACLE815开始

内网DATAGUARD实施和外网DATAGUARD扩容

1月22日21点准时到公司,曹工和祝工已经到了,寒暄了几句就切入正题开始准备工作.今日有两项工作:1.内网DATAGUARD实施,2.外网DATAGUARD扩容.外网DATAGUARD扩容在22:30就顺利完成,但内网DATAGUARD实施却碰到几个问题,不过却长了见识.备库3:00恢复完成,4:30全部工作完成,5:00撤离,出门已经是皑皑的白雪,又打不到车,和曹工.张工等了半天总算有车来,三个人一起上沿途放人,我到家已经近6:00了. 实施过程碰到如下问题: 问题1:第一次全库备份,产生的备

手动建立 Oracle9i 数据库

oracle|数据|数据库 手动建立 Oracle9i 数据库(转载) (原文刊登于2002年03月Linuxer杂志)                             作者: 何致億, 美商甲骨文公司台湾分公司特约顾问   前几期我们分别探讨 Oracle9i 核心要素与数据库实体组成,相信大家对于 Oracle9i 数据库服务器已经具有一定程度的了解了.本期我将介绍手动建置 Oracle9i 数据库的步骤与相关注意事项.   本文内容将涵盖下列主题: n          建立数据库

使用Oracle9i数据库的九大注意事项

oracle|数据|数据库 使用Oracle9i数据库的九大注意事项   Oracle数据库的9.2.0.1.0版本中的Oracle HTTP Server有如下变化: 一.关于Apache Jserv进程 Oracle HTTP Server支持的Apache Jserv进程的最大数目已经从Apache发布的缺省值最大值25增加到最大值128,这个值是不可实时配置的. 二.JDK/JRE 认证 Oracle被认证使用JDK/JRE 1.3.1_01和JDK/JRE 1.2.2_07两者来建立和

Oracle9i数据库异常关闭后的启动_oracle

正在看的ORACLE教程是:Oracle9i数据库异常关闭后的启动.Oracle shutdown的时候突然断电,导致使用sql/plus启动时无法连接到数据库,具体描述为: connection can not permitted, shut in progress. 到dos 提示符 键入: c:\> sqlplus /nolog 显示: sql/plus: Realease9.0.2--..all rights reserved sql> connect /as sysdba 显示已连接

C#连接Oracle9i数据库(Windows验证方式)

问题描述 C#连接Oracle9i数据库(Windows验证方式)怎么连接? 解决方案 解决方案二:Oracle可以以Windows验证方式登录么?解决方案三:ORACLE_BASEORACLE_HOMEnetworkadminsqlnet.ora文件里面的SQLNET.AUTHENTICATION_SERVICES参数要包含ntsserver和client端都要设置原文地址:http://docs.oracle.com/cd/B28359_01/win.111/b32010/authen.ht

Oracle9i数据库移动过程

数据库移动,在项目实施过程中,经常会发生,对于有经验的DBA来说,数据库移动是十分容易.但对于一些只了解系统,对数据库不是十分懂的人员来说,oracle的移动就不是那么容量了. 例如当系统安装完成以后,存储空间扩容了,需要对原对ORACLE进行移动,需要进行数据移动.以前在ORACLE8I FOR WINDOWS 2000中是可以进行移动的.现在ORACLE9I FOR AIX 5L 的移动如何做呢???其实经对各种不同的平台,操作过程完全一样. 一.复制移动数据文件 1).获取数据库相关信息

使用Oracle9i数据库的注意事项

oracle|数据|数据库 Oracle数据库的9.2.0.1.0版本中的Oracle HTTP Server有如下变化: 一.关于Apache Jserv进程 Oracle HTTP Server支持的Apache Jserv进程的最大数目已经从Apache发布的缺省值最大值25增加到最大值128,这个值是不可实时配置的. 二.JDK/JRE 认证 Oracle被认证使用JDK/JRE 1.3.1_01和JDK/JRE 1.2.2_07两者来建立和配置带有mod_jserv 模块的Java应用