Oracle 11g Active Data Guard搭建、管理(3)

1、开启force logging模式

SQL> alter database forcelogging;

SQL> select open_mode,log_mode,force_logging,flashback_on from v$database;

OPEN_MODE LOG_MODE FOR FLASHBACK_ON

---------- ------------ ---------------------------- ------------ --- ------

READ WRITE ARCHIVELOG YES NO

作用:不管什么操作都会生成redo日志,应该看到 force_logging 列为 YES。

特点:1.在数据库mount状态和open状态都可以启动forcelogging模式

2.临时表空间和临时回滚段动作不会生成redo日志

3. alter database noforce logging;关闭forcelogging

2、设置 db_unique_name参数

主、备库都必须设置为唯一,这个是DG里的标识,如果没有,使用 alter system 进行设置:

SQL> show parameter db_unique_name;

SQL> alter system set db_unique_name=orcl_primaryscope=spfile;

主库设置名为orcl_primary,备库设置为orcl_standby

3、让主库知道 Data Guard配置里的另外一个备库的名字

SQL> alter system set log_archive_config = 'dg_config=(orcl_primary,orcl_standby)';

4、配置归档位置和重做日志传输

SQL> alter system set log_archive_dest_1 = 'location=use_db_recovery_file_destvalid_for=(all_logfiles, all_roles) db_unique_name=orcl_primary';

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

5、配置重做日志传输到备库

SQL> alter system set log_archive_dest_2 = 'service=orcl_standby lgwr sync valid_for=(online_logfile,primary_role)db_unique_name=orcl_standby';

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

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

6、设置参数 FAL_SERVER

指定当日志传输出现问题时,备库到哪里去找缺少的归档日志。设置了这个参数,备库就会主动去寻找那些缺少的日志,并要求主库进行传输。

SQL> alter system set fal_server='orcl_standby';

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

7、当主库添加或删除数据文件时,这些文件也会在备库添加或删除。

启用此功能的方法如下:

SQL> alter system set standby_file_management=auto;

8、添加备用日志(standby redo

再次,我们要确认主库有备用日志文件(StandbyLog Files)。备库使用备用日志文件来来保存从主库接收到的重做日志。

主库上也建立备用日志文件有两个原因:一是主库可能转换成备库,备库需要备用日志,二是如果主库建了备用日志,备库会自动建。

备用日志应该跟在线日志一样大,组数应该至少跟在线日志一样多,或者更多。我喜欢给备用日志一个跟在线日志不同范围的编号,比如在线日志组是1到6,备用日志就是11到16。

SQL> alter database add standby logfilegroup 11 ('/data/Oracle/app/oracle/oradata/orcl/std_redo11.log') size100M;

SQL> alter database add standby logfilegroup 12 ('/data/oracle/app/oracle/oradata/orcl/std_redo12.log') size100M;

SQL> alter database add standby logfilegroup 13 ('/data/oracle/app/oracle/oradata/orcl/std_redo13.log') size100M;

查看redo 信息

SQL> select group#,type, member fromv$logfile;

9、重启数据库

SQL> shutdown immediate

SQL> startup

10、其它

SQL> alter system setlocal_listener='for_db';

11、创建主库主库pfile参数文件

SQL> createpfile='/home/oracle/initdg.ora' from spfile;

12、创建好了主库的 pfile后,将其复制到备库服务器

$ scp /home/oracle/initdg.ora 192.168.10.206:/home/oracle/

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

转载注明出处:https://www.heiqu.com/0daa89d8e248aa8f8e0e67d68181ff6c.html