DG常用运维命令及常见问题解决

来源:这里教程网 时间:2026-03-03 14:20:08 作者:

DG常见运维命令及常见问题解决方法 l> DG库启动、关闭标准操作 Dataguard关闭 1)、先取消日志应用 alter database recover managed standby database cancel; 2)、正常关闭DG库 Shutdown immediate; Dataguard开启 1)、数据库先启动到nomount状态 startup nomount; 2)、然后数据库在启动到standby mount状态 alter database mount standby database; 3、最后开启日志应用 alter database recover managed standby database  disconnect from session using current logfile;   2> DG监听、TNS配置及说明 1、 监听、TNS配置路径 $ORACLE_HOME/network/admin 2、 监听配置 SID_LIST_oradb =   (SID_LIST =     (SID_DESC =       (GLOBAL_DBNAME = oradb)       (ORACLE_HOME = $ORACLE_HOME)       (SID_NAME = oradb)     )   ) oradb =   (DESCRIPTION =     (ADDRESS = (PROTOCOL = TCP)(HOST = ip )(PORT = 1521))   )   3、 TNS配置 oradb_primary =   (DESCRIPTION =     (ADDRESS_LIST =       (ADDRESS = (PROTOCOL = TCP)(HOST = primary_ip)(PORT = 1521))     )     (CONNECT_DATA =       (SERVICE_NAME = oradb)     )   ) oradb_standby =   (DESCRIPTION =     (ADDRESS_LIST =       (ADDRESS = (PROTOCOL = TCP)(HOST = standby_ip)(PORT = 1521))     )     (CONNECT_DATA =       (SERVICE_NAME = oradb)     )   )   3> DG归档文件系统使用率100%解决办法 1、 查看归档目录 例如:/oradb/db_dg_arc/oradb 2、 查询归档目录使用情况 AIX      (df -g) HPUX    (bdf) Linux     (df -h) 3、 手动清理归档日志步骤 (1)、登陆数据库实例查询最新日志应用号 select PROCESS,STATUS,SEQUENCE#,BLOCKS from V$MANAGED_STANDBY; 用SEQUENCE#去和主库对 MRP0为日志应用进程 RFS为日志传输进程 PROCESS   STATUS        SEQUENCE#     BLOCKS --------- ------------ ---------- ---------- ARCH      CLOSING          116489       1063 ARCH      CONNECTED             0          0 ARCH      CLOSING          116491        200 ARCH      CLOSING          116490       1642 MRP0      APPLYING_LOG     116492      4194304   (2)、查看是否部署了删除归档日志脚本,如果存在,手工执行脚本删除过期日志 (3)如果删除脚本不存在,首先手工删除部分应用过的日志,再部署自动删除归档日志脚本 4> DG GAP问题分析解决办法 1、 查询GAP SQL> select PROCESS,STATUS,SEQUENCE#,BLOCKS from V$MANAGED_STANDBY; PROCESS   STATUS        SEQUENCE#     BLOCKS --------- ------------ ---------- ---------- ARCH      CLOSING          511899       1971 ARCH      CLOSING          511892        308 ARCH      CLOSING          511895       1399 ARCH      CLOSING          511887       1404 ARCH      CONNECTED             0          0 ARCH      CLOSING          511900       1591 MRP0      WAIT_FOR_GAP     511901          0 RFS       IDLE                  0          0   2、 GAP原因分析 (1)、归档空间满,日志无法传输 (2)、网络延迟导致日志传输速度慢 (3)、DG监听没有启动导致日志无法传输 (4)、DG本身日志缺失 (5)、DG库宕机故障 3、 常规GAP解决办法 DG备库GAP恢复操作过程:     1) 在主库查找所缺日志的备份片 select 'catalog device type '|| '''SBT_TAPE''' ||' backuppiece ''/'||HANDLE||''';' from   (select distinct a.HANDLE  from v$backup_piece_details a, v$backup_archivelog_details b   where set_count = id2 and b.thread#=1  and b.SEQUENCE# >缺失的sequence号 and b.SEQUENCE#<缺失的sequence号) ; 2)、在DG库上注册备份集 rman target / configure CHANNEL device type 'SBT_TAPE' PARMS 'ENV=(NB_ORA_CLIENT=主机名)'; catalog device type 'SBT_TAPE' backuppiece '/al_XXXXXXXXXXXXXXXXX'; 3)、注册完了 第一个配置的参数清除下 CONFIGURE CHANNEL DEVICE TYPE 'SBT_TAPE' CLEAR;     使用oracle用户rman target / RMAN>catalog start with '归档路径';  3)检查日志是否开始应用 l DG库ORA-01111错误处理 1、 问题描述:主库添加数据文件,DG库同步时发现无法同步添加导致报错 2、 问题原因: 1) DG库standby_file_management参数没有设置为auto 2) DG库对应文件系统剩余空间不足以添加数据文件 3、解决办法:   如果主备文件系统剩余空间不一致,先清理目标目录的历史文件(如归档日志、dmp包等) alter system set standby_file_management=manual; alter database create datafile '/u01/oracle/product/db11gr2/dbs/UNNAMED00070' as '/oradb/datafile/oradb/oradb.dbf'; alter system set standby_file_management=auto; 打开应用: alter database recover managed standby database  parallel  4 disconnect from session;   5> DG库上归档出现ORA-03113错误 SQL> select dest_name,status,error from v$archive_dest; DEST_NAME                     STATUS                        ERROR ------------------------------ -------------------------------------- LOG_ARCHIVE_DEST_1           VALID LOG_ARCHIVE_DEST_2      ERROR          ORA-03113: end-of-file on   communication channel 解决办法:在主库执行 SQL> alter system set log_archive_dest_state_2= enable; 这个命令式手动触发主库区尝试连接备库。 其实这种情况下,只要保证主备库之间的网络和配置是正确的。dataguard会自动恢复这个错误。这个周期默认是300秒, 也可以在log_archive_dest_1的参数中添加reopen参数指定这个主备库之间失败后继续尝试的周期   2、 ORA-01031: insufficient privileges错误 SQL> select dest_name,status,error from v$archive_dest; DEST_NAME                     STATUS                        ERROR ---------------------- ----------------------------------------------- LOG_ARCHIVE_DEST_1            VALID LOG_ARCHIVE_DEST_2            ERROR             ORA-01031: insufficient Privileges 解决办法:统一主备库的数据库密码文件,或者重建密码文件,sys密码设置成一样。 然后在主库执行 SQL> alter system set log_archive_dest_state_2= enable;   3、 ORA-16191: Primary log shipping client not logged on standby   SQL> select dest_name,status,error from v$archive_dest; DEST_NAME                     STATUS                        ERROR ------------------------------ ----------- LOG_ARCHIVE_DEST_1            VALID LOG_ARCHIVE_DEST_2           ERROR                    ORA-16191: Primary log   shipping client not logged on standby 解决办法:统一主备库的数据库密码文件,或者重建密码文件,sys密码设置成一样。 然后在主库执行 SQL> alter system set log_archive_dest_state_1= enable;   注意事项 建议在主备库的涉及到名称地方都统一用小写字母,避免在配置过程出现莫名的错误。 如果在主库执行alter database clear unarchived logfile或alter database open resetlogs,则dataguard要重建。 在连续恢复模式下工作之前,需要保证之前所有的归档日志己经应用到备用库上。因为在连续恢复模式的情况下,oracle不会应用之前的归档日志,而只会应用后面陆续到来的归档日志。 新建表、表空间、datafile都能通过日志应用到备库,但新建一个临时表空间和rename datafile均不能应用到备库上。 出现归档日志gap时,需要找出相应的归档日志,然后将这些归档日志copy到备用节点的log_archive_dest目录下面。然后ALTER DATABASE RECOVER AUTOMATIC STANDBY DATABASE; 应当实时察看standby库的alert文件,就能清晰明了地知道主备更新的情况。这也是排错的重要方法。

相关推荐