======================================================================
8i Standby init parameter configuration .
======================================================================
## The following parameters are the HA parameters needed for Standby Database on primary side
LOG_ARCHIVE_START=TRUE
LOG_ARCHIVE_FORMAT = "%t_%s.arc"
LOG_ARCHIVE_DEST_1='LOCATION=/data/umlaut/arch'
LOG_ARCHIVE_DEST_STATE_1=ENABLE
LOG_ARCHIVE_DEST_STATE_2=ENABLE
LOG_ARCHIVE_DEST_2='SERVICE=standby OPTIONAL REOPEN=60'
LOG_ARCHIVE_MIN_SUCCEED_DEST=1
## The following parameter are the HA parameters needed for Standby Database on standby side
LOG_ARCHIVE_START=TRUE
LOG_ARCHIVE_FORMAT = "%t_%s.arc"
LOG_ARCHIVE_DEST_1='LOCATION=/stby/umlaut/arch'
LOG_ARCHIVE_DEST_STATE_1=ENABLE
LOG_ARCHIVE_DEST_STATE_2=ENABLE
STANDBY_ARCHIVE_DEST='/stby/umlaut/arch'
LOG_ARCHIVE_MIN_SUCCEED_DEST=1
======================================================================
9i/10g Standby init parameter configuration .
======================================================================
9i/10g Primary DB:
# for oracle9i standby .
*.log_archive_dest_state_1=enable
*.log_archive_dest_state_2=enable
*.log_archive_dest_2="service=standby optional reopen=60"
*.log_archive_min_succeed_dest=1
-------------------
9i/10g Standby DB:
# for oracle9i standby .
*.log_archive_dest_state_1=enable
*.log_archive_dest_state_2=enable
*.standby_archive_dest="/data/acer/arch"
*.db_file_name_convert=("/data/acer","/data/acer")
*.log_file_name_convert=("/u01/product/oradata/acer","/u01/product/oradata/acer")
*.log_archive_trace=0
*.log_archive_min_succeed_dest=1
*.standby_file_management=AUTO
*.remote_archive_enable=TRUE
*.fal_server='acer'
*.fal_client='standby'
======================================================================
8i Standby Windows 下的sqlnet设置问题 .
======================================================================
8i Standby Server操作系统应该是Windows系统,那么使用arch自动传输模式(以上
参数),需要在standby上sqlnet.ora中注释掉
# SQLNET.AUTHENTICATION_SERVICES= (NTS)
因为这个设置会导致需要primary db通过standby的OS认证才能以sysdba的身份登入
到standby中,而primary db不知道standby windowsServer的管理员密码(除非两台
机器administrator密码一样)。
9i/10g 没有这些问题。
======================================================================
9i/10g Standby parameter 说明1 :fal_server,fal_client
======================================================================
fal_server与fal_client
这两个参数是9i的新参数,指明了自动日志同步,在以前的环境中(如8i),只有手工解
决日志差异,但是9i的这两个参数可以自动检测并解决日志差异。Oracle8i 没有这些参数,
由于一些问题导致的arch gap 需要手工拷贝然后恢复,由于8i Standby设置了
# SQLNET.AUTHENTICATION_SERVICES= (NTS) 【注释掉了】,
所以不能以 sqlplus internal登入执行恢复动作 。请注意。
例如:
fal_server='primary'
fal_client='standby'
其中primary与standby必须是连接到主数据库与备用数据库的连接
standby_file_management
这个参数也是9i的新参数,可以自动同步数据文件。
例如: standby_file_management=auto
======================================================================
9i/10g Standby parameter 说明2:
======================================================================
Standby上的 LOG_ARCHIVE_DEST_1和 standby_archive_dest
如果创建了standby redo log那么online redo log将不需要转化为archived文件就可以传输到备机(LGWR),
这样的话(LGWR方式),这些standby redo log在Standby上需要归档,用到standby上设置的参数log_archive_dest。
所以Standby上的 log_archive_dest 或 log_archive_dest_1 是standby 以lgwr方式传输的时候standby上的
online redo log 生成的archived log 文件存放点。一般Oracle建议这两个参数设置同样的值。
Standby默认的arch传输方式,primary会远程将archived log传输到standby_archive_dest下 。
LOG_ARCHIVE_DEST_1和 standby_archive_dest
STANDBY_ARCHIVE_DEST is used when logs are transmitted automatically from the
primary database. We use this parameter to determine where these logs should
be placed.
LOG_ARCHIVE_DEST is the location where we look for logfiles by default when
recovering the standby database. It is recommended to set the values of
STANDBY_ARCHIVE_DEST and LOG_ARCHIVE_DEST to the same values in most cases.
======================================================================
Standby上的开启关闭注意点 .
======================================================================
关闭开启Primary 以及 Standby一般步骤:
关闭: 先关闭Primary DB , 然后Standby DB.
开启: 先开启Standby DB , 然后Primary DB.
不过有时候出现问题点,生产期间只能关闭Standby DB ,那么就只能直接关闭Standby
, 而不能先关闭正在使用的Primary DB . 这个时候产生两个问题:
8i 情况: 如果关闭期间primary db上产生了归档,那么需要手工拷贝,恢复。
9i/10g 情况: 一般设置了fal_server ,fal_client 不需要手工拷贝,standby启动后自动传输应用。
但是偶尔也有一些问题点,需要手工拷贝,并register,详细参考后面的standby问题
点处理。
對于設定了自動傳輸歸檔模式的standby,其standby開啟步驟為:
1. 開啟standby監聽;
2. sqlplus '/as sysdba'登陸并執行
startup nomount;
alter databae mount standby database;
recover managed standby database disconnect ;
需要重啟standby機器,則步驟為:
1. sqlplus '/as sysdba'登陸并執行
alter database recover managed standby database cancel ;
shutdown immediate;
2. 關閉監聽。
======================================================================
Standby上的各种特殊后台进程 .
======================================================================
工作原理参考: http://space.itpub.net/35489/viewspace-405012
SQL> select process,status from v$managed_standby; 【Standby上】
PROCESS STATUS
--------- ------------
ARCH CONNECTED
ARCH CONNECTED
RFS RECEIVING
MRP0 WAIT_FOR_LOG
RFS ATTACHED
说明:
ARCn
当standby使用online redo的时候,也就是maximum protection或maximum availability模式下,ARCn用于归档。
MRP (Managed Recovery Process)就是管理恢复进程, 如果没有MRP进程,说明你的备库没有处于恢复状态, 没有开启
为
recover managed standby database状态 ; 可以使用 alter database recover managed
standby database disconnect from session ;开启为自动恢复应用归档模式。 Physical Standby DB Only .
RFS (Remote File Server) 接受由primary数据库的lgwr或arch通过oracle net传来的redo 数据,
写入standby redo logs或standby archived redo logs
FAL(fetch archive log): 在primary和standby数据库的两端同时配置。Primary端是fetch archive log
server,standby
端是fetch archive log client. FAL是自动探测primary/standby数据库之间archived logs是否有有间隔(gap)的一个
进程。
Physical Standby Database Only .
LSP (Logical standby process)(For logical standby databases only): 用SQL接口把归档应用到logical
database
DMON (Data Guard broker monitor) :用于监控数据库的状态,管理log transport services and log apply
services
On the primary and standby locations, the Data Guard broker使用DMON进程 .
On primary database:
Data Guard除了以上传统的Arch日志传送过程外,还可以采用联机日志(LGWR)的传送,在备用端(Standby)建议
创建一组备用日志,并保持与主数据库备用日志相同大小,而且最好比主数据库的联机日志多一组以上。如果LGWR
传送日志,但是不在备用端创建备用日志的话,联机日志将自动写到备用端的归档日志中。即使是用LGWR进行日志
的传输,备用库的online redo log的内容是不能马上被应用的,必须当归档完成后才由MRPn进程应用到备用数据库
,所以说,恢复不是连续的,但是,传送过程可以是连续的。即使备用数据库不是在归档的模式,所有的在线日志
还是会进行归档的操作,前提是ARCn进程必须打开。
======================================================================
常用的几个Standby View :
======================================================================
v$managed_standby和日志传输,接收,应用有关 .
v$archive_gap 主要可以用来查看备库丢失了那些日志.
v$archive_dest 如果日志无法传送,可以查看v$archive_dest;
v$archive_dest_status视图可以查看备库的状态,保护模式,归档日志路径状态
v$archived_log可以查看日志的一些信息 ,包括日志名字,应用时间,是否应用
======================================================================
Standby问题处理 :
======================================================================
是否被应用应该在STANDBY查询最准确(错误会在standby alert log中出现)
SQL> select dest_name,status,error from v$archive_dest;
DEST_NAME
--------------------------------------------------------------------------------
STATUS ERROR
--------- -----------------------------------------------------------------
LOG_ARCHIVE_DEST_1 VALID
LOG_ARCHIVE_DEST_2 ERROR ORA-12540: TNS:internal limit restriction exceeded
======================================================================
如果Oracle9i,10g Standby上因为某些问题导致出现gap 而又不能在问题恢复之后正常传输到
Standby上,那么需要手动拷贝归档到Standby上,然后
ALTER DATABASE REGISTER [OR REPLACE] [PHYSICAL | LOGICAL] LOGFILE filespec;
对于每一个手工拷的日志都需要注册一下, 如果是Physical Standby, 命令为:
ALTER DATABASE REGISTER OR REPLACE PHYSICAL LOGFILE '文件路径'; 写Standby控制文件。
======================================================================
--------------------------------------------------
实例操作:
归档日志之间经常产生 gap,
1、Standby 确认归档日志之间有无遗漏
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 LOGFILE 'filespec1';
3、在备库上恢复归档日志
SQL> ALTER DATABASE RECOVER AUTOMATIC STANDBY DATABASE ;
4、如果有关闭Standby,那么需要重新开启为managed 恢复模式。
SQL> startup nomount;
SQL> alter databae mount standby database;
SQL> recover managed standby database disconnect;
==========================================================
Dataguard 常用维护手册
==========================================================
Start Standby Database
startup nomount
alter database mount standby database;
alter database recover managed standby database disconnect;
Disable/Enable archive log destinations
alter system set log_archive_dest_state_2 = 'defer';
alter system set log_archive_dest_state_2 = 'enable';
To remove a delay from a standby
alter database recover managed standby database cancel;
alter database recover managed standby database nodelay disconnect;
Stop and Start of Logical standby apply
alter database stop logical standby apply;
alter database start logical standby apply;
Physical Standby switchover:
In Primary Database:
ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY;
SHUTDOWN IMMEDIATE;
STARTUP NOMOUNT;
ALTER DATABASE MOUNT STANDBY DATABASE;
In standby Database:
ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;
SHUTDOWN IMMEDIATE;
STARTUP;
In Primary Database:
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
If the primary Database is down,we can use fllowing step to active standby database:
Alter DATABASE RECOVER MANAGED STANDBY DATABASE FINISH;
Alter DATABASE COMMIT TO SWITCHOVER TO PRIMARY;
SHUTDOWN IMMEDIATE;
STARTUP;
Register missing archive log file
Find archive log gap by query:
SELECT THREAD#, LOW_SEQUENCE#, HIGH_SEQUENCE# FROM V$ARCHIVE_GAP;
register using:
ALTER DATABASE REGISTER PHYSICAL LOGFILE 'filespec1';
from:http://tolywang.itpub.net/post/48/479554