Maximum protection:零数据丢失。发生事务时需要同时向主数据库和备用数据写重做日志。
为了保证数据不丢失,如果有一个事务发现不能向备用数据写重做日志,那么主数据库会自
动关闭。
Maximum availability:在保证主数据库可用的情况下最大程度上保证数据的不丢失。同
Maximum protection 一样也是同时向主和备用数据库写重做日志。与 Maximum protection 不
同的时当发现不能向备用数据库写重做日志时不会关闭数据库,而是采用 Maximum
performance 的模式管理直到修复故障。
当发生第二次错误时至少要能够将重做日志写入到一个备用数据库中才能保证零数据丢失。
(多备用库的情况下。如果是一个备用库发生一次错误就会丢失数据)
Maximum performance:Oracle 默认采用这种方式。在不影响主库的性能的情况下最大程度
上保证数据不丢失。由于前两种方式要同时向主和备库写重做日志这就会给系统的性能带来
负面影响。当事务提交时会立即将数据写入到本地的联机日志中。主库的重做数据流
至少要写入到一个从库中,但是这个并不是与主库同时发生的。
如果采用了足够的带宽的话,这种模式提供的数据保护保证最大的可用性,同时对主库的性
能影响最小。
检查数据库是否支持 Data Guard,企业版才支持 Data Guard
SQL> select * from v$option where parameter = 'Managed Standby';
PARAMETER VALUE
-------------------- ----------
Managed Standby TRUE
SQL>
创建物理备用数据库的步骤:
一、强制主库产生日志,由于备库是采用归档日志恢复的,如果没有归档日志恢复无从谈
起。
SQL> ALTER DATABASE FORCE LOGGING;
二、创建备库的密码文件
D:>orapwd file=D:\oracle\product\10.2.0\db_1\database\PWDauxdb.ora password=oracle
entries=5;
创建实例
D:> oradim -NEW -SID auxdb -INTPWD D:\oracle\product\10.2.0\db_1\database\PWDauxdb.ora
-STARTMODE manual
三、修改主库的参数文件,并同步到 spfile
orcl.__db_cache_size=88080384
orcl.__java_pool_size=4194304
orcl.__large_pool_size=4194304
orcl.__shared_pool_size=67108864
orcl.__streams_pool_size=0
*.audit_file_dest='D:\oracle\product\10.2.0\admin\orcl\adump'
*.background_dump_dest='D:\oracle\product\10.2.0\admin\orcl\bdump'
*.compatible='10.2.0.1.0'
*.control_files='D:\oracle\product\10.2.0\oradata\orcl\CONTROL01.CTL','D:\oracle\product\10.2.
0\oradata\orcl\CONTROL02.CTL','D:\oracle\product\10.2.0\oradata\orcl\CONTROL03.CTL'
*.core_dump_dest='D:\oracle\product\10.2.0\admin\orcl\cdump'
*.db_block_size=8192
*.db_domain='
*.db_file_multiblock_read_count=16
*.db_name='orcl'
*.db_recovery_file_dest_size=2147483648
*.db_recovery_file_dest='d:\oracle\product\10.2.0\flash_recovery_area'
*.db_unique_name='orcl'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
*.job_queue_processes=10
*.log_archive_config='dg_config=(orcl,auxdb)'
*.log_archive_dest_1='location=D:\oracle\product\10.2.0\oradata\orcl\archive
VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orcl'
*.log_archive_dest_2='service=AUX VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
DB_UNIQUE_NAME=auxdb'
*.LOG_ARCHIVE_DEST_STATE_1=ENABLE
*.LOG_ARCHIVE_DEST_STATE_2=ENABLE
*.log_archive_max_processes=1
*.open_cursors=300
*.pga_aggregate_target=16777216
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=167772160
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='D:\oracle\product\10.2.0\admin\orcl\udump'
*.fal_service='aux'
*.fal_client='orcl'
*.standby_archive_dest='D:\oracle\product\10.2.0\oradata\orcl\standbyarchive'
*.standby_file_management=auto
四、创建备库的数据文件
查看主库数据文件列表
SQL> select file#,name from v$datafile;
FILE# NAME
----- ----------------------------------------------------
1 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
2 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF
3 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
4 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
5 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF
6 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\TEST01.DBF
已选择 6 行。
1)、将主库的数据文件 copy 到从库的路径下
SQL>ALTER DATABASE CREATE STANDBY CONTROLFILE AS 'd:\bak\standby.ctl';
然后关闭数据库将 file 1、2、3、4、5、6 copy 到 d:\bak 下。
或采用如下方法:
2)、采用 rman 将数据文件 copy 到备库中
C:\Documents and Settings\Administrator.XY>rman target/
恢复管理器: Release 10.2.0.1.0 - Production on 星期四 3 月 15 14:42:25 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
已连接到目标数据库: ORCL(DBID=1140649303, 未打开)
RMAN> copy datafile 1 to 'd:\bak\system01.dbf',datafile 2 to 'd:\bak\undotbs01.d
bf',datafile 3 to 'd:\bak\sysaux01.dbf',datafile 4 to 'd:\bak\users01.dbf',dataf
ile 5 to 'd:\bak\example01.dbf',datafile 6 to 'd:\bak\test01.dbf', current contr
olfile for standby to 'd:\bak\standby.ctl';
2>
启动 backup 于 15-3 月 -07
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=155 devtype=DISK
通道 ORA_DISK_1: 启动数据文件副本
。。。
通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:00:01
复制备用控制文件
输出文件名 = D:\BAK\STANDBY.CTL 标记 = TAG20070315T144240 recid = 40 时间戳 =
61
7294620
完成 backup 于 15-3 月 -09
RMAN>
打开数据库
SQL> ALTER DATABASE OPEN;
五、在备库中创建备库的重做日志
1)、maximum protection 和 maximum availability 模式必须要求有备库的重做日志。数据传
输模式建议采用 LGWR SYNC。
Data Guard 可以更多地采用备库的重做日志恢复,而不仅仅是采用归档日志恢复。
2)、确保从库的重做日志大小与主库的重做日志大小完全一致。
3)、创建合适的重做日志组数量。
从库的重做日志组至少要比主库多一组。
通常情况下一个实例对应一个 thread。
推荐采用如下公式来计算重做日志组的个数。
(maximum number of logfiles for each thread + 1) * maximum number of threads
采用这中方式可以减少由于备库重做日志不能被分配从而导致主库的日志读写进程
(LGWR)的阻塞。
例如:主库每个 thread 有两个日志组,那么备库应该有 6 个重做日志组。
添加从库的日志组。
SQL>alter database add standby logfile thread 1 'D:\oracle\product\10.2.0\oradata\orcl\redo04.log'
size 50m;
SQL>alter database add standby logfile thread 1 'D:\oracle\product\10.2.0\oradata\orcl\redo05.log'
SQL>alter database add standby logfile thread 1 'D:\oracle\product\10.2.0\oradata\orcl\redo06.log'
SQL>alter database add standby logfile thread 1 'D:\oracle\product\10.2.0\oradata\orcl\redo07.log'
size 50m;
4)、检查备用重做日志是否创建成功
在主库上执行
SQL>alter system switch logfile;
然后从库查询
SQL> SELECT GROUP#,THREAD#,SEQUENCE#,ARCHIVED,STATUS FROM
V$STANDBY_LOG;
GROUP# THREAD# SEQUENCE# ARC STATUS
---------- ---------- ---------- --- ----------
4 1 0 NO ACTIVE
5 1 0 YES UNASSIGNED
6 1 0 YES UNASSIGNED
7 1 0 YES UNASSIGNED
六、配置 listener.ora 和 tnsnames.ora。
listener.ora
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
(PROGRAM = extproc)
)
(GLOBAL_DBNAME = auxdb)
(ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
(SID_NAME = auxdb)
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(SID_NAME = orcl)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.199)(PORT = 1521))
)
tnsnames.ora
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.199)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
EXTPROC_CONNECTION_DATA =
(ADDRESS_LIST =
(SID = PLSExtProc)
(PRESENTATION = RO)
aux =
(SERVER = DEDICATED)
(SID = auxdb)
)
七、修改从库的 pfile,并将其同步到 spfile
从库:auxdb
initauxdb.ora
*.db_name=orcl
*.db_unique_name=auxdb
*.DB_FILE_NAME_CONVERT=('d:\oracle\product\10.2.0\oradata\orcl','d:\bak')
*.LOG_FILE_NAME_CONVERT=('d:\oracle\product\10.2.0\oradata\orcl','d:\bak')
*.control_files='D:\bak\standby.CTL'
*.REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
*.sga_target=250000000
*.background_dump_dest=d:\bak\bdump
*.core_dump_dest=d:\bak\cdump
*.user_dump_dest=d:\bak\udump
*.standby_archive_dest='d:\bak\standbyarchive'
*.fal_server='orcl'
*.fal_client='aux'
*.standby_file_management='AUTO'
*.log_archive_dest_1='location=D:\bak\archive VALID_FOR=(ALL_LOGFILES,ALL_ROLES)
*.LOG_ARCHIVE_DEST_2='SERVICE=orcl LGWR ASYNC
VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcl'
SQL> create spfile from pfile;
文件已创建。
SQL> startup mount;
ORACLE 例程已经启动。
Total System Global Area 251658240 bytes
Fixed Size 1248380 bytes
Variable Size 83886980 bytes
Database Buffers 163577856 bytes
Redo Buffers 2945024 bytes
数据库装载完毕。
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT
FROM SESSION;
数据库已更改。
验证是否成功:
主库:
SQL> ALTER SYSTEM SWITCH LOGFILE;
系统已更改。
从库:
SQL> SELECT SEQUENCE#, FIRST_TIME, NEXT_TIME FROM V$ARCHIVED_LOG
ORDER BY SEQUENCE#;
SEQUENCE# FIRST_TIME NEXT_TIME
---------- -------------- --------------
1 15-3 月 -07 15-3 月 -09
...
25 15-3 月 -07 15-3 月 -09
已选择 17 行。
系统已更改。
SQL> SELECT SEQUENCE#, FIRST_TIME, NEXT_TIME,APPLIED FROM
V$ARCHIVED_LOG ORDER BY SEQUENCE#
SEQUENCE# FIRST_TIME NEXT_TIME APP
---------- -------------- -------------- ---
1 15-3 月 -07 15-3 月 -09 NO
。。。
24 15-3 月 -07 15-3 月 -09 YES
25 15-3 月 -07 15-3 月 -09 YES
26 15-3 月 -07 15-3 月 -09 YES
已选择 18 行。
至此创建成功
八、下面进行主备数据库的切换测试。
1、查看主库上有没有设置 standby_archive_dest/standby_file_management 如果没有的话就需
要设置
SQL> alter system set
standby_archive_dest='D:\oracle\product\10.2.0\oradata\orcl\standbyarchive' scope=both;
SQL> alter system set standby_file_management='auto' scope=both;
SQL> show parameter standby
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
standby_archive_dest string D:\oracle\product\10.2.0\orada
ta\orcl\standbyarchive
standby_file_management string AUTO
2、查看切换状态,正常应该是 TO STANDBY
SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;
SWITCHOVER_STATUS
--------------------
SESSIONS ACTIVE
此时需要进行一些处理
查看都有那些 session 处于 active
SQL> SELECT SID, PROCESS, PROGRAM FROM V$SESSION WHERE TYPE = 'USER'
AND SID <>
(SELECT DISTINCT SID FROM V$MYSTAT);
SID PROCESS PROGRAM
---- ---------- ---------------
148 2660:2244 plsqldev.exe
154 2660:2244 plsqldev.exe
158 2660:2244 plsqldev.exe
1)、由于是 plsql 连接的,我们可以将其关闭
未选定行
TO STANDBY
此时就可以进行切换了。
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY;
2)、其它方法
更改 job_queue_processes 为 0
SQL> show parameter job_queue_processes
NAME TYPE VALUE
job_queue_processes integer 10
SQL> alter system set job_queue_processes=0;
通常会影响切换的进程有
进程名 描述 解决方法
CJQ0 job 队列进程 将 JOB_QUEUE_PROCESSES 动态改为 0,
但是不要改 spfile
QMN0 高级队列时间管理器 将 AQ_TM_PROCESSES 动态改为 0,但是
不要改 spfile
DBSNMP oem 的代理 执行 emctl stop agent 停止代理
此时必须执行以下语句切换。
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY WITH
SESSION SHUTDOWN;
3、将主数据切换为备用数据库
SESSION SHUTDOWN;
4、关闭数据库并以 mount 模式启动数据库
SQL> shutdown immediate
ORA-01507: 未装载数据库
ORACLE 例程已经关闭。
Total System Global Area 167772160 bytes
Fixed Size 1247900 bytes
Variable Size 75498852 bytes
Database Buffers 88080384 bytes
Redo Buffers 2945024 bytes
数据库装载完毕。
5、查看数据库切换后的状态
SQL> select t.PROTECTION_MODE,t.DATABASE_ROLE from v$database t;
PROTECTION_MODE DATABASE_ROLE
-------------------- ----------------
MAXIMUM PERFORMANCE PHYSICAL STANDBY
6、将备用数据切换到主数据库
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;
数据库已更改。
SQL> ALTER DATABASE OPEN;
SQL> select t.PROTECTION_MODE,t.DATABASE_ROLE from v$database t;
MAXIMUM PERFORMANCE PRIMARY
至此主备数据库的切换已经成功。
九、从 MAXIMUM PERFORMANCE 到 MAXIMUM PROTECTION 的切换。
SQL>select protection_mode from v$database;
PROTECTION_MODE
MAXIMUM PERFORMANCE
SQL>shutdown immediate;
SQL>startup mount
SQL> alter system set log_archive_dest_2='SERVICE=aux LGWR SYNC AFFIRM
VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=auxdb'
scope=both;
SQL>alter database set standby database to maximize protection;
SQL>alter database open;
SQL> select protection_mode from v$database;
MAXIMUM PROTECTION
模式切换的完全的语法如下:
ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE {PROTECTION |
AVAILABILITY | PERFORMANCE}
在切换测试中经常遇到问题:
ARC0 started with pid=15, OS id=2596
LGWR: Primary database is in MAXIMUM PROTECTION mode
LGWR: Destination LOG_ARCHIVE_DEST_2 is using asynchronous network I/O
LGWR: Destination LOG_ARCHIVE_DEST_1 is not standby database serviced by LGWR
LGWR: Minimum of 1 synchronous standby database required
Thu Mar 22 15:01:48 2007
Errors in file d:\oracle\product\10.2.0\admin\orcl\bdump\orcl_lgwr_2392.trc:
ORA-16072: a minimum of one standby database destination is required
ORA-16086: standby database does not contain available standby log files
出现该错误原因是:
1、primary database 的模式是 MAXIMUM PROTECTION
将其改为 maximum performance 即可
2、standby 缺少 standby redo
3、LOG_ARCHIVE_DEST_2 参数设置不正确
*.log_archive_dest_2='service=aux OPTIONAL LGWR SYNC AFFIRM
VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=auxdb'
尤其要注意是 SYNC 还是 ASYNC,这两个完全不同,一个是同步一个是不同步。
MAXIMUM PROTECTION 模式下 primary、standby 库的相互切换
1、查看 orcl 库的相关信息
orcl 库:
SQL> startup
Total System Global Area 167772160 bytes
Fixed Size 1247900 bytes
Variable Size 75498852 bytes
Database Buffers 88080384 bytes
Redo Buffers 2945024 bytes
数据库已经打开。
SQL> select protection_mode from v$database;
MAXIMUM PROTECTION
SQL> alter database commit to switchover to physical standby;
alter database commit to switchover to physical standby
*
第 1 行出现错误:
ORA-01093: ALTER DATABASE CLOSE 仅允许在没有连接会话时使用
错误原因:此时 orcl 库有连接的会话,将其关闭即可。
SELECT SWITCHOVER_STATUS FROM V$DATABASE
*
ORA-01507: 未装载数据库
Fixed Size 1247900 bytes
Variable Size 79693156 bytes
Database Buffers 83886080 bytes
查看 orcl 库的状态,已经成功的切换到备库。
PROTECTION_MODE DATABASE_ROLE
MAXIMUM PROTECTION PHYSICAL STANDBY
2、查看 auxdb 库的相关信息
auxdb 库:
准备将其切换到主库状态。
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;
ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY
ORA-16139: 需要介质恢复
SQL> alter database recover managed standby database;
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;
成功切换到主库状态。
MAXIMUM PROTECTION PRIMARY
打开数据库出错
SQL> alter database open;
alter database open
ORA-03113: 通信通道的文件结束
修改参数 log_archive_dest_2
*.log_archive_dest_2='SERVICE=orcl OPTIONAL LGWR SYNC AFFIRM
SQL> conn /as sysdba
已连接到空闲例程。
Total System Global Area 251658240 bytes
Fixed Size 1248380 bytes
Variable Size 83886980 bytes
仍然出错,错误如下:
alert_auxdb.log
Errors in file d:\bak\bdump\auxdb_lgwr_2040.trc:
Thu Mar 22 16:37:37 2007
LGWR: Error 16086 verifying archivelog destination LOG_ARCHIVE_DEST_2
Destination LOG_ARCHIVE_DEST_2 is UNSYNCHRONIZED
LGWR: Error 16086 disconnecting from destination LOG_ARCHIVE_DEST_2 standby host
'orcl'
LGWR: Continuing...
LGWR: Minimum of 1 applicable standby database required
Thu Mar 22 16:37:41 2007
由于以上的经验可以确定是从库没有 standby redo
3、在 orcl 库中创建 standby redo
SQL> alter database add standby logfile 'd:\oracle\product\10.2.0\oradata\orcl\r
edo04.log' size 50m;
edo05.log' size 50m;
edo06.log' size 50m;
edo07.log' size 50m;
SQL>
4、打开 auxdb 库
auxdb 库:
Variable Size 83886980 bytes
Database Buffers 163577856 bytes
SQL> select instance_name from v$instance;
INSTANCE_NAME
----------------
auxdb
MAXIMUM PROTECTION PRIMARY
至此切换已经成功。
十、参数说明:
COMPATIBLE='10.2.0.1.0':数据库版本号,主库与从库要统一,否则有可能 redo 的数据不能
从主库传送到从库。
DB_FILE_NAME_CONVERT=主库数据文件地址,从库数据文件地址:用于主从库在同一台
机器上或主从库数据文件的路径不一致的情况下
DB_UNIQUE_NAME=: 数 据 库 的 唯 一 名 称 。 推 荐 使 用 , 如 果 使 用 了
LOG_ARCHIVE_CONFIG,那么就必须有改参数。
FAL_CLIENT=,指向从库的服务名,本例为 aux
FAL_SERVER 指向主库的服务名,本例为 orcl
LOG_ARCHIVE_CONFIG='DG_CONFIG=(主库的 db_unique_name,从库的 db_unique_name)'
LOG_ARCHIVE_DEST_n:日志归档的地址,最少需要两个,一个指向主库,另一个指向从
库
LOG_ARCHIVE_DEST_STATE_n ={ENABLE|DEFER|ALTERNATE|RESET} 指定:enable or
disable 来决定是否传输 redo 的数据到从库中。
LOG_FILE_NAME_CONVERT:同 DB_FILE_NAME_CONVERT
STANDBY_ARCHIVE_DEST:指定路径存放接收从主库传输过来的归档日志。
STANDBY_FILE_MANAGEMENT={AUTO|MANUAL} :AUTO 当主库添加或减少数据文件
时会自动同步从库而不需要手动干预。
十一、经常遇到错误:
错误 1:
ORA-16057: DGID from server not in Data Guard configuration
原因:主库没有设置参数 log_archive_config
解决方法*.log_archive_config='dg_config=(orcl,auxdb)'
alter system set log_archive_config='dg_config=(orcl,auxdb)' scope=both;
错误 2:
PING[ARC0]: Heartbeat failed to connect to standby 'aux'. Error is 1031.
ORA-01031: insufficient privileges
解决问题思路:1、检查 sys 密码是否正确,大部分是这个原因。
2、Oracle 用户有写 standby_archive_dest 的权限
错误 3:
ORA-16025: parameter LOG_ARCHIVE_DEST_2 contains repeated or conflicting attributes
出 现 该 错 误 的 原 因 是 LOG_ARCHIVE_DEST_2='SERVICE=orcl LGWR ASYNC
VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcl'
db_unique_name 前少了一个空格导致的
十二、维护故障解决:
故障 1
由于网络等原因导致归档日志没有全部传输到从库中,这些需要我们手动干预。
常见因素:从库关闭、网络故障、从库空间不足等。
维护的通常步骤;关闭:先关主库后关从库,启动:先启动从库然后启动主库。
关于日志传输的控制可以通过 MANDATORY、REOPEN、MAX_FAILURE 来控制
MANDATORY REOPEN=5 MAX_FAILURE=3 每 5 秒重试一次,最大允许错误次数为 3 次,
如果重试 3 次仍然不能成功,那么主库的日志传输服务就会停止。
*.log_archive_dest_2='service=AUX VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
MANDATORY REOPEN=5 MAX_FAILURE=3 DB_UNIQUE_NAME=auxdb'
1、查找不在 standby 的日志。
SQL> SELECT MAX(R.SEQUENCE#) LAST_SEQ_RECD, MAX(L.SEQUENCE#)
LAST_SEQ_SENT FROM
2> V$ARCHIVED_LOG R, V$LOG L WHERE
3> R.DEST_ID=2 AND L.ARCHIVED='YES';
LAST_SEQ_RECD LAST_SEQ_SENT
------------- -------------
7 10
2、查找 primary 的所在路径
SQL> SELECT NAME FROM V$ARCHIVED_LOG WHERE THREAD#=1 AND DEST_ID=1
AND
2> SEQUENCE# BETWEEN 7 AND 10;
NAME
--------------------------------------------------------------------------------
/primary/thread1_dest/arcr_1_7.arc
/primary/thread1_dest/arcr_1_8.arc
/primary/thread1_dest/arcr_1_9.arc
3 、 将 日 志 copy 到 standby 的 STANDBY_ARCHIVE_DEST 下 , 将
STANDBY_ARCHIVE_DEST 的日志 copy 到 LOG_ARCHIVE_DEST 下
4、
SQL> STARTUP MOUNT
SQL> ALTER DATABASE RECOVER AUTOMATIC STANDBY DATABASE;
至此恢复成功。
故障 2:
归档日志之间经常产生 gap,还没有理解与故障 1 的区别,如有谁知道请告知。Mail:
1、确认归档日志之间有无遗漏
SQL> SELECT THREAD#, LOW_SEQUENCE#, HIGH_SEQUENCE# FROM
V$ARCHIVE_GAP;
THREAD# LOW_SEQUENCE# HIGH_SEQUENCE#
---------- ------------- --------------
1 90 92
2、将遗漏的归档日志 copy 到备库的 standby_archive_dest 下
然后对其分别注册
ALTER DATABASE REGISTER PHYSICAL LOGFILE 'filespec1';
3、恢复归档日志
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH FORCE;
4、然后就可以按切换步骤进行切换了。
本文转自 jxwpx 51CTO博客,原文链接:http://blog.51cto.com/jxwpx/196961,如需转载请自行联系原作者