SQL> alter system set log_archive_dest_1='location=/opt/oracle/flash_recovery_area' scope=spfile;
--/opt/oracle/flash_recovery_area为本地的归档目录,需要手动创建该目录,当然也可以指定别的路径。
注意oracle账号对该目录又可读写的权限。
SQL> alter system set log_archive_dest_state_1=enable scope=spfile;
--这个通常不用修改,系统默认的就是enable。
SQL>alter system set log_archive_dest_2='service=db2 valid_for=(online_logfiles,primary_role) arch async NOAFFIRM db_unique_name=db2' scope=spfile;
-----这里的service为主库连接到备库的服务名,后面会在tnsnames.ora文件中配置
valid_for参数说明这个归档日志目的地在本数据库为主库的角色下才需要把online_logfile传输到备库去。arch async NOAFFIRM说明的是同步的方式,同步的方式有三种:最大保护,最大性能,最大可用。
SQL> alter system set log_archive_dest_state_2=enable scope=spfile;
以上修改的是作为主库角色需要的参数,为了方便以后主备库切换,建议在主库中也配置作为备库角色的相关参数。
SQL> alter system set fal_server=db2 scope=spfile;
SQL> alter system set fal_client=db scope=spfile;
SQL> alter system set standby_file_management=auto scope=spfile;
生成静态参数文件,以备后面给备库使用。
SQL> create pfile from spfile;
重新启动主库,使参数生效。
6.DataGuard启动停止及维护:
DataGuard停止:先主后备
DataGuard启动:先备后主
7.DataGuard日常监控视图
a.主库查看日志归档路径是否可用,如果远程归档目录不可用则error会显示错误信息
SQL> select dest_name,status,error from v$archive_dest;
DEST_NAME STATUS ERROR
-------------------- -------------------- --------------------
LOG_ARCHIVE_DEST_1 VALID
LOG_ARCHIVE_DEST_2 VALID
LOG_ARCHIVE_DEST_3 INACTIVE
LOG_ARCHIVE_DEST_4 INACTIVE
LOG_ARCHIVE_DEST_5 INACTIVE
LOG_ARCHIVE_DEST_6 INACTIVE
LOG_ARCHIVE_DEST_7 INACTIVE
LOG_ARCHIVE_DEST_8 INACTIVE
LOG_ARCHIVE_DEST_9 INACTIVE
LOG_ARCHIVE_DEST_10 INACTIVE
10 rows selected.
如上记录则代表备库归档日志目录有效且正常
b.查询数据库的主备角色,以及当前DataGuard的运行模式,在主备查询结果不同
主库:
SQL> select database_role,LOG_MODE,PROTECTION_MODE,PROTECTION_LEVEL from v$database;
DATABASE_ROLE LOG_MODE PROTECTION_MODE PROTECTION_LEVEL
---------------- ------------ -------------------- --------------------
PRIMARY ARCHIVELOG MAXIMUM PERFORMANCE MAXIMUM PERFORMANCE
备库:
SQL> select database_role,LOG_MODE,PROTECTION_MODE,PROTECTION_LEVEL from v$database;
DATABASE_ROLE LOG_MODE PROTECTION_MODE PROTECTION_LEVEL
---------------- ------------ -------------------- --------------------
PHYSICAL STANDBY ARCHIVELOG MAXIMUM PERFORMANCE MAXIMUM PERFORMANCE
c.获取归档日志的应用情况,主备库结果不同。在主库上对于每个归档文件会有2条记录
SQL > select name,SEQUENCE#,APPLIED from v$archived_log order by sequence#;
备库:
/opt/oracle/flash_recovery_area/1_11_904130046.dbf 11 YES
/opt/oracle/flash_recovery_area/1_12_904130046.dbf 12 YES
/opt/oracle/flash_recovery_area/1_13_904130046.dbf 13 YES
/opt/oracle/flash_recovery_area/1_14_904130046.dbf 14 YES
/opt/oracle/flash_recovery_area/1_15_904130046.dbf 15 YES
/opt/oracle/flash_recovery_area/1_16_904130046.dbf 16 YES
/opt/oracle/flash_recovery_area/1_17_904130046.dbf 17 YES
/opt/oracle/flash_recovery_area/1_18_904130046.dbf 18 YES
/opt/oracle/flash_recovery_area/1_19_904130046.dbf 19 YES
/opt/oracle/flash_recovery_area/1_20_904130046.dbf 20 YES
/opt/oracle/flash_recovery_area/1_21_904130046.dbf 21 YES
/opt/oracle/flash_recovery_area/1_22_904130046.dbf 22 YES
/opt/oracle/flash_recovery_area/1_23_904130046.dbf 23 YES
/opt/oracle/flash_recovery_area/1_24_904130046.dbf 24 IN-MEMORY
如果有发现日志不连续,则需要对照主库的归档日志序列,判断是否有丢失的日志,如果有则需要手动注册日志并应用归档。
(方法:从主库的归档目录拷贝相应的归档
文件到备库上注册alter database register physical logfile '/opt/oracle/flash_recovery_area/归档文件名’;