您的位置:首页 > 其它

Data Guard 环境下 主备库Redo log 的添加与删除

2013-09-04 11:37 295 查看
刚搭建完一个Data Gard 环境。 在服务器上弄的,过几天要上生产线。 安装的时候redo 默认了50M。 而且standby redo 也是50M。 和同事讨论之后,还是把改成100M。50M 确实小了点。 Standby redo的大小要和redo 的一致,所以主备库都要调整。 一. 主库操作 1.1 查看redo 信息SQL> select group#,type, member from v$logfile; GROUP# TYPE MEMBER---------- ------- ------------------------------------------------------------- 3 ONLINE /u01/app/oracle/oradata/xezf/redo03.log 2 ONLINE /u01/app/oracle/oradata/xezf/redo02.log 1 ONLINE /u01/app/oracle/oradata/xezf/redo01.log 4 STANDBY /u01/app/oracle/oradata/xezf/redo04.log 5 STANDBY /u01/app/oracle/oradata/xezf/redo05.log 6 STANDBY /u01/app/oracle/oradata/xezf/redo06.log 7 STANDBY /u01/app/oracle/oradata/xezf/redo07.log7 rows selected. SQL> select group#,thread#,archived,status, bytes/1024/1024 from v$log; GROUP# THREAD# ARC STATUS BYTES/1024/1024---------- ---------- --- ---------------- --------------- 1 1 YES INACTIVE 50 2 1 NO CURRENT 50 3 1 YES INACTIVE 50 1.2 修改standby redoSQL> 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> select group#,type, member from v$logfile; GROUP# TYPE MEMBER---------- ------- ------------------------------------------------------------- 3 ONLINE /u01/app/oracle/oradata/xezf/redo03.log 2 ONLINE /u01/app/oracle/oradata/xezf/redo02.log 1 ONLINE /u01/app/oracle/oradata/xezf/redo01.log 添加standby redoSQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 4 ('/u01/app/oracle/oradata/xezf/std_redo04.log') size 100M;Database altered.SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 5 ('/u01/app/oracle/oradata/xezf/std_redo05.log') size 100M;Database altered.SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 6 ('/u01/app/oracle/oradata/xezf/std_redo06.log') size 100M;Database altered.SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 7 ('/u01/app/oracle/oradata/xezf/std_redo07.log') size 100M;Database altered. SQL> select group#,type, member from v$logfile; GROUP# TYPE MEMBER---------- ------- ------------------------------------------------------------- 3 ONLINE /u01/app/oracle/oradata/xezf/redo03.log 2 ONLINE /u01/app/oracle/oradata/xezf/redo02.log 1 ONLINE /u01/app/oracle/oradata/xezf/redo01.log 4 STANDBY /u01/app/oracle/oradata/xezf/std_redo04.log 5 STANDBY /u01/app/oracle/oradata/xezf/std_redo05.log 6 STANDBY /u01/app/oracle/oradata/xezf/std_redo06.log 7 STANDBY /u01/app/oracle/oradata/xezf/std_redo07.log 7 rows selected. 1.3 修改Online redoSQL> select group#,thread#,archived,status, bytes/1024/1024 from v$log; GROUP# THREAD# ARC STATUS BYTES/1024/1024---------- ---------- --- ---------------- --------------- 1 1 YES INACTIVE 50 2 1 NO CURRENT 50 3 1 YES INACTIVE 50 先处理inactive, 它表示已经完成规定的,可以删除。 SQL> alter database drop logfile group 1;Database altered.SQL> alter database drop logfile group 3;alter database drop logfile group 3*ERROR at line 1:ORA-01567: dropping log 3 would leave less than 2 log files for instance xezf(thread 1)ORA-00312: online log 3 thread 1: '/u01/app/oracle/oradata/xezf/redo03.log'-- 至少要2个redo组,看来还是只能慢慢来了。 SQL> alter database add logfile group 1 ('/u01/app/oracle/oradata/xezf/redo01.log') size 100M; alter database add logfile group 1 ('/u01/app/oracle/oradata/xezf/redo01.log') size 100M*ERROR at line 1:ORA-00301: error in adding log file '/u01/app/oracle/oradata/xezf/redo01.log' -file cannot be createdORA-27038: created file already existsAdditional information: 1 -- 物理文件没有删除,手工的把物理文件删除后,在创建:SQL> alter database add logfile group 1 ('/u01/app/oracle/oradata/xezf/redo01.log') size 100M;Database altered. SQL> select group#,thread#,archived,status, bytes/1024/1024 from v$log; GROUP# THREAD# ARC STATUS BYTES/1024/1024---------- ---------- --- ---------------- --------------- 1 1 YES UNUSED 100 2 1 NO CURRENT 50 3 1 YES INACTIVE 50 group1 搞定了。 SQL> alter database drop logfile group 3;Database altered. 删除对应的物理文件,在添加SQL> alter database add logfile group 3 ('/u01/app/oracle/oradata/xezf/redo03.log') size 100M; Database altered.SQL> select group#,thread#,archived,status, bytes/1024/1024 from v$log; GROUP# THREAD# ARC STATUS BYTES/1024/1024---------- ---------- --- ---------------- --------------- 1 1 YES UNUSED 100 2 1 NO CURRENT 50 3 1 YES UNUSED 100 group3 搞定。 切换一下logfile,在删除group2 SQL> alter system switch logfile;System altered.SQL> select group#,thread#,archived,status, bytes/1024/1024 from v$log; GROUP# THREAD# ARC STATUS BYTES/1024/1024---------- ---------- --- ---------------- --------------- 1 1 NO CURRENT 100 2 1 YES ACTIVE 50 -- group 正在归档,我们等会在看一下 3 1 YES UNUSED 100 几分钟之后:SQL> select group#,thread#,archived,status, bytes/1024/1024 from v$log; GROUP# THREAD# ARC STATUS BYTES/1024/1024---------- ---------- --- ---------------- --------------- 1 1 NO CURRENT 100 2 1 YES INACTIVE 50 3 1 YES UNUSED 100 SQL> alter database drop logfile group 2;Database altered.删除物理文件,在创建SQL> alter database add logfile group 2 ('/u01/app/oracle/oradata/xezf/redo02.log') size 100M;Database altered.SQL> select group#,thread#,archived,status, bytes/1024/1024 from v$log; GROUP# THREAD# ARC STATUS BYTES/1024/1024---------- ---------- --- ---------------- --------------- 1 1 NO CURRENT 100 2 1 YES UNUSED 100 3 1 YES UNUSED 100 主库搞定。 二. 备库操作 2.1 查看信息SQL> select group#,type, member from v$logfile; GROUP# TYPE MEMBER---------- ------- ------------------------------------------------------------- 3 ONLINE /u01/app/oracle/oradata/xezf/redo03.log 2 ONLINE /u01/app/oracle/oradata/xezf/redo02.log 1 ONLINE /u01/app/oracle/oradata/xezf/redo01.log 4 STANDBY /u01/app/oracle/oradata/xezf/redo04.log 5 STANDBY /u01/app/oracle/oradata/xezf/redo05.log 6 STANDBY /u01/app/oracle/oradata/xezf/redo06.log 7 STANDBY /u01/app/oracle/oradata/xezf/redo07.log 7 rows selected. SQL> select group#,thread#,archived,status, bytes/1024/1024 from v$log; GROUP# THREAD# ARC STATUS BYTES/1024/1024---------- ---------- --- ---------------- --------------- 1 1 YES CLEARING_CURRENT 50 3 1 YES CLEARING 50 2 1 YES CLEARING 50 2.2 处理standby redo 对于standby 上redo的处理之前,我们要先停掉redo 的apply: SQL> alter database recover managed standby database cancel; 不然会报如下错误: SQL> alter database drop logfile group 2; alter database drop logfile group 2 * ERROR at line 1: ORA-01156: recovery in progress may need access to files 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. [oracle@qs-xezf-db2 xezf]$ rm redo04.log[oracle@qs-xezf-db2 xezf]$ rm redo05.log[oracle@qs-xezf-db2 xezf]$ rm redo06.log[oracle@qs-xezf-db2 xezf]$ rm redo07.log SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 4 ('/u01/app/oracle/oradata/xezf/std_redo04.log') size 100M;Database altered.SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 5 ('/u01/app/oracle/oradata/xezf/std_redo05.log') size 100M;Database altered.SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 6 ('/u01/app/oracle/oradata/xezf/std_redo06.log') size 100M;Database altered.SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 7 ('/u01/app/oracle/oradata/xezf/std_redo07.log') size 100M;Database altered. SQL> select group#,type, member from v$logfile; GROUP# TYPE MEMBER---------- ------- ------------------------------------------------------------- 3 ONLINE /u01/app/oracle/oradata/xezf/redo03.log 2 ONLINE /u01/app/oracle/oradata/xezf/redo02.log 1 ONLINE /u01/app/oracle/oradata/xezf/redo01.log 4 STANDBY /u01/app/oracle/oradata/xezf/std_redo04.log 5 STANDBY /u01/app/oracle/oradata/xezf/std_redo05.log 6 STANDBY /u01/app/oracle/oradata/xezf/std_redo06.log 7 STANDBY /u01/app/oracle/oradata/xezf/std_redo07.log 7 rows selected. 2.3 处理online redo 先将standby_file_management设为手动:SQL> alter system set standby_file_management=manual;System altered. 不然会报错:SQL> alter database drop logfile group 2; alter database drop logfile group 2*ERROR at line 1:ORA-01275: Operation DROP LOGFILE is not allowed if standby file management is automatic. 在Oracle 官网上搜了一下,找到了一篇文章: How to Add/Drop/Resize Redo Log with Physical Standby in place. [ID 473442.1]http://blog.csdn.net/tianlesoftware/archive/2010/12/08/6063677.aspx SQL> SELECT GROUP#, STATUS FROM V$LOG; GROUP# STATUS---------- ---------------- 1 CLEARING_CURRENT 3 CLEARING 2 CLEARING SQL>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 renamedORA-00312: online log 2 thread 1: '/u01/app/oracle/oradata/xezf/redo02.log'
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命令。 参考:ORA-00313, ORA-00312, ORA-27037 in Standby Database [ID 601835.1]http://blog.csdn.net/tianlesoftware/archive/2010/12/08/6063749.aspx 解决方法如下:SQL> shutdown immediateORA-01109: database not openDatabase dismounted.ORACLE instance shut down. 在pfile里添加参数:语法:*.log_file_name_convert = '<location on primary>','<location on standby>'*.log_file_name_convert ='/u01/app/oracle/oradata/xezf/','/u01/app/oracle/oradata/xezf/' 用pfile 启动备库:SQL> startup nomount pfile='/u01/app/oracle/product/10.2.0/db_1/dbs/initxezf.ora';ORACLE instance started. Total System Global Area 1610612736 bytesFixed Size 2096632 bytesVariable Size 385876488 bytesDatabase Buffers 1207959552 bytesRedo Buffers 14680064 bytesSQL> alter database mount standby database;Database altered. SQL> select group#,status from v$log; GROUP# STATUS---------- ---------------- 1 CLEARING 3 CLEARING 2 CLEARING_CURRENT SQL> show parameter log_file_name_convertNAME TYPE VALUE------------------------------------ ----------- ------------------------------log_file_name_convert string /u01/app/oracle/oradata/xezf, /u01/app/oracle/oradata/xezf/ SQL> alter database clear logfile group 1;Database altered. SQL> ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT='MANUAL';System altered. SQL> alter database drop logfile group 1;Database altered. 删除物理文件:[oracle@qs-xezf-db2 xezf]$ rm redo01.log 创建新的日志组:SQL> alter database add logfile group 1 ('/u01/app/oracle/oradata/xezf/redo01.log') size 100M;Database altered. SQL> select group#,status from v$log; GROUP# STATUS---------- ---------------- 1 UNUSED 3 CLEARING 2 CLEARING_CURRENT 处理下一个redo 日志:SQL> alter database clear logfile group 3;Database altered. SQL> alter database drop logfile group 3;Database altered. 删除物理文件:[oracle@qs-xezf-db2 xezf]$ rm redo03.log SQL> alter database add logfile group 3 ('/u01/app/oracle/oradata/xezf/redo03.log') size 100M;Database altered. SQL> select group#,status from v$log; GROUP# STATUS---------- ---------------- 1 UNUSED 3 UNUSED 2 CLEARING_CURRENT SQL> select group#,thread#,archived,status, bytes/1024/1024 from v$log; GROUP# THREAD# ARC STATUS BYTES/1024/1024---------- ---------- --- ---------------- --------------- 1 1 YES UNUSED 100 3 1 YES UNUSED 100 2 1 YES CLEARING_CURRENT 50 还有最后一个redo 组没有处理,这个要先切换过来:(1)在备库启动recover 进程:SQL> alter database recover managed standby database disconnect from session;SQL>ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT='AUTO'; (2)到主库手动切换几次redoSQL> alter system switch logfile;System altered.SQL> alter system switch logfile;System altered. 在查看备库的redo:SQL> alter database recover managed standby database cancel;Database altered.SQL> ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT='MANUAL';System altered. SQL> select group#,status from v$log; GROUP# STATUS---------- ---------------- 1 UNUSED 3 CLEARING_CURRENT 2 CLEARING SQL> alter database clear logfile group 2;Database altered. SQL> alter database drop logfile group 2;Database altered. 物理删除文件:[oracle@qs-xezf-db2 xezf]$ rm redo02.log 添加redo:SQL> alter database add logfile group 2 ('/u01/app/oracle/oradata/xezf/redo02.log') size 100M;Database altered. 查看:SQL> select group#,thread#,archived,status, bytes/1024/1024 from v$log; GROUP# THREAD# ARC STATUS BYTES/1024/1024---------- ---------- --- ---------------- --------------- 1 1 YES UNUSED 100 3 1 YES CLEARING_CURRENT 100 2 1 YES UNUSED 100 搞定,最后启动recover,验证:SQL> ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT='AUTO';System altered. SQL> alter database recover managed standby database disconnect from session;Database altered. 主库:SQL> alter system switch logfile;System altered. SQL> alter system switch logfile; System altered. SQL> select max(sequence#) from v$archived_log;MAX(SEQUENCE#)-------------- 15 备库:SQL> select sequence#,applied from v$archived_log; SEQUENCE# APP---------- --- 2 YES 3 YES 5 YES 4 YES 7 YES 6 YES 8 YES 9 YES 13 YES 10 YES 11 YES SEQUENCE# APP---------- --- 12 YES 14 YES 15 YES 14 rows selected. 同步正常。 ok。

阅读(264) | 评论(0) | 转发(0) |

0
上一篇:Oracle进程连接数过多时的Statspack分析报告

下一篇:MyEclipse SVN插件配置

相关热门文章

Oracle日常性能查看

使用 RMAN 同步数据库

LoadRunner 测试Oracle数据库...

Oracle工程系统与安全高可用...

oracle中substr函数的用法...

cpu %和load average是怎样的...

如何确定线程使用的端口...

mysql整形数据类型插入0001数...

weblogic集群下启动服务有一个...

nagios pnp 报错

给主人留下些什么吧!~~

评论热议
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: