我是靠谱客的博主 魁梧宝贝,最近开发中收集的这篇文章主要介绍dg 日常维护,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

DG维护常用命令---oracle DG dataguard
一、DG维护常用命令
10g alter日志位置
/opt/app/oracle/admin/moe/bdump
/u01/app/oracle/product/10.2.0/db_1/rdbms/log
11g alter日志位置
cd /u01/app/oracle/diag/rdbms/orcl/orcl/trace/alert
/u01/app/oracle/diag/rdbms/orcl/orcl/trace
注:可使用show parameter dump查看

二、standby logfile
主库查看log
SQL> select group#,thread#,bytes/1024/1024 M,status from v$log;
备库查看standby log
SQL> select group#,thread#,bytes/1024/1024 M,status,last_change#,last_time from v$standby_log;
注:备库的standby logfile一般比主库的log多一个(rac的对应的是节点),大小要一样,多出的那个大小和主库最大的log一样。

三、查看standby启动的DG进程
SQL> select process,client_process,sequence#,status from v$managed_standby;
注:
备库ARCH、MRPO和RFS都有表示正常;
主库没有RFS进程和MRP进程,有ARCH和LNS;
手动启动MRPO进程
alter database recover managed standby database disconnect from session
SQL> select open_mode,current_scn from v$database;
SQL> select * from v$standby_log;
select process,client_process,sequence#,status,BLOCK#,BLOCKS,THREAD# from v$managed_standby;

四、检查归档日志或dg是否正常
SQL> select GROUP#,DBID,STATUS,LAST_CHANGE#,BYTES,LAST_TIME from v$standby_log;
注:如果主库是rac,其中的status有两个为ACTIVE;LAST_CHANGE#值会增加,不是固定的;
查看最大归档序列号
SQL> select max(sequence#) from v$archived_log;

五、
1.开启实时日志应用
SQL> recover managed standby database using current logfile disconnect from session;
或
SQL> alter database recover managed standby database using current logfile disconnect;
注: using current logfile是一个可选项,选择了就必须要有standby日志;disconnect断开,即从当前的终端断开,在系统后台执行命令。

2.查询日志应用情况
SQL> select database_role,protection_mode,protection_level,open_mode from v$database;
SQL> select process,client_process,sequence#,status from v$managed_standby;
***停止redo日志应用
SQL> alter database recover managed standby database cancel;
***打开实例
SQL> alter database open read only;
打开到mount状态
SQL> startup mount;
手动归档
SQL> ALTER SYSTEM ARCHIVE LOG CURRENT;
select message from v$dataguard_status;

3.1临时断开主库和备库的同步
alter system set log_archive_dest_state_2=DEFER;

3.2打开主库和备库的同步
alter system set log_archive_dest_state_2 = ENABLE;
select sequence#,applied from v$archived_log;

4.主、备库查看当前日志状况
select sequence#,status from v$log;

5.备库执行,查看是否有数据未应用
select name,SEQUENCE#,APPLIED from v$archived_log order by sequence#;
select SEQUENCE#,FIRST_TIME,NEXT_TIME ,APPLIED from v$archived_log order by 2;

6.在备库手工注册拷贝过来的的归档日志
alter database register logfile '/opt/oracle/archive_log/1_27293_750772439.log'
standby日志相关

六、创建standby日志:
SQL> alter database add standby logfile '/oradata/orcl/standby01.log' size 50m;
SQL> alter database add standby logfile '/oradata/orcl/standby02.log' size 50m;
SQL> alter database add standby logfile '/oradata/orcl/standby03.log' size 50m;
SQL> alter database add standby logfile '/oradata/orcl/standby04.log' size 50m;
alter database add standby logfile thread 1 group 10 ('/oradata/xqdb/standby10.log') size 50M;
alter database add standby logfile thread 2 group 14 ('/oradata/xqdb/standby14.log') size 50M;
删除Standby Redo log日志组的语法:
(可以把数据库关闭启动到mount状态在删除以及文件后再添加)
SQL> ALTER DATABASE DROP STANDBY LOGFILE GROUP 4;
查询standby日志:
select group#,thread#,sequence#,archived,status from v$standby_log;
查看DG应用日志是否实时应用(备库查看)
SQL > select  DEST_NAME , STATUS , RECOVERY_MODE from v$archive_dest_status;
注:
recover_mode是 MANAGED REAL TIME APPLY是实时应用;
MANAGED是非实时应用。
如需要开启实时应用日志,停止日志应用
SQL> alter database recover managed standby database cancel;
再启动日志应用就好
SQL> alter database recover managed standby database using current logfile disconnect;
参数:using current logfile
在11g中,如要使用real time apply(实时应用),需要加using current logfile;
在12c中,如果要不使用real time apply,需要加using archived log,using current logfile已经过期作废。
不带using语句,在11g中,默认是不使用real time apply,而在12c中是默认使用real time apply。 
查看主库是否传送日志,可以在主库的alter日志是否有LAN:这个选项
其他:
SELECT THREAD#, MAX(SEQUENCE#) AS "LAST_APPLIED_LOG" FROM V$LOG_HISTORY GROUP BY THREAD#;
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=2 AND THREAD# = LOCAL.THREAD#);

七、Oracle Data Guard表空间和数据文件管理汇总
一、添加dg备库的表空间或者添加数据文件
1)备库的STANDBY_FILE_MANAGEMENT=auto时
主库执行create tablespace fei_2 datafile ‘/u01/oradata/first/fei_02.dbf’ size 1m;
就可以实现在主备库中都实现表空间和数据文件的添加,无需人工干预
2)备库的STANDBY_FILE_MANAGEMENT=MANUAL时
主库执行create tablespace fei_1 datafile ‘/u01/oradata/first/fei_01.dbf’ size 1m;
备库分三步操作
select name from v$datafile;–获得命名异常的数据文件
alter database create datafile ‘/u01/oracle/dbs/UNNAMED00006′ as ‘/u01/oradata/first/fei_01.dbf’;
RECOVER MANAGED STANDBY DATABASE DISCONNECT;

二、删除dg备库的表空间或者数据文件
1)备库的STANDBY_FILE_MANAGEMENT=auto时
在主库上执行drop tablespace fei_1 including contents and datafiles;
备库同时会删除表空间和数据文件,无需人工干预
2)备库的STANDBY_FILE_MANAGEMENT=MANUAL时
主库执行drop tablespace fei_1 including contents and datafiles;
需要手工在备库上删除相应数据文件rm /u01/oradata/first/fei_01.dbf

三、主备库的数据文件重命名
无论STANDBY_FILE_MANAGEMENT=auto/manual都需要人工干预
主库上需要执行操作
1)ALTER TABLESPACE fei_02 OFFLINE;
2)!mv /u01/oradata/first/fei_02.dbf /u01/oradata/first/xifenfei.dbf
3) alter tablespace fei_2 rename datafile ‘/u01/oradata/first/fei_02.dbf’ to ‘/u01/oradata/first/xifenfei.dbf’;
4) alter tablespace fei_2 online;
备库需要执行操作
1)shutdown immediate
2)startup mount
3)!mv /u01/oradata/first/fei_02.dbf /u01/oradata/first/xifenfei.dbf
4)alter system set standby_file_management=manual;–如果是manual无需操作
5)alter database rename file ‘/u01/oradata/first/fei_02.dbf’ to ‘/u01/oradata/first/xifenfei.dbf’;
6)alter system set standby_file_management=auto;–根据实际需求
7)ALTER DATABASE OPEN;–11G
8)ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;

————————————————
版权声明:本文为CSDN博主「debimeng」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/debimeng/article/details/79094157


最后

以上就是魁梧宝贝为你收集整理的dg 日常维护的全部内容,希望文章能够帮你解决dg 日常维护所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部