zoukankan      html  css  js  c++  java
  • Oracle Dataguard管理命令(logical standby)

    [转]Oracle Dataguard管理命令(logical standby)

    Oracle Dataguard管理命令(logical standby)

    #################
    ##  管理命令:
    #################

    1、注册日志的命令standby
     SQL> ALTER DATABASE REGISTER LOGICAL LOGFILE
     '/usr2/u01/app/oracle/oracle9201/oradata/scpdb/standby_archive/1_15.dbf';
       
    2、设置初始化参数的一些命令

     备库:
     SQL> alter system set standby_archive_dest='/usr2/u01/app/oracle/oracle9201/oradata/scpdb/standby_archive' scope=both; 
     
     主库:
     
     
    3、pfile spfile
     startup mount pfile=/usr2/u01/app/oracle/oracle9201/admin/scpdb/pfile/initscpdb.ora
     create spfile from pfile='/usr2/u01/app/oracle/oracle9201/admin/scpdb/pfile/initscpdb.ora'
     create pfile='/usr2/u01/app/oracle/oracle9201/admin/scpdb/pfile/initscpdb.ora' from spfile;  
     
    4、设置主库为archive log 
     SQL> STARTUP MOUNT;
     SQL> ALTER DATABASE ARCHIVELOG;
     SQL> ALTER DATABASE OPEN;
     SQL> ARCHIVE LOG LIST; 

    5、 在primary上做archive操作
    SQL> ALTER SYSTEM ARCHIVE LOG CURRENT; 

    6、备库的日志应用服务的错误
    SQL> EXECUTE DBMS_LOGSTDBY.SKIP_ERROR('DML', 'LY', 'T3', null);
    SQL> EXECUTE DBMS_LOGSTDBY.UNSKIP_ERROR('DML','LY', 'T3', null);
     
    ############################ 
    #   备库如何监控日志应用
    ############################


    1、 启动和停止日志应用服务
     SQL> ALTER DATABASE START LOGICAL STANDBY APPLY INITIAL;
     
     ### SQL> ALTER DATABASE STOP LOGICAL STANDBY APPLY;
     ### SQL> ALTER DATABASE START LOGICAL STANDBY APPLY; 

    2、 V$LOGSTDBY
     显示正在读取redo log和应用archived redo log的进程
     
     SQL> COLUMN STATUS FORMAT A50
     SQL> COLUMN TYPE FORMAT A12
     SQL> SELECT TYPE, HIGH_SCN, STATUS FROM V$LOGSTDBY; 
     
    3、 DBA_LOGSTDBY_PROGRESS
     ### 显示LSP的状态和在standby上应用的sql的信息
     
     ### 快速判断是否所有的日志信息都被应用,两个值一样的话说明状态正常
     
     SQL> SELECT APPLIED_SCN, NEWEST_SCN FROM DBA_LOGSTDBY_PROGRESS; 
     
     ### 判断日志是否被应用 
     SQL> ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MON-YY HH24:MI:SS'; 
     SQL> SELECT L.SEQUENCE#, L.FIRST_TIME,
      (CASE WHEN L.NEXT_CHANGE# < P.READ_SCN THEN 'YES'
      WHEN L.FIRST_CHANGE# < P.APPLIED_SCN THEN 'CURRENT'
      ELSE 'NO' END) APPLIED
      FROM DBA_LOGSTDBY_LOG L, DBA_LOGSTDBY_PROGRESS P
      ORDER BY SEQUENCE#; 
     
    4、 DBA_LOGSTDBY_EVENTS
     ### 此视图可以监控日志应用服务发生的事件
     ### 如果日志应用服务异常中止,那么错误信息将会显示在这个view中
     
     SQL> ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MON-YY HH24:MI:SS'; 
     SQL> COLUMN STATUS FORMAT A60
     SQL> SELECT EVENT_TIME, STATUS, EVENT FROM DBA_LOGSTDBY_EVENTS
      ORDER BY EVENT_TIME, COMMIT_SCN; 
      
    5、 DBA_LOGSTDBY_LOG
     ###  提供日志应用服务的动态信息。
     ###  DICT_BEGIN为yes的项表名词典build的begining在此redo log中,
     ###  DICT_END为yes的项表名词典build的END在此redo log中,

     SQL> SELECT FILE_NAME, SEQUENCE#, FIRST_CHANGE#, NEXT_CHANGE#,
      TIMESTAMP, DICT_BEGIN, DICT_END, THREAD# FROM DBA_LOGSTDBY_LOG
      ORDER BY SEQUENCE#;   

    6、 V$LOGSTDBY_STATS
     ### 提供日志应用服务的状态和统计信息,可以看出备库的日志应用是否正常
     
     SQL> COLUMN NAME FORMAT A35
     SQL> COLUMN VALUE FORMAT A35
     SQL> SELECT NAME, VALUE FROM V$LOGSTDBY_STATS
      WHERE NAME LIKE 'coordinator%' or NAME LIKE 'transactions%'; 


    7、 V$DATAGUARD_STATUS
     显示dataguard的状态
     SQL> SELECT * FROM V$DATAGUARD_STATUS;


    ###############################   
    #    主库的一些命令
    ############################### 
    1、监控主库的archive是否正常
     SQL> ARCHIVE LOG LIST;              ### 看自动归档是否开启
     SQL> SHOW PARAMETER LOG_ARCHIVE;    ### 看归档的目的的,状态
     SQL> SHOW PARAMETER REMOTE;         ### 看remote归档是否开启

    2、 查看当前的重做日志号
     SQL> SELECT THREAD#, SEQUENCE#, ARCHIVED, STATUS FROM V$LOG;  


    3、 查看最近归档的重做日志号
     SQL> SELECT MAX(SEQUENCE#) FROM V$ARCHIVED_LOG;  
     
    4、 查看最近归档的重做日志文件(包括所有的目的地)
     SQL> SELECT DESTINATION, STATUS, ARCHIVED_THREAD#, ARCHIVED_SEQ#
      FROM V$ARCHIVE_DEST_STATUS
      WHERE STATUS <> 'DEFERRED' AND STATUS <> 'INACTIVE'; 
      
    5、 查看日志是否在特定的站点被接收

     SQL> SELECT LOCAL.THREAD#, LOCAL.SEQUENCE# FROM
      (SELECT THREAD#, SEQUENCE# FROM V$ARCHIVED_LOG WHERE DEST_ID=1)
      LOCAL WHERE
      LOCAL.SEQUENCE# NOT IN
      (SELECT SEQUENCE# FROM V$ARCHIVED_LOG WHERE DEST_ID=3 AND
      THREAD# = LOCAL.THREAD#);
      
    6、查看是否有网络错误
     SQL> SELECT DEST_ID, STATUS, ERROR FROM V$ARCHIVE_DEST WHERE DEST_ID = 3;

  • 相关阅读:
    2019.5.28
    蓝桥杯2017Java B组---分巧克力and承压计算
    看似忙碌的背后我都干了点什么
    3.9个人总结
    3.2个人总结
    2.23个人总结
    2.16个人总结
    2019.01.27个人总结
    1.19个人总结
    12.22个人总结
  • 原文地址:https://www.cnblogs.com/yaoyangding/p/12808901.html
Copyright © 2011-2022 走看看