关闭

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

298人阅读 评论(0) 收藏 举报
分类:

起因是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
0

猜你在找
【套餐】Hadoop生态系统零基础入门
【套餐】嵌入式Linux C编程基础
【套餐】2017软考系统集成项目——任铄
【套餐】Android 5.x顶级视频课程——李宁
【套餐】深度学习入门视频课程——唐宇迪
【直播】广义线性模型及其应用——李科
【直播】从0到1 区块链的概念到实践
【直播】计算机视觉原理及实战——屈教授
【直播】机器学习之凸优化——马博士
【直播】机器学习&数据挖掘7周实训--韦玮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:30244次
    • 积分:954
    • 等级:
    • 排名:千里之外
    • 原创:64篇
    • 转载:12篇
    • 译文:2篇
    • 评论:6条
    最新评论