Oracle 11g Data Guard 物理备库快速配置指南(2)

FLASHBACK_ON 这列的值应该是 YES。如果你碰到 ORA-01153 报错,那一定是在备库进行此操作。你需要先取消重做日志应用,启用闪回日志,然后重新启用日志应用。

在主库启用闪回日志,不会同步备库也启用。你必须手动在主库和备库上均启用闪回日志。如果不启用闪回日志,当出现故障转移时,你将需要完全重新开始创建一个备库。

SQL*NET 配置
在创建备库前,要确认两台服务器的数据库之间能通信,如果我们要用 RMAN 的 duplicate from active database 命令创建备库的话。我们需要配置监听和 TNS 名。你可以手动配置,也可以使用网络配置工具(netca)。我更喜欢手动配置,因为我比较老派,并且这些配置文件又不复杂,

首先需要配置主备库的监听。虽然数据库会自动注册监听,但如果要使用 RMAN 的 duplicate 命令创建备库,备库必须首先处于 NOMOUNT 状态。在 NOMOUNT 状态下,数据库实例不会自动注册监听,你必须配置静态监听。另外必须要注意的一点是,NOMOUNT 状态下的数据库必须使用专用模式(dedicated server)连接。

两台服务器上的 TNS 名字文件必须配置好,让主备库能用 LOG_ARCHIVE_DEST_N 和 FAL_SERVER 参数(稍后会介绍这些参数)中的服务名(Service Names)找到对方。具体配置应类似下例。

主库(dev-db1)的监听配置:

SID_LIST_LISTENER=
    (SID_LIST =
        (SID_DESC =
            (GLOBAL_DBNAME = JED)
            (ORACLE_HOME = /oracle/product/11.2.0)
            (SID_NAME = JED)
        )
    )

备库(dev-db2)的的监听配置:

SID_LIST_LISTENER=
    (SID_LIST =
        (SID_DESC =
            (GLOBAL_DBNAME = JED2)
            (ORACLE_HOME = /oracle/product/11.2.0)
            (SID_NAME = JED2)
        )
    )

主库的 TNS 名字文件配置:

JED2 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = dev-db2)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = JED2)
    )
  )

备库的 TNS 名字文件配置:

JED =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = dev-db1)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = JED)
    )
  )

重做日志传输配置
现在主备库之间依旧可以互相通信了,下一步是配置归档位置和重做日志传输。我们将先在主库上进行配置,然后等备库创建好后,修改备库的配置。

配置归档位置:

SQL> alter system set log_archive_dest_1 = 'location=use_db_recovery_file_dest valid_for=(all_logfiles, all_roles) db_unique_name=JED';

这个命令指定快速恢复区作为归档位置,此归档位置用于在所有数据库角色下归档所有的日志文件。官方文档里说使用 valid_for=(online_logfiles, all_roles),这将导致备库无法归档备用日志文件,因为它们不是在线日志。但如果使用 all_logfiles 选项,主备库将都能归档在线以及备用日志。如果你想在备库进行备份,并同时备份归档日志的话,必须使用 all_logfiles。

然后配置重做日志传输到备库:

SQL> alter system set log_archive_dest_2 = 'service=JED2 async valid_for=(online_logfile,primary_role) db_unique_name=JED2';

这条语句说,如果这是主库,就使用服务名 JED2 传输在线日志,目标库名叫 JED2。

要注意STANDBY_ARCHIVE_DEST 参数不需要,已经被官方弃用。当调试时,不少人好心建议我设置此参数,但设置此参数后启动数据库,只会报 ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance 错。

另一个要设置的参数是 FAL_SERVER。这个参数指定当日志传输出现问题时,备库到哪里去找缺少的归档日志。它用在备库接收的到的重做日志间有缺口的时候。这种情况会发生在日志传输出现中断时,比如你需要对备库进行维护操作。在备库维护期间,没有日志传输过来,这时缺口就出现了。设置了这个参数,备库就会主动去寻找那些缺少的日志,并要求主库进行传输。

SQL> alter system set fal_server = 'JED2';

注意 FAL_CLIENT 参数在11g里已经弃用。

然后我们要让主库知道 Data Guard 配置里的另外一个库的名字:

SQL> alter system set log_archive_config = 'dg_config=(JED,JED2)';

这一步做完后,我们就可以准备好备库的环境,并开始创建备库了。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/5ba46ddbb6f3e091f4fbff1203b03529.html