DG环境下 redo和 standby redo的增加和删除--及相关遇到的问题

起因是alert.log 里经常报

Thread 1 cannot allocate new log, sequence 37255
Checkpoint not complete

相关原因,thomas kyte已经在书中将了一些解决方法。这里仅仅补充一点:如果依靠增加DBWr进程数来解决,并不能缓解此问题,相反会增加日志切换频率,更容易报错。

下面就考虑以增加日志组和 修改日志组大小为例。


当前redo log文件,一个是50M,随着业务增加已经明显不够用了。计划增加redo group数,并把每个redo大小改成300m。

主库上:

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

    GROUP#    THREAD#  SEQUENCE# ARC STATUS           BYTES/1024/1024
---------- ---------- ---------- --- ---------------- ---------------
         1          1      39472 YES INACTIVE                     50
         2          1      39473 YES INACTIVE                     50
         3          1      39474 YES INACTIVE                     50
         4          1      39476 NO  CURRENT                    300
         5          1      39475 YES ACTIVE                       300


注意,这里仅仅能drop 状态为inactive的。

alter database drop logfile group 1;
alter database drop logfile group 2;

然后再添加相应的日志组。 但是主要要先删除磁盘上的对应日志文件。不然会报错。

alter database add logfile group 1 '/data/oracle/oradata/test/redo01.log' size 300m;

alter database add logfile group 2 '/data/oracle/oradata/test/redo02.log' size 300m;

新加的redo log 开始会是unused的状态,切换几次switch logfile,即会变化。

主库基本操作完成。


备库:

首先要停掉备库的日志应用:

alter database recover managed standby database cancel;

再次,要把standby_logfile_management参数改成手动:

alter system set standby_file_management=manual;

现在就可以开始做drop和 add操作了。举例:

alter database add logfile group 4 '/data/oracle/oradata/test/redo04.log' size 300m;

ALTER DATABASE ADD STANDBY LOGFILE GROUP 6 '/data/oracle/oradata/test/stredo1.log' size 1g;

这里在删除standby redo组的时候会遇到一些特使情况;

1. 首先要清理archive logfile,然后再drop

alter database clear logfile group 2;

alter database drop logfile group 2;

2,如果还是 出现问题,尝试在主库切换下日志。 alter system switch logfile;

3.此外,在clear lofile 的时候可能会报错:

SQL> alter database clear logfile group 2;

alter database clear logfile group 2
*
ERROR at line 1:
ORA-19527: physical standby redo log must be renamed
ORA-00312: online log 2 thread 1: '/u01/app/oracle/oradata/xezf/redo02.log'

 

ORA报错查询:

ORA-19527:
physical standby redo log must be renamed

Cause:
The CLEAR LOGFILE command was used at a physical standby database. This command cannot be used at a physical standby database unless the LOG_FILE_NAME_CONVERT initialization parameter is set. This is required to avoid overwriting the primary database's logfiles.
 
Action:
Set the LOG_FILE_NAME_CONVERT initialization parameter.
 

我们需要设置LOG_FILE_NAME_CONVERT 参数,才能使用clear logfile命令。

SQL> show parameter NAME_CONVERT

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_file_name_convert                 string
log_file_name_convert                string

SQL> alter system set log_file_name_convert='/data/oradata/test','/data/oradata/test' scope=spfile;

System altered. 之后重启数据库。

再进行clear logfile 就成功了。

结束后,要还原上面设置,并开启设置开启日志应用。

alter database recover managed standby database cancel;
alter database recover managed standby database using current logfile disconnect from session;


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东方-phantom

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值