修改dataguard主库redo组数和大小

http://www.xifenfei.com/4388.html


在一个dg环境中,配置的是实时同步,需要增加主库的redo大小和组数,本来是一个很简单的问题,解决思路是:

先备库增加standby redo删除老standby redo,

后主库增加redo删除老redo,

备库增加新redo删除老redo,

最后主库增加standby redo。


但是在实施过程中,遇到了一些细节性的问题,主要是学习到了log_file_name_convert如果不配置,将导致备库redo 文件不能被删除

standby redo log管理
增加standby redo log

SQL> alter database add standby logfile group 8 ('/data/oradata/wasudb/st_redo08.log') size 200M; 
alter database add standby logfile group 8 ('/data/oradata/wasudb/st_redo08.log') size 200M
*
ERROR at line 1:
ORA-01156: recovery in progress may need access to files
  
SQL> alter database recover managed standby database cancel;
  
Database altered.
  
SQL> alter database add standby logfile group 9 ('/data/oradata/wasudb/st_redo09.log') size 200M; 
  
Database altered.
  
SQL> alter database add standby logfile group 10 ('/data/oradata/wasudb/st_redo10.log') size 200M; 
  
Database altered.
  
SQL> alter database add standby logfile group 11 ('/data/oradata/wasudb/st_redo11.log') size 200M; 
  
Database altered.
  
SQL> alter database add standby logfile group 12 ('/data/oradata/wasudb/st_redo12.log') size 200M; 
  
Database altered.

删除standby redo log

SQL> alter database drop logfile group 4;
alter database drop logfile group 4
*
ERROR at line 1:
ORA-00261: log 4 of thread 1 is being archived or modified
ORA-00312: online log 4 thread 1: '/data/oradata/wasudb/st_redo04.log'
  
  
SQL> alter database drop logfile group 5;;
  
Database altered.
  
SQL> alter database drop logfile group 6;
  
Database altered.
  
SQL> alter database drop logfile group 7;
  
Database altered.
  
--在主库多次执行switch logfile
  
SQL>  alter database drop logfile group 4;
  
Database altered.

主库redo log 管理
增加redo log

SQL> alter database add logfile group 21 ('/data/oradata/wasudb/redo21.log') size 200m;
  
Database altered.
  
SQL> alter database add logfile group 22 ('/data/oradata/wasudb/redo22.log') size 200m; 
  
Database altered.
  
SQL> alter database add logfile group 23 ('/data/oradata/wasudb/redo23.log') size 200m; 
  
Database altered.
  
SQL> alter database add logfile group 24 ('/data/oradata/wasudb/redo24.log') size 200m;
  
Database altered.

删除redo log

SQL> alter database drop logfile group 1;
  
Database altered.
  
SQL> alter database drop logfile group 2;
  
Database altered.
  
SQL> alter database drop logfile group 3;
  
Database altered.
--这里涉及到多次switch logfile,需要确定redo是inactive才能够删除

备库redo log管理
增加redo log

SQL> alter database add logfile group 21 ('/data/oradata/wasudb/redo21.log') size 200m; 
alter database add logfile group 21 ('/data/oradata/wasudb/redo21.log') size 200m
*
ERROR at line 1:
ORA-01275: Operation ADD LOGFILE is not allowed if standby file management is automatic.
  
  
SQL>  alter system set standby_file_management=manual;
  
System altered.
  
SQL> alter database add logfile group 21 ('/data/oradata/wasudb/redo21.log') size 200m;
  
Database altered.
  
SQL> alter database add logfile group 22 ('/data/oradata/wasudb/redo22.log') size 200m; 
  
Database altered.
  
SQL> alter database add logfile group 23 ('/data/oradata/wasudb/redo23.log') size 200m; 
  
Database altered.
  
SQL> alter database add logfile group 24 ('/data/oradata/wasudb/redo24.log') size 200m;
  
Database altered.

删除redo log

SQL> alter database drop logfile group 1;
alter database drop logfile group 1
*
ERROR at line 1:
ORA-01624: log 1 needed for crash recovery of instance wasudb (thread 1)
ORA-00312: online log 1 thread 1: '/data/oradata/wasudb/redo01.log'
  
SQL>  ALTER DATABASE CLEAR LOGFILE GROUP 1;
 ALTER DATABASE CLEAR LOGFILE GROUP 1
*
ERROR at line 1:
ORA-19527: physical standby redo log must be renamed
ORA-00312: online log 1 thread 1: '/data/oradata/wasudb/redo01.log'
  
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/wasudb','/data/oradata/wasudb' scope=spfile;
  
System altered.
  
SQL>  alter system set db_file_name_convert='/data/oradata/wasudb','/data/oradata/wasudb' scope=spfile;
  
System altered.
  
--重启数据库
  
SQL> show parameter file_name_convert;
  
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_file_name_convert                 string      /data/oradata/wasudb, /data/or
                                                 adata/wasudb
log_file_name_convert                string      /data/oradata/wasudb, /data/or
                                                 adata/wasudb
  
SQL> alter database drop logfile group 1;
alter database drop logfile group 1
*
ERROR at line 1:
ORA-01624: log 1 needed for crash recovery of instance wasudb (thread 1)
ORA-00312: online log 1 thread 1: '/data/oradata/wasudb/redo01.log'
  
SQL> ALTER DATABASE CLEAR LOGFILE GROUP 1;
  
Database altered.
  
SQL> alter database drop logfile group 1;
  
Database altered.
  
SQL> ALTER DATABASE CLEAR LOGFILE GROUP 2;
  
Database altered.
  
SQL> alter database drop logfile group 2;
  
Database altered.
  
SQL> ALTER DATABASE CLEAR LOGFILE GROUP 3;
  
Database altered.
  
SQL> alter database drop logfile group 3;
  
Database altered.

主库standby redo log管理
增加standby redo

SQL> alter database add logfile group 21 ('/data/oradata/wasudb/redo21.log') size 200m;
  
Database altered.
  
SQL> alter database add logfile group 22 ('/data/oradata/wasudb/redo22.log') size 200m; 
  
Database altered.
  
SQL> alter database add logfile group 23 ('/data/oradata/wasudb/redo23.log') size 200m; 
  
Database altered.
  
SQL> alter database add logfile group 24 ('/data/oradata/wasudb/redo24.log') size 200m;
  
Database altered.

删除standby redo

SQL> alter database drop logfile group 4;
  
Database altered.
  
SQL> alter database drop logfile group 5;
  
Database altered.
  
SQL> alter database drop logfile group 6;
  
Database altered.
  
SQL> alter database drop logfile group 7;
  
Database altered.

后续工作

SQL> alter system set standby_file_management=auto;
  
System altered.
  
SQL> alter database recover managed standby database using current logfile disconnect from session;
  
Database altered.

至此修改dataguard环境中的redo大小和增加redo组数的操作基本完成.在这里主要修正了自己以前对log_file_name_convert的认识,我以前以为如果我的主备库redo对应的目录一致不用配置该参数,今天通过查询MOS发现从10.2开始数据库为了能实现dg的快速切换在mrp启动的时候会去尝试清理备库redo,如果备库没有redo,或者log_file_name_convert配置不正确导致不能正常执行这个清理工作,数据库就会报ORA-19527,特别是在mrp进程启动之时.对于本次出现执行CLEAR LOGFILE命令也出现该问题,确实有点过犹不及了.这里也就是提醒我们:就算redo file,datafile主备位置相同,也建议配置log_file_name_convert和db_file_name_convert参数,提高dg健壮性.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值