暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle数据库添加日志组在主备模式下

IT界数据库架构师的漂泊人生 2020-12-14
1213

起初的时候日志组设置的是3组,日志大小为50MB,11G的时候每次25MB就切换一下。如今业务量大了,业务功能也多了,动不动就有好多UPDATE,触发很多日志。为此日志切换就非常频繁,1个小时能达到110.关键的是每3组轮完前得要做CHECKPOINT DBWR写操作。为此经常发生等待!

先添加两组日志进去,延缓一轮的时间。



目前主备都差不多这样,用满了。

alter database add logfile group 4 '/data/oradata/orcl/redo04.log' size 1024M;

ALTER DATABASE ADD STANDBY LOGFILE GROUP 5 ('/u01/app/database/globaldb/olinelog/std_redo05.log') size 1024m;


发现添加在线日志和在线STANDBY日志语法差不多,只是多了一些而已。

我想它们是不是分别两种类型的日志呢?所以GRUP发生重叠也没有关系吧?

结果很悲剧

SQL> alter database add logfile group 4 '/data/oradata/orcl/redo04.log' size 1024M;

alter database add logfile group 4 '/data/oradata/orcl/redo04.log' size 1024M

*

ERROR at line 1:

ORA-01184: 日志文件组 4 已存在

只好 在STANDBY GROUP 后面继续追加组号了

alter database add logfile group 8 '/data/oradata/orcl/redo08.log' size 1024M;

alter database add logfile group 9 '/data/oradata/orcl/redo09.log' size 1024M;


追加完了后,发现日志大小不一样,原先是50M 连STANDBY LOG 也是 所以接下来就是同步两个备库,一个本地,一个异地。

先把主库的其他在线日志扩大容量

使用下面三个查询语句观看:

select group#,thread#,sequence#,archived,status,members,bytes/1024/1024 as size_mb from v$log;

select group#,status,type,member from v$logfile;

select group#,thread#,sequence#,archived,status,bytes/1024/1024 from V$standby_Log;

先用这条语句查看在线日志的状态

SQL> select group#,thread#,sequence#,archived,status,members,bytes/1024/1024 as size_mb from v$log;


删除日志组 必须状态为INACTIVE,日志组1和2 都处于可删除状态下

alter database drop logfile group 1;

rm u01/app/oracle/oradata/orcl/redo01.log

alter database add logfile group 1 '/u01/app/oracle/oradata/orcl/redo01.log' size 1024M;


alter database drop logfile group 2;

/u01/app/oracle/oradata/orcl/redo02.log

alter database add logfile group 2 '/u01/app/oracle/oradata/orcl/redo02.log' size 1024M;

上面操作步骤顺序不能乱,日志组删除只是在控制文件删除,还有人工在操作系统上删除,才可以添加



alter system switch logfile;

把第3个日志组切换掉

SQL> select group#,thread#,sequence#,archived,status,members,bytes/1024/1024 as size_mb from v$log;


    GROUP#    THREAD#  SEQUENCE# ARC STATUS MEMBERS    SIZE_MB

---------- ---------- ---------- --- ---------------- ---------- ----------

1    1   24598 NO  CURRENT   1       1024

2    1       0 YES UNUSED       1       1024

3    1   24597 YES ACTIVE       1        50

8    1       0 YES UNUSED       1       1024

9    1       0 YES UNUSED       1       1024


Elapsed: 00:00:00.00


现在第三日志组还是活跃中,未归档waite.....


    GROUP#    THREAD#  SEQUENCE# ARC STATUS MEMBERS    SIZE_MB

---------- ---------- ---------- --- ---------------- ---------- ----------

1    1   24598 NO  CURRENT  1       1024

2    1       0 YES UNUSED       1       1024

3    1   24597 YES INACTIVE  1 50

8    1       0 YES UNUSED       1       1024

9    1       0 YES UNUSED       1       1024



alter database drop logfile group 3;

rm u01/app/oracle/oradata/orcl/redo03.log

alter database add logfile group 3 '/u01/app/oracle/oradata/orcl/redo03.log' size 1024M;



    GROUP#    THREAD#  SEQUENCE# ARC STATUS MEMBERS    SIZE_MB

---------- ---------- ---------- --- ---------------- ---------- ----------

1    1   24598 NO  CURRENT   1       1024

2    1       0 YES UNUSED       1       1024

3    1       0 YES UNUSED       1       1024

8    1       0 YES UNUSED       1       1024

9    1       0 YES UNUSED       1       1024



处理主库的STANDBY LOG FILE 


ALTER DATABASE DROP LOGFILE GROUP 4;

ALTER DATABASE DROP LOGFILE GROUP 5;

ALTER DATABASE DROP LOGFILE GROUP 6;

ALTER DATABASE DROP LOGFILE GROUP 7;


 rm standby*.log


ALTER DATABASE ADD STANDBY LOGFILE GROUP 4 ('/u01/app/oracle/oradata/orcl/standby04.log') size 1024m;

ALTER DATABASE ADD STANDBY LOGFILE GROUP 5 ('/u01/app/oracle/oradata/orcl/standby05.log') size 1024m;

ALTER DATABASE ADD STANDBY LOGFILE GROUP 6 ('/u01/app/oracle/oradata/orcl/standby06.log') size 1024m;

ALTER DATABASE ADD STANDBY LOGFILE GROUP 7 ('/u01/app/oracle/oradata/orcl/standby07.log') size 1024m;

ALTER DATABASE ADD STANDBY LOGFILE GROUP 10 ('/u01/app/oracle/oradata/orcl/standby10.log') size 1024m;

ALTER DATABASE ADD STANDBY LOGFILE GROUP 11 ('/u01/app/oracle/oradata/orcl/standby11.log') size 1024m;



处理本地备库

先添加两组日志

SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 10 ('/u01/ora_redo/orcl/standby10.log') size 1024m;

ALTER DATABASE ADD STANDBY LOGFILE GROUP 10 ('/u01/ora_redo/orcl/standby10.log') size 1024m

*

第 1 行出现错误:

ORA-01156: 进行中的恢复或闪回可能需要访问文件

已用时间:  00: 00: 00.01

shutdown immediate;


startup mount;


ALTER DATABASE DROP LOGFILE GROUP 4;

ALTER DATABASE DROP LOGFILE GROUP 5;

ALTER DATABASE DROP LOGFILE GROUP 6;

ALTER DATABASE DROP LOGFILE GROUP 7;


rm standby*.log


ALTER DATABASE ADD STANDBY LOGFILE GROUP 4 ('/u01/ora_redo/orcl/standby04.log') size 1024m;

ALTER DATABASE ADD STANDBY LOGFILE GROUP 5 ('/u01/ora_redo/orcl/standby05.log') size 1024m;

ALTER DATABASE ADD STANDBY LOGFILE GROUP 6 ('/u01/ora_redo/orcl/standby06.log') size 1024m;

ALTER DATABASE ADD STANDBY LOGFILE GROUP 7 ('/u01/ora_redo/orcl/standby07.log') size 1024m;

ALTER DATABASE ADD STANDBY LOGFILE GROUP 10 ('/u01/ora_redo/orcl/standby10.log') size 1024m;

ALTER DATABASE ADD STANDBY LOGFILE GROUP 11 ('/u01/ora_redo/orcl/standby11.log') size 1024m;


SQL> select group#,thread#,sequence#,archived,status,members,bytes/1024/1024 as size_mb from v$log;


    GROUP#    THREAD#  SEQUENCE# ARC STATUS  MEMBERS    SIZE_MB

---------- ---------- ---------- --- ---------------- ---------- ----------

 1     1    24598 YES CLEARING_CURRENT        1  50

 2     1    24597 YES CLEARING        1  50

 3     1    24598 YES CLEARING        1  50


SQL> ALTER DATABASE DROP LOGFILE GROUP 1;

ALTER DATABASE DROP LOGFILE GROUP 1

*

第 1 行出现错误:

ORA-01275: 自动进行备用文件管理时, 不允许进行 DROP LOGFILE 操作。

郁闷备库的在线日志是不能删除的


处理异地备库 

 发现不需要关闭实列,只要把备库取消恢复模式,处于只读模式也可以,就能添加删除STANDBY LOG了


SELECT NAME,OPEN_MODE,PROTECTION_MODE,DATABASE_ROLE,SWITCHOVER_STATUS,DB_UNIQUE_NAME FROM V$DATABASE;


ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;


ALTER DATABASE ADD STANDBY LOGFILE GROUP 10 ('/u01/app/oracle/oradata/orcl/standby10.log') size 1024m;

ALTER DATABASE ADD STANDBY LOGFILE GROUP 11 ('/u01/app/oracle/oradata/orcl/standby11.log') size 1024m;


alter database recover managed standby database using current logfile disconnect; 


欢迎留言,欢迎分享,欢迎关注


最后修改时间:2020-12-15 10:55:27
文章转载自IT界数据库架构师的漂泊人生,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论