admin 管理员组文章数量: 887021
2023年12月23日发(作者:xordel1004xordel)
Oracle Data Guard实施与维护方案
Oracle Data Guard实施方案
1. 项目背景介绍
在2台RedHat5.4上使用ORACLE 的DataGuard组件实现容灾。设备配置(VMWare虚拟机环境)清单如下:
主机型号 数据实例
ORCL
ORCL
配置
CPU:1
MEM:2G
CPU:1
MEM:2G
数据库版本
Oracle 11gR2 11.2.0.1
Oracle 11gR2 11.2.0.1
RedHat
5.4(32位)
RedHat
5.4(32位)
Oracle Data Guard实施方案
2. Oracle DataGuard 介绍
备用数据库(standby database)是ORACLE 推出的一种高可用性(HIGH AVAILABLE)数据库方案,在主节点与备用节点间通过日志同步来保证数据的同步,备用节点作为主节点的备份,可以实现快速切换与灾难性恢复。
STANDBY DATABASE的类型:
有两种类型的STANDBY:物理STANDBY和逻辑STANDBY
两种类型的工作原理可通过如下图来说明:
physical standby提供与主数据库完全一样的拷贝(块到块),数据库SCHEMA,包括索引都是一样的。它是可以直接应用REDO实现同步的。
logical standby则不是这样,在logical standby中,逻辑信息是相同的,但
物理组织和数据结构可以不同,它和主库保持同步的方法是将接收的REDO转换成SQL语句,然后在STANDBY上执行SQL语句。逻辑STANDBY除灾难恢复外还有其它用途,比如用于用户进行查询和报表,但其数据库用户相关对象均需要有主键。
本次实施将选择物理STANDBY(physical standby)方式
Oracle Data Guard实施方案
对主库的保护模式可以有以下三种模式:
– Maximum protection (最高保护)
–Maximum availability (最高可用性)
–Maximum performance (最高性能)
三种保护模式区别如下:
保护模式
最高保护
数据丢失保护
零数据丢失
双重故障保护
零数据丢失
单重故障保护
最少的数据丢失
重做传输
LGWR SYNC — 将重做同步传输至两个站点,网络中断会导致主Database宕机
LGWR SYNC — 重做同步传输
LGWR ASYNC 或 ARCH —
重做异步传输
基于项目应用的特征及需求,本项目比较适合采用Maximum availability (最最高可用性
最高性能
高可用性)模式实施。
Oracle Data Guard实施方案
3. Dataguard 实施前提条件和注意事项:
灾备环境中的所有节点必须安装相同的操作系统,尽可能令详细补丁也保持相同。
灾备环境中的所有节点必须安装完全相同版本的Oracle数据库软件,包括版本号和发布号,比如必须都是Oracle 11.2.0.1
主库必须处于归档(ARCHIVELOG)模式。
灾备环境中所有节点的硬件和操作系统架构必须相同
主库可以是单实例,也可以是RAC。
主节点和备用节点之间的硬件配置可以不同,比如CPU数量,内存数量,存储的配置等等。
配置灾备环境的数据库用户必须具有SYSDBA权限。
Oracle Data Guard实施方案
4. Oracle软件安装
1. 要实施DataGurad的前,需要在主机RedHat-Primary和备机RedHat-Standby上进行ORACLE软件的基础安装。
2. 备机基础软件的安装有两种方式供选择:
1) 源始安装介质安装
采用ORACLE数据库安装介质进行软件安装。
2) “克隆”主站源数据库
分别对主站源数据库进行tar压缩并FTP/rcp至备机上,然后展开压缩文件。
通常出于便捷的原因,备机的Oracle初始建立可采用上述的第二种方式。测试环境中直接对虚拟机进行了拷贝,因此相当于采用了第二种方式。现场环境下,如果主节点不是RAC环境,也可以采用第二种方式。
4.1 环境配置
RedHat5-Primary (primary , IP 192.168.204.131)以下简称主库
Single Instance Primary
IP
Oracle
Instance
Data,Control File,Redo File
说明
192.168.204.131
单实例
ORCL
$ORACLE_BASE/oradata
RedHat5-Standby (standby, IP 192.168.204.132) ,以下简称从库。
Single Instance Standby
IP
Oracle
Instance
Data,Control File,Redo File
说明
192.168.204.132
单实例
ORCL
$ORACLE_BASE/oradata
Oracle Data Guard实施方案
4.2 系统硬件环境检查
4.2.1 检查内存相关项
检查服务器的内存,可以通过下列命令:
[root@localhost ~]# grep MemTotal /proc/meminfo
另外与内存相关的swap 交换分区的设置也很重要,通常有下列的规则:
实际内存 建议swap 交换空间大小
-------------- -----------------------------
1G-2G 1.5 倍于内存
2G-16G 与内存相同
超过16G 设置为16G 即可
查看当前服务器swap 交换分区大小,可以通过下列命令:
[root@localhost ~]# grep SwapTotal /proc/meminfo
查看系统当前共享内存,可以通过df 命令,例如:
[root@localhost ~]# df -h /dev/shm
4.2.2 查看系统架构
本步用来查看处理器的架构类型,需要确认ORACLE 安装包与处理器架构相符,不然安装时必然报错。查看当前系统的处理器架构可以通过下列命令:
[root@localhost ~]# uname –m
i686
4.2.3 检查磁盘空闲空间
首先/tmp 至少要有1g 的空闲空间,查看/tmp 的磁盘空间,也可以通过df 命令查看,例如:
[root@localhost ~]# df -h /tmp
在执行安装之前,建议执行df -h 命令,查看当前是否有充裕的空闲空间来安装和创建数据库。
[root@jssnode1 ~]# df –h
Oracle Data Guard实施方案
4.3 安装操作系统软件包
(32位 RedHat5.4)
binutils-2.17.50.0.6
compat-libstdc++-33-3.2.3
elfutils-libelf-0.125
elfutils-libelf-devel-0.125
elfutils-libelf-devel-static-0.125
gcc-4.1.2
gcc-c++-4.1.2
glibc-2.5-24
glibc-common-2.5
glibc-devel-2.5
ksh-20060214
libaio-0.3.106
libaio-devel-0.3.106
libgcc-4.1.2
libgomp-4.1.2
libstdc++-4.1.2
libstdc++-devel-4.1.2
make-3.81
sysstat-7.0.2
查看软件包是否已经安装:
[root@localhost ~]# rpm -aq binutils compat-libstdc++-33
[root@localhost ~]# rpm -aq | grep elfutils-libelf
[root@localhost ~]# rpm -aq | grep gcc
[root@localhost ~]# rpm -aq | grep glibc
[root@localhost ~]# rpm -aq | grep ksh
[root@localhost ~]# rpm -aq | grep libaio
[root@localhost ~]# rpm -aq | grep libgcc
[root@localhost ~]# rpm -aq | grep libgomp
[root@localhost ~]# rpm -aq | grep libstdc++
[root@localhost ~]# rpm -aq | grep make-3
[root@localhost ~]# rpm -aq | grep sysstat
[root@localhost ~]# rpm -aq | grep unixODBC
通过以上命令来查看是否有未安装的软件包,可将未安装的软件包放到~/rpm下,因有些包会相互依赖,最简单的方式是将rpm包下的软件包一起安装:
[root@localhost ~]#cd rpm
[root@localhost rpm]#pwd
/root/rpm
[root@localhost rpm]#ls
compat-libstdc++-
gcc-c++-
libstdc++-
Oracle Data Guard实施方案
[root@localhost rpm]#rpm –Uvh *
64位需安装的操作系统软件包
binutils-2.17.50.0.6
compat-libstdc++-33-3.2.3
compat-libstdc++-33-3.2.3 (32 bit)
elfutils-libelf-0.125
elfutils-libelf-devel-0.125
gcc-4.1.2
gcc-c++-4.1.2
glibc-2.5-24
glibc-2.5-24 (32 bit)
glibc-common-2.5
glibc-devel-2.5
glibc-devel-2.5 (32 bit)
glibc-headers-2.5
ksh-20060214
libaio-0.3.106
libaio-0.3.106 (32 bit)
libaio-devel-0.3.106
libaio-devel-0.3.106 (32 bit)
libgcc-4.1.2
libgcc-4.1.2 (32 bit)
libstdc++-4.1.2
libstdc++-4.1.2 (32 bit)
libstdc++-devel 4.1.2
make-3.81
sysstat-7.0.2
unixODBC-2.2.11
unixODBC-2.2.11 (32 bit)
unixODBC-devel-2.2.11
unixODBC-devel-2.2.11 (32 bit)
4.4 修改内核参数
下列将要进行配置的核心参数均拥有默认值(或者说最小值),需要对其进行配置的原因,是为了获得更好了性能,因此对于产品服务器来说,务必根据实际情况进行配置,不适当的值反倒可能适得其反。
使用vi 命令编辑/etc/ 文件,例如:
[root@localhost ~]# vi /etc/
将下列内容加入该文件:
-max-nr = 1048576
-max = 6815744
= 2097152
= 536870912
= 4096
= 250 32000 100 128
_local_port_range = 9000 65500
_default = 262144
_max = 4194304
_default = 262144
_max = 1048586
Oracle Data Guard实施方案
注意,某些参数可能已经存在于该文件,注意修改参数值即可。这里各参数所指定的值仅供参考,请根据实际情况进行修改,一般来说只需要对 这个参数的参数值进行修改即可,该参数建议修改为物理内存的一半(以字节为单位)。
编辑完之后存盘退出,然后运行下列命令重新加载并验证参数是否正确:
[root@jssnode1 ~]# sysctl -p
4.5 修改系统时间
修改主机与备机的系统时间一致
4.6 创建用户和组及安装目录并配置环境变量
创建用户和组:
[root@localhost ~]# groupadd oinstall
[root@localhost ~]#groupadd dba
[root@localhost ~]#useradd -g oinstall -G dba oracle
[root@localhost ~]#passwd oracle
验证nobody用户:
[root@localhost ~]#id nobody
创建Oracle的安装目录:
注: (因虚拟机环境安装Linux时没有手动分区,导致挂载点” /”空间不足,所以将oracle安装到了/home/db下,现场环境下Oracle应安装到/opt或单独分区)
[root@localhost ~]# cd /home
[root@localhost home]#mkdir db
改变文件系统/home/db的所有者为oracle,以便将Oracle安装到此目录
[root@localhost home]#chown oracle:oinstall db
切换到oracle用户,修改.bash_profile
[oracle@localhost ~]$ vi .bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
Oracle Data Guard实施方案
# User specific environment and startup programs
ORACLE_SID=orcl
ORACLE_BASE=/home/db/oracle
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export ORACLE_SID ORACLE_BASE ORACLE_HOME
export LD_ASSUME_KERNEL=2.6.18
export NLS_LANG="AMERICAN_16GBK"
umask 022
PATH=$PATH:/$ORACLE_HOME/bin:$HOME/bin
export PATH
4.7 安装Oracle数据库
本节略
Oracle Data Guard实施方案
5. 配置DataGuard过程
5.1 备注
“SQL>”:表示在sqlplus环境下执行,通常是以sysdba身份登录来执行命令
“$”或” [oracle@localhost ~]$”:表示在命令行中执行的命令
5.2 判断DataGuard是否安装
SQL>select * from v$option where parameter = 'Oracle Data Guard’;
5.3 网络配置
192.168.204.131(orcl)------------------------------------192.168.204.132(orcldg)
5.4 监听配置
主库
[oracle@localhost ~]$ cd $ORACLE_HOME/network/admin
[oracle@localhost admin]$ vi
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.204.131)(PORT = 1521))
)
)
SID_LIST_LISTENER =
(SID_LIST =
Oracle Data Guard实施方案
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(SID_NAME = orcl)
(ORACLE_HOME = /home/db/oracle/product/11.2.0/db_1)
)
)
注意:SID_LIST_LISTENER 配置的是静态注册,如果没有该参数,而且Data
Guard 启动顺序又不正确,那么在主库可能会报 PING[ARC1]: Heartbeat failed
to connect to standby 'orcl_st'. Error is 12514. 错误,导致归档无法完成。
[oracle@localhost admin]$ vi
ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.204.131)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
ORCLDG =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.204.132)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcldg)
)
)
备库
[oracle@localhost admin]$ vi
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.204.132)(PORT = 1521))
)
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
Oracle Data Guard实施方案
(GLOBAL_DBNAME = orcldg)
(SID_NAME = orcl)
(ORACLE_HOME = /home/db/oracle/product/11.2.0/db_1)
)
)
[oracle@localhost admin]$ vi
ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.204.131)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
ORCLDG =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.204.132)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcldg)
)
)
5.5 主库前期准备
设置强制写日志
SQL> select FORCE_LOGGING from v$database;
NO
SQL> alter database force logging;
SQL> select FORCE_LOGGING from v$database;
YES
Oracle Data Guard实施方案
5.6 创建口令文件并将文件传输到备库
在主库上创建密码文件,并将文件传到备库的相关位置
[oracle@localhost dbs]$ pwd
/home/db/oracle/product/11.2.0/db_1/dbs
[oracle@localhost bin]$ orapwd file=$ORACLE_HOME/dbs/orapworcl password=oracle
[oracle@localhost bin]$ cd $ORACLE_HOME/dbs/
[oracle@localhost dbs]$ ls
缺省情况下,win下口令文件的格式是,unix下的格式是orapwSID(大小写敏感)
传送文件:
[oracle@localhost dbs]$scp -cp orapworcl
oracle@192.168.204.132://home/db/oracle/product/11.2.0/db_1/dbs
orapworcl 100% 1536 1.5KB/s 00:00
[oracle@localhost dbs]$
5.7 创建备份库需要的控制文件并传输到备库
创建控制文件
SQL>shutdown immediate
SQL>startup mount;
SQL>alter database create standby controlfile as '/tmp/stdby_';
SQL>alter database open;
$scp -rp /tmp/stdby_
oracle@192.168.204.132://home/db/oracle/oradata/ORCL/controlfile/
$scp -rp /tmp/stdby_
oracle@192.168.204.132://home/db/oracle/flash_recovery_area/ORCL/controlfile/
-----------------------------------------------------------
手工复制几份(未执行)
$ cd /tmp/
$ cp sdtby_ stdby_
$ cp sdtby_ stdby_
Oracle Data Guard实施方案
----------------------------------------------------------------------------------------
5.8 修改主库初始化参数
创建主库pfile
sql > create pfile from spfile;
修改pfile
[oracle@localhost dbs]$vi
*.db_unique_name=orcl
*.log_archive_config='dg_config=(orcl,orcldg)'
*.log_archive_dest_1='location=/home/db/oracle/oradata/ORCL/archive
valid_for=(all_logfiles,all_roles) db_unique_name=orcl'
*.log_archive_dest_2='service=orcldg lgwr async
valid_for=(online_logfiles,primary_role) db_unique_name=orcldg'
*.log_archive_dest_state_1=enable
*.log_archive_dest_state_2=defer
*.log_archive_format=%t_%s_%
*.fal_server=orcldg
*.fal_client=orcl
*.standby_file_management=auto
pfile 拷贝到备库上
[oracle@localhost dbs]$scp –rp
/home/db/oracle/product/11.2.0/db_1/dbs/
oracle@192.168.204.132:/home/db/oracle/product/11.2.0/db_1/dbs/
创建主库spfile
SQL>Shutdown immediate
SQL>startup pfile='//home/db/oracle/product/11.2.0/db_1/dbs/'
SQL> create spfile from pfile='//home/db/oracle/product/11.2.0/db_1/dbs/';
SQL> shutdown immediate;
SQL > startup
5.9 修改数据库运行在归档模式下
SQL > SHUTDOWN IMMEDIATE;
SQL > STARTUP MOUNT;
Oracle Data Guard实施方案
SQL > ALTER DATABASE ARCHIVELOG;
SQL > ALTER DATABASE OPEN;
5.10 备份生产数据库
$scp -rp /home/db/oracle/oradata/ORCL oracle@192.168.204.132://home/db/oracle/oradata/
$scp –rp /home/db/oracle/admin/orcl oracle@192.168.204.132://home/db/oracle/admin
5.11 修改备库pfile
[oracle@localhost dbs]$vi
*.db_unique_name=orcldg
*.log_archive_config='dg_config=(orcldg,orcl)'
*.log_archive_dest_1='location=/home/db/oracle/oradata/ORCL/archive
valid_for=(all_logfiles,all_roles) db_unique_name=orcldg'
*.log_archive_dest_2='service=orcl lgwr async
valid_for=(online_logfiles,primary_role) db_unique_name=orcl'
*.log_archive_dest_state_1=enable
*.log_archive_dest_state_2=enable
*.log_archive_format=%t_%s_%
*.fal_server=orcl
*.fal_client=orcldg
*.standby_file_management=auto
*.control_files='/home/db/oracle/oradata/ORCL/controlfile/stdby_','/home/db/oracle/flash_recovery_area/ORCL/controlfile/stdby_'
5.12 在备库上创建spfile
sql>shutdown immediate
sql>create spfile from pfile;
Oracle Data Guard实施方案
5.13 启动物理备用数据库
SQL>startup nomount
SQL>alter database mount standby database;
5.14 配置Standby Redo Log
在两边都配置standby redo log
在主库查看日志组的数量和每个日志文件的大小
SQL> SELECT GROUP#, BYTES FROM V$LOG;
在备库库查看日志组的数量和每个日志文件的大小
SQL> SELECT GROUP#, BYTES FROM V$STANDBY_LOG;
在主备库创建日志组和redo log文件
SQL> ALTER DATABASE ADD STANDBY LOGFILE group
4('/home/db/oracle/product/11.2.0/db_1/dbs/') SIZE 50M;
SQL> ALTER DATABASE ADD STANDBY LOGFILE group 5
('/home/db/oracle/product/11.2.0/db_1/dbs/') SIZE 50M;
SQL>ALTER DATABASE ADD STANDBY LOGFILE group 6
('/home/db/oracle/product/11.2.0/db_1/dbs/') SIZE 50M;
SQL>ALTER DATABASE ADD STANDBY LOGFILE group
7('/home/db/oracle/product/11.2.0/db_1/dbs/') SIZE 50M;
备注:
删除日志组redo log文件的方法
SQL>ALTER DATABASE DROP STANDBY LOGFILE GROUP N;(N代表数字)
5.15 Start Redo Apply
在主数据库上设置DataGuard的保护模式.把主数据库启动到mount状态设置好DataGuard的保护模式.
SQL>alter system set log_archive_dest_state_2=ENABLE scope=both;
SQL>shutdown immediate;
SQL>startup mount;
SQL>alter database set standby database to maximize availability;
SQL>alter database open;
Oracle Data Guard实施方案
在备用数据库上启动日志传输
#实时应用日志
SQL>alter database recover managed standby database using current logfile disconnect from
session;
查看哪些归档日志被APPLY了
SQL>select sequence#,applied from v$archived_log order by sequence#;
在主库
强制日志切换到当前的online redo log file.
SQL>alter system archive log current;
在备库
查看新的被归档的redo data
SQL>
SELECT SEQUENCE#, FIRST_TIME, NEXT_TIME FROM V$ARCHIVED_LOG ORDER BY
SEQUENCE#;
在备库查看接收到的被应用的redo
SQL> select sequence#,applied from v$archived_log order by sequence#;
查看数据库的角色
SQL>select database_role,protection_mode,protection_level from v$database;
在主库查看日志传送情况
SQL> Select dest_name,status,error from v$archive_dest;
DEST_NAME STATUS ERROR
-------------------- --------- -------------------------------------------------
LOG_ARCHIVE_DEST_1 VALID
LOG_ARCHIVE_DEST_2 VALID
31 rows selected.
两个节点都正常。
验证同步情况
在主库切换日志:
SQL> alter system switch logfile;
Oracle Data Guard实施方案
System altered.
SQL> select sequence# from v$archived_log;
SEQUENCE#
----------
„
15
16
SQL> alter system switch logfile;
System altered.
SQL> select sequence# from v$archived_log;
SEQUENCE#
----------
„
17
18
在备库进行验证:
SQL> select sequence#,applied from v$archived_log;
SEQUENCE# APP
---------- ---
„
13 YES
4 NO
14 YES
15 YES
16 YES
18 NO
16 YES
Oracle Data Guard实施方案
17 YES
18 YES
19 YES
同步成功。 至此Oracle 的Data Guard 环境已经搭建完成。
5.16 DataGuard日常维护
在日常维护中,请严格按照以下顺序来操作:
启动顺序
启动的时候,先启动备库,然后启动主库。
一、启从、主库的监听Listener
从库orcldg:
$lsnrctl start
主库orcl:
$lsnrctl start
二、启动备库数据库,执行如下:
$sqlplus “/ as sysdba”
SQL> startup nomount
SQL> alter database mount standby database;
disconnect;
#让备库处于standby
#开始同步
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE
三、启动主库数据库(上述第二步执行完毕后,方可执行如下命令):
SQL>startup
Oracle Data Guard实施方案
关闭顺序
关闭的时候正好相反,先关闭主库,然后关闭从库。
关闭主库
CMD>su – oracle
CMD>sqlplus “/ as sysdba”
SQL>shutdown immediate;
关闭从库
telnet 120.4.7.50
su – oracle
CMD>sqlplus “/ as sysdba”
SQL>alter database recover managed standby database cancel; #停止同步
SQL>shutdown immediate
查看备库的数据
SQL>alter database recover managed standby database cancel;
SQL> alter database open read only;
Database altered.
SQL> select count(1) from user_tables;
…….
SQL操作完成后,需执行以下语句以令从库继续处于接收状态:
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE
disconnect;
5.17 主备库切换
1. 查看主库的状态:确认a是否可以做switch over
不能切换的情况
Oracle Data Guard实施方案
SQL>SELECT SWITCHOVER_STATUS FROM V$DATABASE;
SWITCHOVER_STATUS
------------------
SESSIONS
ACTIVE
在这种情况下,说明还有活动session,需要先kill掉,只留下当前sys进程
select sid,SERIAL# from v$session where sid>10;
SID SERIAL#
---------- ----------
12 14
17 3
查出当前连接session
SQL> select distinct from v$mystat ss;
杀掉其他session
SQL> alter system kill session '12,14';
System altered
可以切换的情况
SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;
SWITCHOVER_STATUS
--------------------
TO STANDBY
2.将主库切换至备用模式
SQL> alter database commit to switchover to physical standby with session shutdown;
3.关闭、装载主数据库
SQL> shutdown abort;
SQL> startup mount;
4.查看备库准备向主库模式切换
SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;
SWITCHOVER_STATUS
-----------------
TO PRIMARY
1 row selected
注:如果是TO PRIMARY表示可以正常切换,不过还会遇到NOT ALLOWED和PENDING或者LATENT,实际操作下来如果备库的switchover_status为not allowed或者to primary都可以正常切换
5.切换备库至主库模式
SQL> alter database commit to switchover to primary with session shutdown;
6.打开新的主数据库
SQL> ALTER DATABASE OPEN;
7. 在新的备库服务器上启动 REDO apply。
Oracle Data Guard实施方案
SQL> alter database recover managed standby database using current logfile
disconnect from session;
5.18 灾难恢复(failover)
Step 1 Flush any unsent redo from the primary database to the target standby
database
SQL> ALTER SYSTEM FLUSH REDO TO target_db_name;
Step 2 Verify that the standby database has the most recently archived redo log
file for each primary database redo thread.
SQL> SELECT UNIQUE THREAD# AS THREAD, MAX(SEQUENCE#) -
> OVER (PARTITION BY thread#) AS LAST from V$ARCHIVED_LOG;
SQL> ALTER DATABASE REGISTER PHYSICAL LOGFILE 'filespec1';
Step 3 Identify and resolve any archived redo log gaps.
SQL> SELECT THREAD#, LOW_SEQUENCE#, HIGH_SEQUENCE# FROM V$ARCHIVE_GAP;
SQL> ALTER DATABASE REGISTER PHYSICAL LOGFILE 'filespec1';
Step 4 Repeat Step 3 until all gaps are resolved.
Step 5 Stop Redo Apply.
Issue the following SQL statement on the target standby database:
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
Step 6 Finish applying all received redo data.
Issue the following SQL statement on the target standby database:
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH;
Step 7 Verify that the target standby database is ready to become a primary
database.
Step 8 Switch the physical standby database to the primary role.
Issue the following SQL statement on the target standby database:
Oracle Data Guard实施方案
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN;
Step 9 Open the new primary database.
SQL> ALTER DATABASE OPEN;
Step 10 Back up the new primary database.
Oracle recommends that a full backup be taken of the new primary database.
Step 11 Restart Redo Apply if it has stopped at any of the other physical standby
databases in your Data Guard configuration.
For example:
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE -
> DISCONNECT FROM SESSION;
附:
1. 启动到管理模式
SQL>shutdown immediate;
SQL>startup nomount;
SQL>alter database mount standby database;
SQL>alter database recover managed standby database disconnect from session;
2.启动到只读方式
SQL>shutdown immediate;
SQL>startup nomount;
SQL>alter database mount standby database;
SQL>alter database open read only;
3如果在管理恢复模式下到只读模式
SQL> recover managed standby database cancel;
SQL> alter database open read only;
版权声明:本文标题:Oracle11g_DataGuard配置方案 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1703291840h445749.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论