分类: Oracle
2008-04-09 13:47:08
这篇之前在blog总结过,今天发在这里当处女贴,^_^根据以前做过的一些经验,查阅了些文档,把物理standby总结了一下.
首先介绍一些概念
重要的进程
一、开始做physical standby
1.1 主库上的准备工作
1、开启forced logging模式
2、开启归档模式和设置归档路径
3、为备库创建控制文件
4、验证主库的数据文件,利用主库的备份创建备库
5、修改tnsnames.ora,加入备库信息:
6.为备库创建参数文件,可利用主库的spfile生成pfile然后拷贝到备库
1.2 创建备用数据库
1、修改从主库拷贝的备库参数文件
一般只须加这些参数:
standby_archive_dest=’d:oradataarchive’
standby_file_management=AUTO
remote_archive_enable=true
fal_server=’orcl’
fal_client=’standby’
需要修改的一些参数:
control_files:修改指向备库的控制文件
standby_archive_dest:指向备库的归档日志目录(从主库接收归档日志)
db_file_name_convert:在目录结构改变时需要设置,格式为(’主库数据文件路径’,'从库数据文件路径’)
log_file_name_convert:在目录结构改变时需要设置,格式为(’主库日志文件路径’,'从库日志文件路径’)
log_archive_dest_1:应指向从库的归档日志目录
standby_file_management:设置为AUTO
remote_archive_enable:设置为TURE(测试中发现加上这条就无法生成spfile,可能是系统默认值不要设置)
instance_name:应该修改为从库的数据库实例名(如在同一主机时,备库肯定无法和主库相同,肯定要修改)
lock_name_space:设置为备库实例名
2、如果是windows平台,利用oradim创建windows服务
3、配置监听进程及tnsnames
以下是备库tnsnaes.ora
4、创建备库SPfile(由修改过的Pfile生成)
5、启动physical standby database
6、置于恢复状态
7、在主库上设置到备库的归档(在主库上操作)
1.3 验证physical standby database
当创建了物理备份数据库和设置日志传输服务,可在备份数据库上验证修改是否生效
1、查询现有归档日志
2、在主库上归档当前日志
3、验证新日志是否接收到(同步骤1)
4、验证是否新的归档Redo日志已经被应用
二、主备库切换
2.1 主库切到备库
1、 在主库
以备用模式启用原主库
2、 在备库
三、日常管理
3.1 关于启动关闭顺序
启动的时候,先从库的listener,再启动从库,再启动主库的listener,再主库
关闭的时候,先关闭主库,再启动从库。
3.2 检查当前Primary库的保护模式
3.3 转换数据库模式为MAX AVAILABILITY:
3.4 测试Primary的归档能否应用到Standby
查看主数据库日志是否全部传送到副数据库,可查看v$archive_gap,更简单的方法是查看各自主机的日志归档目录的日志序号即可
3.5 设置归档频率
如果要强制Primary一分种归档一次,那么设置Primary的初始化参数ARCHIVE_LAG_TARGET:
3.6 停止Standby
3.7 切换到只读模式
3.8 切换回管理恢复模式
3.9 哪些归档日志没有归档到备用库
假设local归档目录的ID为1,remote的归档目录为2。
3.10 注意事项:
1、如果在主库执行 alter database clear unarchived logfile或alter database open resetlogs ,则dataguard要重建。
2、在连续恢复模式下工作之前,需要保证之前所有的归档日志己经应用到备用库上。因为在连续恢复模式的情况下,oracle不会应用之前的归档日志,而只会应用后面陆续到来的归档日志。
3、出现归档日志gap时,需要找出相应的归档日志, 然后将这些归档日志copy到备用节点的standby_archive_dest和log_archive_dest目录下面。需要注意的是log_archive_dest目录下也需要copy。然后ALTER DATABASE RECOVER AUTOMATIC STANDBY DATABASE;
4、新建表、表空间、datafile都能通过日志应用到备库,但新建一个临时表空间,rename datafile 均不能应用到备库上.
5、应当实时察看standby库的alert文件,就能清晰明了地知道主备更新的情况。这也是排错的重要方法,切记!!
3.11 failover和switchover
Failover : 将主数据库offline,备用数据库online,这种操作由系统和软件失败引起。 即使在备用数据库上应用重做日志,也可能出现数据丢失的现象,除非备用数据库运行在 guaranteed protection 模式。 原主数据库重新使用时必须重新启动实例。 其它的备用数据库也需重新启动实例。
Switchover : 故意将主数据库offline,而将另一备用数据库online,它能够切换到备用数据库而不需同步操作。如:可使用 Switchover 完成系统的平滑升级。 即使在备用数据库上不应用重做日志,也不会造成数据的丢失。 数据库不需重新启动实例。这使主数据库几乎能立即在备用数据库上恢复它的功能,因此可经常进行定期维护而不需中断操作。 Failover和Switchover的区别为:当Failover发生,备用数据库切换为主数据库之后,它丢失了备用数据库的所有能力,也就是说,不能再返回到备用模式;而Switchover可以,备用数据库可切换为主数据库,也可从主数据库再切换回备用数据库。
3.12 相关视图
DBA_LOGSTDBY_EVENTS (Logical Standby Databases Only)
DBA_LOGSTDBY_LOG (Logical Standby Databases Only)
DBA_LOGSTDBY_NOT_UNIQUE (Logical Standby Databases Only)
DBA_LOGSTDBY_PARAMETERS (Logical Standby Databases Only)
DBA_LOGSTDBY_PROGRESS (Logical Standby Databases Only)
DBA_LOGSTDBY_SKIP (Logical Standby Databases Only)
DBA_LOGSTDBY_SKIP_TRANSACTION (Logical Standby Databases Only)
DBA_LOGSTDBY_UNSUPPORTED (Logical Standby Databases Only)
V$ARCHIVE_DEST
V$ARCHIVE_DEST_STATUS
V$ARCHIVE_GAP
V$ARCHIVED_LOG
V$DATABASE
V$DATAFILE
V$DATAGUARD_STATUS
V$LOG
V$LOGFILE
V$LOG_HISTORY
V$LOGSTDBY (Logical Standby Databases Only)
V$LOGSTDBY_STATS (Logical Standby Databases Only)
V$MANAGED_STANDBY (Physical Standby Databases Only)
V$STANDBY_LOG
--EOF--