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;


阅读更多
个人分类: dataguard ORA-
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

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

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭