- 什么是dataguard?
DataGuard 是Oracle自带的数据库同步技术,基本原理为将日志文件(Redo)从源数据库传输到目标数据库,然后再目标数据库上应用(apply)这些日志文件,从而使目标数据库和源数据库保持同步。 - 提供三种模式可选:
(1) 最大性能模式:不影响源数据库的性能,在这种模式下,一旦数据库写到源数据库的联机日志文件中,事务即可提交,不必等到了日志写到目标数据库。
(2) 最大保护模式:日志数据必须同时写到源数据库的联机日志文件和一个目标库的备用日志文件,事务才能提交。可确保数据零丢失,当目标数据库数据不可写时,关闭源数据库。
(3) 最大可用模式:正常处于最大保护模式,当目标数据库不能写日志时,则源数据库不关闭,改为最大性能模式,当目标数据库可写后,转化为最大保护模式。 - 根据目标数据库上Apply方式不同:
(1) Physical Standby(Redo Apply):通过介质恢复的方法与Oracle保持同步,优点是DDL操作也可以同步包括数据文件的创建等。数据库不可用。或者在间歇过程中以只读方式打开,进行数据查询,然后恢复到日志应用模式下。
(2) Logical Standby(SQL Apply):数据库处于打开模式,通过LogMiner挖掘传输过来的日志,构造成Sql语句,然后再目标库执行,从而与源数据库保持同步。 - DataGuard的缺点:
(1) 传输整个日志,因此需要很大的带宽,可能浪费三倍以上的带宽。
(2) Physical Standby 使数据库不可用,即使可以查询但是会使Oracle的同步停止。
(3) Logical Standby 不能支持DDL操作。
(4) 不支持一对多复制,不支持双向复制。
(5) 只能复制整个数据库,不能选择某个schema或表空间单独复制。
(6) 不支持异构的环境,必须是相同的操作系统以及相同的数据库版本。 - 主要用于高可用灾难恢复环境
1、打开主库DB系统强制归档
Shutdown immediate;
startup mount;
alter database forcelogging;
alter database open;
selectforce_logging,guard_status from V$database;
2、在备库上安装与主库一样版本Oracle Software
opatch lsinventory
3、在备库上使用NETCA配置好监听
4、在主备库上配置TNSNAMES.ORA
PRDBCSP =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST =prdbcsp)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = prdbcsp)
)
)
STBBCSP =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST =stbbcsp)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)