(1).检查数据库是否支持 Data Guard(企业版才支持),是否归档模式,Enable force logging
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = DG-Primary)(PORT = 1521))
)
)
ADR_BASE_LISTENER = /u01/app/oracle
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.122)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ora11g)
)
)
ORA11G_STANDBY =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.123)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ora11g)
)
)
(7)主库用修改过的PFILE 生产SPFILE
mkdir -p $ORACLE_BASE/oradata/ora11g
mkdir -p $ORACLE_BASE/admin/ora11g
mkdir -p $ORACLE_BASE/admin/ora11g/adump
mkdir -p $ORACLE_BASE/admin/ora11g/bdump
mkdir -p $ORACLE_BASE/admin/ora11g/cdump
mkdir -p $ORACLE_BASE/admin/ora11g/dpdump
mkdir -p $ORACLE_BASE/admin/ora11g/pfile
mkdir -p $ORACLE_BASE/admin/ora11g/udump
mkdir -p $ORACLE_BASE/diag/rdbms
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = DG-Standby)(PORT = 1521))
)
)
ADR_BASE_LISTENER = /u01/app/oracle
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.122)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ora11g)
)
)
ORA11G_STANDBY =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.123)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ora11g)
)
)
SQL>startup nomount
SQL>alter database mount standby database; #执行此命令后备库会处于手动恢复状态。
SQL>startup mount
启动standby database到recover manage模式
#执行此命令后,备库会切换到自动恢复模式。
切换standby database到read only模式
SQL>alter database open read only;
如果要切换回recover manage模式(启动日志应用或者启动日志实时应用)
SQL> alter database recover managed standby database disconnect from session; 启动日志应用
从库DG-Standby:
主库DG-Primary:
(2).启动备库数据库,执行如下:
$sqlplus /nolog
SQL> startup nomount
SQL> alter database mount standby database; #让备库处于standby
SQL> alter database recover managed standby database using current logfile disconnect from session; ; #开始实时同步
SQL> startup
.切换standby database到read only模式
SQL>alter database open read only;
如果要切换回recover manage模式(启动日志应用或者启动日志实时应用)
SQL> alter database recover managed standby database disconnect from session; 启动日志应用
SQL>startup
关闭顺序
关闭的时候正好相反,先关闭主库,然后关闭从库。
(1). 关闭主库
$su – oracle
SQL>sqlplus /nolog
SQL>shutdown immediate;
(2). 关闭从库
su – oracle
SQL>shutdown immediate
Switchover状态切换
SQL> alter database mount standby database; #让备库处于standby
SQL> alter database recover managed standby database using current logfile disconnect from session; ; #开始实时同步
应急切换
(注:模拟主库由于故障无法正常switchover,需要执行failover,强制备库->pridb并接管业务)
(1).备库:
由于是failover,所以理解主库这时候已经无法正常使用,只需备库切换至pridb
停止应用恢复模式
alter database recover managed standby database finish;
转换standbydb为primary db
alter database commit to switchover to primary;
重启数据库,恢复正常业务
SQL>shutdown immediate
SQL>startup
select open_mode,database_role from v$database;
OPEN_MODE DATABASE_ROLE
---------- ----------------
OPEN PRIMARY
Failover状态切换
在备库上进行切换:
1.首先停止备库的自动恢复状态:
SQL>alter database recover managed standby database finish;
如果没有使用过standby redo log的话执行:
SQL>alter database recover managed standby database finish skip standby logfile;
2.切换备库到主库:
SQL>alter database commit to switchover to primary;
3. 关闭数据库:
SQL>shutdown immediate;
4. 启动数据库:
SQL>startup;
Active状态切换:
Active是从8i延续过来的,其实不建议采用:
在备库上执行切换:
1:alter database recover managed standby database cancel;
2:alter database activate standby database;
3:shutdown immediate
总结一下Failover 和 Switchover 的区别:
在9i 的dataguad环境中:
1:执行Switch Over 必须是Primary 正常,并且是必须Primary 主动先Switch成 standby.然后standby 才能switch 成primary。
2:如果需要作成primary出问题,standby 能接管的话,必须作 failover ,而不是SwitchOver。
Failover :
将主数据库offline,备用数据库online,这种操作由系统和软件失败引起。 即使在备用数据库上应用重做日志,也可能出现数据丢失的现象,除非备用数据库运行在 guaranteed protection 模式。
原主数据库重新使用时必须重新启动实例。
其它的备用数据库也需重新启动实例。
Switchover :
故意将主数据库offline,而将另一备用数据库online,它能够切换到备用数据库而不需同步操作。如:可使用 Switchover 完成系统的平滑升级。 即使在备用数据库上不应用重做日志,也不会造成数据的丢失。
数据库不需重新启动实例。这使主数据库几乎能立即在备用数据库上恢复它的功能,因此可经常进行定期维护而不需中断操作。
Failover和Switchover的区别为:
当Failover发生,备用数据库切换为主数据库之后,它丢失了备用数据库的所有能力,也就是说,不能再返回到备用模式;而Switchover可以,备用数据库可切换为主数据库,也可从主数据库再切换回备用数据库。
四、相关视图
v$archive_dest
v$archive_dest_status
v$log_history
v$archvied_log
v$managed_standby
v$archive_gap
6、常见问题
至于本文设置主备库参数在此博客有详解http://www.cnblogs.com/Elliot-wang/p/3790878.html
来源:https://www.cnblogs.com/Elliot-wang/p/3790852.html