[转]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;

posted on 2008-06-26 15:07  一江水  阅读(1445)  评论(0编辑  收藏  举报