系统:Red Hat Enterprise Linux 6.4

数据库:Oracle 10.2.0.5.0 Patch Set 4

主机:10dg1 192.168.1.91

10dg2192.168.1.92

内存:1G

虚拟机:VBox 4.2.14

一,操作系统部分(略)

能够參考我之前写的博客 http://blog.csdn.net/aaron8219/article/details/38239065

二,数据库部分


*****主库配置*****

1. 开启归档,force logging

SQL> archive log list
SQL> shutdown immediate
SQL> startup mount
SQL> alter database archivelog;
SQL> shutdown immediate
SQL> startup
SQL> alter database force logging;
SQL> select log_mode,force_logging from v$database;

SQL> archive log list
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     1
Next log sequence to archive   3
Current log sequence           3

2. 在线改动DG所需參数

SQL> alter system set LOG_ARCHIVE_CONFIG='DG_CONFIG=(zlm,zlmdg)' scope=both;
SQL> alter system set LOG_ARCHIVE_DEST_1='LOCATION=USE_DB_RECOVERY_FILE_DEST VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=zlm' scope=both;
SQL> alter system set LOG_ARCHIVE_DEST_2='SERVICE=zlm10gdg LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=zlmdg' scope=both;
SQL> alter system set LOG_ARCHIVE_DEST_STATE_1=ENABLE scope=both;
SQL> alter system set LOG_ARCHIVE_DEST_STATE_2=ENABLE scope=both;
SQL> alter system set FAL_SERVER=zlmdg scope=both;
SQL> alter system set FAL_CLIENT=zlm scope=both;
SQL> alter system set STANDBY_FILE_MANAGEMENT='AUTO' scope=both;

这里仅仅做2个说明:

①. SERVICE相应的是NET SERVICE NAME,而不是tnsnames.ora中配置的SERVICE NAME

②. 因为db_unique_name无法在线改动,如果生产库之前就设置过这个參数,一般会和db_name一致,那么最好了,能够直接使用它,这样就不用停库,我这里如果原来的db_unique_name设置过,而且就是和db_name一样的zlm,

能够说,这是零停机窗体搭建DG环境的必要条件

3. 创建备份文件夹,開始备份主库,准备在备库上做rman异机恢复

mkdir /u01/rman_bak
run{
allocate channel c1 device type disk;
allocate channel c2 device type disk;
backup incremental level=0 database format '/u01/rman_bak/full_lev0_%d_%I_%T_%U.bak' tag 'full_level_0'include current controlfile for standby;
release channel c1;
release channel c2;
}

查看刚才备份后生成的文件

[oracle@10dg1 u01]$ cd rman_bak/
[oracle@10dg1 rman_bak]$ ll
total 608976
-rw-r-----. 1 oracle oinstall 383500288 Jul 30 13:22 full_lev0_ZLM_3930348306_20140730_04pemmkd_1_1.bak
-rw-r-----. 1 oracle oinstall 232873984 Jul 30 13:22 full_lev0_ZLM_3930348306_20140730_05pemmkd_1_1.bak
-rw-r-----. 1 oracle oinstall   7110656 Jul 30 13:23 full_lev0_ZLM_3930348306_20140730_06pemmlq_1_1.bak
-rw-r-----. 1 oracle oinstall     98304 Jul 30 13:23 full_lev0_ZLM_3930348306_20140730_07pemmlr_1_1.bak

4. 复制初始化參数initSID.ora和备份集到备库$ORACLE_HOME/dbs

scp $ORACLE_HOME/dbs/initzlm.ora 10dg2:$ORACLE_HOME/dbs
scp /u01/rman_bak/*.bak 10dg2:/u01/rman_bak  --注意必须先在备库主机上创建/u01/rman_bak文件夹

5. 复制tnsnames.ora和listener.ora到备库$ORACLE_HOME/dbs

这里贴一下我主库这2个文件的配置,推荐直接改动成备库的内容以后再复制,tnsnames.ora能够不用改动

# tnsnames.ora Network Configuration File: /u01/app/oracle/product/10.2.0/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.

ZLM10G =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.91)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = zlm_SN)
    )
  )

ZLM10GDG =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.92)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = zlm_SN1)
    )
  )

# listener.ora Network Configuration File: /u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)
      (PROGRAM = extproc)
    )
    (SID_DESC =
      (GLOBAL_DBNAME = zlm_SN)
      (ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)
      (SID_NAME = zlm)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.91)(PORT = 1521))
    )
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
    )
  )

还记得怎么区分GLOBAL_DBNAME,SID_NAME,SERVICE_NAME,NET SERVICE NAME这些概念吗?请參考我的还有一篇博客 http://blog.csdn.net/aaron8219/article/details/38267145

-------------------------------------------------切割线 -----------------------------------------------------

*****备库配置*****

1. 创建初始化參数中必要的文件夹

[oracle@10dg2 ~]$ mkdir /u01/app/oracle/admin/zlm/adump -p
[oracle@10dg2 ~]$ mkdir /u01/app/oracle/admin/zlm/bdump -p
[oracle@10dg2 ~]$ mkdir /u01/app/oracle/admin/zlm/cdump -p
[oracle@10dg2 ~]$ mkdir /u01/app/oracle/admin/zlm/udump -p
[oracle@10dg2 ~]$ mkdir /u01/app/oracle/oradata/zlm -p
[oracle@10dg2 ~]$ mkdir /u01/app/oracle/flash_recovery_area -p

sqlplus / as sysdba
SQL> startup nomount
SQL> exit

[oracle@10dg2 ~]$ ls -lrt /u01/rman_bak
total 608976
-rw-r-----. 1 oracle oinstall 383500288 Jul 30 13:39 full_lev0_ZLM_3930348306_20140730_04pemmkd_1_1.bak
-rw-r-----. 1 oracle oinstall 232873984 Jul 30 13:40 full_lev0_ZLM_3930348306_20140730_05pemmkd_1_1.bak
-rw-r-----. 1 oracle oinstall   7110656 Jul 30 13:40 full_lev0_ZLM_3930348306_20140730_06pemmlq_1_1.bak
-rw-r-----. 1 oracle oinstall     98304 Jul 30 13:40 full_lev0_ZLM_3930348306_20140730_07pemmlr_1_1.bak
[oracle@10dg2 ~]$ rman target /

2. 依次用rman恢复备库控制文件,数据文件

RMAN> restore controlfile from'/u01/rman_bak/full_lev0_ZLM_3930348306_20140730_06pemmlq_1_1.bak';

Starting restore at 30-JUL-14
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=156 devtype=DISK

channel ORA_DISK_1: restoring control file
channel ORA_DISK_1: restore complete, elapsed time: 00:00:03
output filename=/u01/app/oracle/oradata/zlm/control01.ctl
output filename=/u01/app/oracle/oradata/zlm/control02.ctl
output filename=/u01/app/oracle/oradata/zlm/control03.ctl
Finished restore at 30-JUL-14

RMAN> alter database mount;

database mounted
released channel: ORA_DISK_1

RMAN> restore database;

Starting restore at 30-JUL-14
Starting implicit crosscheck backup at 30-JUL-14
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=156 devtype=DISK
Crosschecked 2 objects
Finished implicit crosscheck backup at 30-JUL-14

Starting implicit crosscheck copy at 30-JUL-14
using channel ORA_DISK_1
Finished implicit crosscheck copy at 30-JUL-14

searching for all files in the recovery area
cataloging files...
no files cataloged

using channel ORA_DISK_1

channel ORA_DISK_1: starting datafile backupset restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
restoring datafile 00002 to /u01/app/oracle/oradata/zlm/undotbs01.dbf
restoring datafile 00003 to /u01/app/oracle/oradata/zlm/sysaux01.dbf
restoring datafile 00005 to /u01/app/oracle/oradata/zlm/example01.dbf
channel ORA_DISK_1: reading from backup piece /u01/rman_bak/full_lev0_ZLM_3930348306_20140730_05pemmkd_1_1.bak
channel ORA_DISK_1: restored backup piece 1
piece handle=/u01/rman_bak/full_lev0_ZLM_3930348306_20140730_05pemmkd_1_1.bak tag=FULL_LEVEL_0
channel ORA_DISK_1: restore complete, elapsed time: 00:00:25
channel ORA_DISK_1: starting datafile backupset restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
restoring datafile 00001 to /u01/app/oracle/oradata/zlm/system01.dbf
restoring datafile 00004 to /u01/app/oracle/oradata/zlm/users01.dbf
channel ORA_DISK_1: reading from backup piece /u01/rman_bak/full_lev0_ZLM_3930348306_20140730_04pemmkd_1_1.bak
channel ORA_DISK_1: restored backup piece 1
piece handle=/u01/rman_bak/full_lev0_ZLM_3930348306_20140730_04pemmkd_1_1.bak tag=FULL_LEVEL_0
channel ORA_DISK_1: restore complete, elapsed time: 00:00:25
Finished restore at 30-JUL-14

RMAN>

--检查是否恢复完毕

[oracle@10dg2 ~]$ cd /u01/app/oracle/oradata/zlm
[oracle@10dg2 zlm]$ ll
total 865540
-rw-r-----. 1 oracle oinstall   7061504 Jul 30 13:52 control01.ctl
-rw-r-----. 1 oracle oinstall   7061504 Jul 30 13:52 control02.ctl
-rw-r-----. 1 oracle oinstall   7061504 Jul 30 13:52 control03.ctl
-rw-r-----. 1 oracle oinstall 104865792 Jul 30 13:47 example01.dbf
-rw-r-----. 1 oracle oinstall 262152192 Jul 30 13:47 sysaux01.dbf
-rw-r-----. 1 oracle oinstall 461381632 Jul 30 13:47 system01.dbf
-rw-r-----. 1 oracle oinstall  31465472 Jul 30 13:47 undotbs01.dbf
-rw-r-----. 1 oracle oinstall   5251072 Jul 30 13:47 users01.dbf

--查看备库归档情况(此时和主库一致,由于刚从主库恢复过来)

SQL> archive log list
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     1
Next log sequence to archive   3
Current log sequence           3

3. 启动监听

--主库

[oracle@10dg1 ~]$ lsnrctl start
...
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.91)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC0)))
Services Summary...
Service "PLSExtProc" has 1 instance(s).
  Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "zlm_SN" has 1 instance(s).
  Instance "zlm", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully

--备库

[oracle@10dg2 ~]$ lsnrctl start

...
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.92)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC0)))
Services Summary...
Service "PLSExtProc" has 1 instance(s).
  Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "zlm_SN1" has 1 instance(s).
  Instance "zlm", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully

4. 调整备库的參数(基本就是主库參反过来设置)

db_unique_name='ZLMDG'

fal_client='ZLMDG'
fal_server='ZLM'
log_archive_dest_1='LOCATION=USE_DB_RECOVERY_FILE_DEST VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=zlmdg'
log_archive_dest_2='SERVICE=zlm10g LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=zlm'

5. 查看归档路径状态

--主库

SQL> set lin 120 pages 120

SQL> col dest_name for a20
SQL> col destination for a15
SQL> col error for a40
SQL> select dest_id,dest_name,destination,status,error from v$archive_dest_status;

DEST_ID DEST_NAME            DESTINATION     STATUS    ERROR
---------- -------------------- --------------- --------- ----------------------------------------
         1 LOG_ARCHIVE_DEST_1                   VALID
         2 LOG_ARCHIVE_DEST_2   zlm10gdg        ERROR    ORA-01031: insufficient privileges
         3 LOG_ARCHIVE_DEST_3                   INACTIVE
         4 LOG_ARCHIVE_DEST_4                   INACTIVE
         5 LOG_ARCHIVE_DEST_5                   INACTIVE
         6 LOG_ARCHIVE_DEST_6                   INACTIVE
         7 LOG_ARCHIVE_DEST_7                   INACTIVE
         8 LOG_ARCHIVE_DEST_8                   INACTIVE
         9 LOG_ARCHIVE_DEST_9                   INACTIVE
        10 LOG_ARCHIVE_DEST_10                  INACTIVE

10 rows selected.

注意,DESTINATION写的一定是tnsnames.ora中开头的那个大写名称,即NET SERVICE NAME(ZLM10GDG)

--备库

SQL> set lin 120 pages 120
SQL> col dest_name for a20
SQL> col destination for a15
SQL> col error for a40
SQL> select dest_id,dest_name,destination,status,error from v$archive_dest_status;

DEST_ID DEST_NAME            DESTINATION     STATUS    ERROR
---------- -------------------- --------------- --------- ----------
         1 LOG_ARCHIVE_DEST_1           VALID
         2 LOG_ARCHIVE_DEST_2   zlm10g        VALID
         3 LOG_ARCHIVE_DEST_3           INACTIVE
         4 LOG_ARCHIVE_DEST_4           INACTIVE
         5 LOG_ARCHIVE_DEST_5           INACTIVE
         6 LOG_ARCHIVE_DEST_6           INACTIVE
         7 LOG_ARCHIVE_DEST_7           INACTIVE
         8 LOG_ARCHIVE_DEST_8           INACTIVE
         9 LOG_ARCHIVE_DEST_9           INACTIVE
        10 LOG_ARCHIVE_DEST_10          INACTIVE
        11 STANDBY_ARCHIVE_DEST         VALID

11 rows selected.

--备库远程归档正常,主库报一个权限不足,于是考虑又一次复制主库password到备库

SQL> !scp $ORACLE_HOME/dbs/orapwzlm 10dg2:$ORACLE_HOME/dbs

oracle@10dg2's password: 
orapwzlm                                                                                           100% 1536     1.5KB/s   00:00

--主库tnsping一下备库

[oracle@10dg1 rman_bak]$ tnsping zlm10gdg --NET SERVICE NAME

TNS Ping Utility for Linux: Version 10.2.0.5.0 - Production on 30-JUL-2014 14:50:45

Copyright (c) 1997,  2010, Oracle.  All rights reserved.

Used parameter files:

Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.92)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = zlm_SN1)))
OK (0 msec)

--备库tnsping一下主库

[oracle@10dg2 zlm]$ tnsping zlm10g --NET SERVICE NAME

TNS Ping Utility for Linux: Version 10.2.0.5.0 - Production on 30-JUL-2014 14:50:56

Copyright (c) 1997,  2010, Oracle.  All rights reserved.

Used parameter files:

Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.91)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = zlm_SN)))
OK (10 msec)

--再次查看主库归档路径状态

SQL> select dest_id,dest_name,destination,status,error from v$archive_dest_status;

DEST_ID DEST_NAME            DESTINATION     STATUS    ERROR
---------- -------------------- --------------- --------- ----------------------------------------
         1 LOG_ARCHIVE_DEST_1                   VALID
         2 LOG_ARCHIVE_DEST_2   zlm10gdg        VALID
         3 LOG_ARCHIVE_DEST_3                   INACTIVE
         4 LOG_ARCHIVE_DEST_4                   INACTIVE
         5 LOG_ARCHIVE_DEST_5                   INACTIVE
         6 LOG_ARCHIVE_DEST_6                   INACTIVE
         7 LOG_ARCHIVE_DEST_7                   INACTIVE
         8 LOG_ARCHIVE_DEST_8                   INACTIVE
         9 LOG_ARCHIVE_DEST_9                   INACTIVE
        10 LOG_ARCHIVE_DEST_10                  INACTIVE

10 rows selected.

主库远程归档路径正常了,切记备库開始应用redo log前,先查看这个条件是否满足

6. 主备库创建standby redo logfile(假设仅仅採用arch方式归档,这步能够省略,推荐用lgwr方式)

SQL> alter database add standby logfile group 4 ('/u01/app/oracle/oradata/zlm/std04.redo') size 100m;
SQL> alter database add standby logfile group 5 ('/u01/app/oracle/oradata/zlm/std05.redo') size 100m;
SQL> alter database add standby logfile group 6 ('/u01/app/oracle/oradata/zlm/std06.redo') size 100m;
SQL> alter database add standby logfile group 7 ('/u01/app/oracle/oradata/zlm/std07.redo') size 100m;

主库创建的时候没问题,备库创建到第2个文件的时候报错

SQL> alter database add standby logfile group 4 ('/u01/app/oracle/oradata/zlm/std04.redo') size 100m;

Database altered.

SQL> alter database add standby logfile group 5 ('/u01/app/oracle/oradata/zlm/std05.redo') size 100m;
alter database add standby logfile group 5 ('/u01/app/oracle/oradata/zlm/std05.redo') size 100m
*
ERROR at line 1:
ORA-19502: write error on file "/u01/app/oracle/oradata/zlm/std05.redo", blockno 198657 (blocksize=512)
ORA-27072: File I/O error
Linux-x86_64 Error: 9: Bad file descriptor  --错误的描写叙述符
Additional information: 4
Additional information: 198657
Additional information: 790016

開始还以为是磁盘有损坏,原来是可用空间不够了,初始仅仅给了15G,想想装个10g足够了,Oracle软件和patch的安装文件用完后没及时删除,占用掉不少空间

--再次查看一下是否生成了standby redo logfile

SQL> !ls -lrt /u01/app/oracle/oradata/zlm
total 1275164
-rw-r-----. 1 oracle oinstall  31465472 Jul 30 13:47 undotbs01.dbf
-rw-r-----. 1 oracle oinstall 104865792 Jul 30 13:47 example01.dbf
-rw-r-----. 1 oracle oinstall 262152192 Jul 30 13:47 sysaux01.dbf
-rw-r-----. 1 oracle oinstall   5251072 Jul 30 13:47 users01.dbf
-rw-r-----. 1 oracle oinstall 461381632 Jul 30 13:47 system01.dbf
-rw-r-----. 1 oracle oinstall 104858112 Jul 30 15:07 std04.redo
-rw-r-----. 1 oracle oinstall 104858112 Jul 30 15:25 std05.redo
-rw-r-----. 1 oracle oinstall 104858112 Jul 30 15:25 std06.redo
-rw-r-----. 1 oracle oinstall 104858112 Jul 30 15:25 std07.redo
-rw-r-----. 1 oracle oinstall   7061504 Jul 30 15:25 control01.ctl
-rw-r-----. 1 oracle oinstall   7061504 Jul 30 15:25 control02.ctl
-rw-r-----. 1 oracle oinstall   7061504 Jul 30 15:25 control03.ctl

7. 备库開始redo apply

SQL> recover managed standby database using current logfile disconnect from session;
Media recovery complete.

--查看备库数据文件文件夹,发现并未生成redo01.log,redo02.log,redo03.log这3个文件

SQL> !ls -lrt /u01/app/oracle/oradata/zlm
total 1275164
-rw-r-----. 1 oracle oinstall 104858112 Jul 30 15:07 std04.redo
-rw-r-----. 1 oracle oinstall 104858112 Jul 30 15:25 std05.redo
-rw-r-----. 1 oracle oinstall 104858112 Jul 30 15:25 std06.redo
-rw-r-----. 1 oracle oinstall 104858112 Jul 30 15:25 std07.redo
-rw-r-----. 1 oracle oinstall 461381632 Jul 30 15:27 system01.dbf
-rw-r-----. 1 oracle oinstall  31465472 Jul 30 15:27 undotbs01.dbf
-rw-r-----. 1 oracle oinstall 262152192 Jul 30 15:27 sysaux01.dbf
-rw-r-----. 1 oracle oinstall   5251072 Jul 30 15:27 users01.dbf
-rw-r-----. 1 oracle oinstall 104865792 Jul 30 15:27 example01.dbf
-rw-r-----. 1 oracle oinstall   7061504 Jul 30 15:27 control01.ctl
-rw-r-----. 1 oracle oinstall   7061504 Jul 30 15:27 control02.ctl
-rw-r-----. 1 oracle oinstall   7061504 Jul 30 15:27 control03.ctl

--查看备库alertlog,提示无法得到文件状态,找不到该文件

ALTER DATABASE RECOVER  managed standby database using current logfile disconnect from session  
Wed Jul 30 15:27:18 CST 2014
Attempt to start background Managed Standby Recovery process (zlm)
MRP0 started with pid=19, OS id=16199
Wed Jul 30 15:27:18 CST 2014
MRP0: Background Managed Standby Recovery process started (zlm)
Managed Standby Recovery starting Real Time Apply
 parallel recovery started with 2 processes
Wed Jul 30 15:27:24 CST 2014
Waiting for all non-current ORLs to be archived...
Wed Jul 30 15:27:24 CST 2014
Errors in file /u01/app/oracle/admin/zlm/bdump/zlm_mrp0_16199.trc:
ORA-00313: open failed for members of log group 1 of thread 1
ORA-00312: online log 1 thread 1: '/u01/app/oracle/oradata/zlm/redo01.log'
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
Wed Jul 30 15:27:24 CST 2014
Errors in file /u01/app/oracle/admin/zlm/bdump/zlm_mrp0_16199.trc:
ORA-00313: open failed for members of log group 1 of thread 1
ORA-00312: online log 1 thread 1: '/u01/app/oracle/oradata/zlm/redo01.log'
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
Clearing online redo logfile 1 /u01/app/oracle/oradata/zlm/redo01.log
Clearing online log 1 of thread 1 sequence number 1
Wed Jul 30 15:27:24 CST 2014
Errors in file /u01/app/oracle/admin/zlm/bdump/zlm_mrp0_16199.trc:
ORA-00313: open failed for members of log group 1 of thread 1
ORA-00312: online log 1 thread 1: '/u01/app/oracle/oradata/zlm/redo01.log'
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
Wed Jul 30 15:27:24 CST 2014
Errors in file /u01/app/oracle/admin/zlm/bdump/zlm_mrp0_16199.trc:
ORA-19527: physical standby redo log must be renamed
ORA-00312: online log 1 thread 1: '/u01/app/oracle/oradata/zlm/redo01.log'
Clearing online redo logfile 1 complete --尽管提示complete,但并未成功,也就是说,没有生成对应文件
Media Recovery Waiting for thread 1 sequence 3
Wed Jul 30 15:27:24 CST 2014
Completed: ALTER DATABASE RECOVER  managed standby database using current logfile disconnect from session

在之前的文章中提到过 http://blog.csdn.net/aaron8219/article/details/37902793,对于10g,须要要设置一个參数,那就是log_file_name_convert,哪怕主备库的路径全然一样,并且因为这个參数无法在线改动,必须重新启动数据库才干生效,也就是要停库。因为创建过standby redo logfile,还是能够应用日志的,对DG配置没有影响,之后又做了个測试,发现主库和备库做一次正常的switchover并又一次open后,会自己主动生成和原主库一致的3个online redo logfile,即redo01.log,redo02.log,redo03.log,既然备库switchover成主库后,能够正常生成online redo logfile,那么就能够考虑不设置log_file_name_convert參数了,但前提必须是主备库的路径确实是一致的,否则这个參数还是不能少

通过查看备库switchover成主库以后跟踪到的日志得到这一结论

Thu Jul 31 12:58:42 CST 2014
alter database commit to switchover to primary
Thu Jul 31 12:58:42 CST 2014
ALTER DATABASE SWITCHOVER TO PRIMARY (zlm)
Thu Jul 31 12:58:42 CST 2014
If media recovery active, switchover will wait 900 seconds
SwitchOver after complete recovery through change 492782
Thu Jul 31 12:58:42 CST 2014
Errors in file /u01/app/oracle/admin/zlm/udump/zlm_ora_4548.trc:
ORA-00313: open failed for members of log group 1 of thread 1
ORA-00312: online log 1 thread 1: '/u01/app/oracle/oradata/zlm/redo01.log'
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
Thu Jul 31 12:58:43 CST 2014
Errors in file /u01/app/oracle/admin/zlm/udump/zlm_ora_4548.trc:
ORA-00313: open failed for members of log group 2 of thread 1
ORA-00312: online log 2 thread 1: '/u01/app/oracle/oradata/zlm/redo02.log'
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
Thu Jul 31 12:58:44 CST 2014
Errors in file /u01/app/oracle/admin/zlm/udump/zlm_ora_4548.trc:
ORA-00313: open failed for members of log group 3 of thread 1
ORA-00312: online log 3 thread 1: '/u01/app/oracle/oradata/zlm/redo03.log'
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
Standby became primary SCN: 492780
Converting standby mount to primary mount.
Thu Jul 31 12:58:46 CST 2014
Switchover: Complete - Database mounted as primary (zlm)
Thu Jul 31 12:58:46 CST 2014
ARC1: STARTING ARCH PROCESSES
Thu Jul 31 12:58:46 CST 2014
Completed: alter database commit to switchover to primary
Thu Jul 31 12:58:46 CST 2014
ARC2: Archival started
ARC1: STARTING ARCH PROCESSES COMPLETE
ARC2 started with pid=18, OS id=4703
Thu Jul 31 12:59:24 CST 2014
ARC0: Becoming the 'no SRL' ARCH
Thu Jul 31 13:01:03 CST 2014
alter database open
Thu Jul 31 13:01:03 CST 2014
Assigning activation ID 3930494507 (0xea46962b)
LNS1 started with pid=19, OS id=4724
Thu Jul 31 13:01:06 CST 2014
Thread 1 advanced to log sequence 14 (thread open)
Thu Jul 31 13:01:06 CST 2014
******************************************************************
LGWR: Setting 'active' archival for destination LOG_ARCHIVE_DEST_2
******************************************************************
Thu Jul 31 13:01:06 CST 2014
Thread 1 opened at log sequence 14
  Current log# 2 seq# 14 mem# 0: /u01/app/oracle/oradata/zlm/redo02.log
Successful open of redo thread 1

注意看这3个online redo logfile生成的时间,即改动时间,因为当前使用的是redo02.log,随着时间的推移,redo02.log的最后改动时间会不断地添加,直到切换到其它日志文件上

SQL> !ls -lrt /u01/app/oracle/oradata/zlm
total 1428848
-rw-r-----. 1 oracle oinstall  20979712 Jul 31 10:56 temp01.dbf
-rw-r-----. 1 oracle oinstall  52429312 Jul 31 13:01 redo03.log
-rw-r-----. 1 oracle oinstall  52429312 Jul 31 13:01 redo01.log
-rw-r-----. 1 oracle oinstall   5251072 Jul 31 13:01 users01.dbf
-rw-r-----. 1 oracle oinstall 104865792 Jul 31 13:01 example01.dbf
-rw-r-----. 1 oracle oinstall 104858112 Jul 31 13:01 std04.redo
-rw-r-----. 1 oracle oinstall 104858112 Jul 31 13:01 std05.redo
-rw-r-----. 1 oracle oinstall 104858112 Jul 31 13:01 std06.redo
-rw-r-----. 1 oracle oinstall 104858112 Jul 31 13:01 std07.redo
-rw-r-----. 1 oracle oinstall 262152192 Jul 31 13:12 sysaux01.dbf
-rw-r-----. 1 oracle oinstall 461381632 Jul 31 13:12 system01.dbf
-rw-r-----. 1 oracle oinstall  31465472 Jul 31 13:13 undotbs01.dbf
-rw-r-----. 1 oracle oinstall  52429312 Jul 31 13:13 redo02.log
-rw-r-----. 1 oracle oinstall   7061504 Jul 31 13:13 control01.ctl
-rw-r-----. 1 oracle oinstall   7061504 Jul 31 13:13 control02.ctl
-rw-r-----. 1 oracle oinstall   7061504 Jul 31 13:13 control03.ctl

能够看到,reod02.log的最后改动时间变成13:13了

--备库初始状态

SQL> archive log list
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     1
Next log sequence to archive   0
Current log sequence           3

--主库初始状态

SQL> archive log list
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     1
Next log sequence to archive   3
Current log sequence           3

--主库切换3次日志

SQL> alter system switch logfile;

System altered.

SQL> alter system switch logfile;

System altered.

SQL> alter system switch logfile;

System altered.

--备库归档日志状态

SQL> archive log list
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     4
Next log sequence to archive   0
Current log sequence           6

--查看日志应用情况

SQL> select sequence#,applied from v$archived_log;

SEQUENCE# APP
---------- ---
         3 YES
         4 YES
         5 YES

--备库停止redo apply

SQL> recover managed standby disconnect from session;

--主库再切2次归档后查看归档

SQL> alter system switch logfile;

System altered.

SQL> alter system switch logfile;

System altered.

SQL> archive log list
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     7
Next log sequence to archive   9
Current log sequence           9

--此时能够看到,备库接收到了2个新切的归档7,8,但未应用

SQL> archive log list
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     7
Next log sequence to archive   0
Current log sequence           9
SQL> select sequence#,applied from v$archived_log;

SEQUENCE# APP
---------- ---
         3 YES
         4 YES
         5 YES
         6 YES
         7 NO
         8 NO

--备库再启用redo apply,这次不使用using crrent logfile

SQL> recover managed standby database disconnect from session;

--跟踪备库的alertlog日志

Wed Jul 30 15:47:03 CST 2014
ALTER DATABASE RECOVER  managed standby database cancel  
Wed Jul 30 15:47:03 CST 2014
MRP0: Background Media Recovery cancelled with status 16037
Wed Jul 30 15:47:03 CST 2014
Errors in file /u01/app/oracle/admin/zlm/bdump/zlm_mrp0_16199.trc:
ORA-16037: user requested cancel of managed recovery operation
Managed Standby Recovery not using Real Time Apply
Recovery interrupted!
Recovered data files to a consistent state at change 465658
Wed Jul 30 15:47:04 CST 2014
Errors in file /u01/app/oracle/admin/zlm/bdump/zlm_mrp0_16199.trc:
ORA-16037: user requested cancel of managed recovery operation
Wed Jul 30 15:47:04 CST 2014
MRP0: Background Media Recovery process shutdown (zlm)
Wed Jul 30 15:47:04 CST 2014
Managed Standby Recovery Canceled (zlm)
Wed Jul 30 15:47:04 CST 2014
Completed: ALTER DATABASE RECOVER  managed standby database cancel  
Wed Jul 30 15:47:13 CST 2014
Primary database is in MAXIMUM PERFORMANCE mode
RFS[2]: Successfully opened standby log 4: '/u01/app/oracle/oradata/zlm/std04.redo'
Primary database is in MAXIMUM PERFORMANCE mode
RFS[2]: Successfully opened standby log 5: '/u01/app/oracle/oradata/zlm/std05.redo'
Wed Jul 30 15:47:42 CST 2014
ALTER DATABASE RECOVER  managed standby database disconnect from session  
Wed Jul 30 15:47:42 CST 2014
Attempt to start background Managed Standby Recovery process (zlm)
MRP0 started with pid=19, OS id=16248
Wed Jul 30 15:47:42 CST 2014
MRP0: Background Managed Standby Recovery process started (zlm)
Managed Standby Recovery not using Real Time Apply
 parallel recovery started with 2 processes
Wed Jul 30 15:47:47 CST 2014
Waiting for all non-current ORLs to be archived...
Wed Jul 30 15:47:47 CST 2014
Errors in file /u01/app/oracle/admin/zlm/bdump/zlm_mrp0_16248.trc:
ORA-00313: open failed for members of log group 1 of thread 1
ORA-00312: online log 1 thread 1: '/u01/app/oracle/oradata/zlm/redo01.log'
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
Wed Jul 30 15:47:47 CST 2014
Errors in file /u01/app/oracle/admin/zlm/bdump/zlm_mrp0_16248.trc:
ORA-00313: open failed for members of log group 1 of thread 1
ORA-00312: online log 1 thread 1: '/u01/app/oracle/oradata/zlm/redo01.log'
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
Clearing online redo logfile 1 /u01/app/oracle/oradata/zlm/redo01.log
Clearing online log 1 of thread 1 sequence number 7
Wed Jul 30 15:47:47 CST 2014
Errors in file /u01/app/oracle/admin/zlm/bdump/zlm_mrp0_16248.trc:
ORA-00313: open failed for members of log group 1 of thread 1
ORA-00312: online log 1 thread 1: '/u01/app/oracle/oradata/zlm/redo01.log'
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
Wed Jul 30 15:47:47 CST 2014
Errors in file /u01/app/oracle/admin/zlm/bdump/zlm_mrp0_16248.trc:
ORA-19527: physical standby redo log must be renamed
ORA-00312: online log 1 thread 1: '/u01/app/oracle/oradata/zlm/redo01.log'
Clearing online redo logfile 1 complete
Media Recovery Log /u01/app/oracle/flash_recovery_area/ZLMDG/archivelog/2014_07_30/o1_mf_1_7_9xk8r16v_.arc
Media Recovery Log /u01/app/oracle/flash_recovery_area/ZLMDG/archivelog/2014_07_30/o1_mf_1_8_9xk8r1jc_.arc
Wed Jul 30 15:47:48 CST 2014
Completed: ALTER DATABASE RECOVER  managed standby database disconnect from session  
Wed Jul 30 15:47:48 CST 2014
Media Recovery Waiting for thread 1 sequence 9 (in transit)

发现online redo logfile还是无法获取,仍然会提示standby redo log须要重命名,可是去能够成功地应用刚才剩下的2个归档7,8

SQL> select sequence#,applied from v$archived_log;

SEQUENCE# APP
---------- ---
         3 YES
         4 YES
         5 YES
         6 YES
         7 YES
         8 YES

6 rows selected.

查看一下数据文件存放的文件夹,的确依然没有生成我么所期待的online redo logfile(redo01.log,redo02.log,redo03.log)

SQL> !ls -lrt /u01/app/oracle/oradata/zlm
total 1275164
-rw-r-----. 1 oracle oinstall 104858112 Jul 30 15:25 std06.redo
-rw-r-----. 1 oracle oinstall 104858112 Jul 30 15:25 std07.redo
-rw-r-----. 1 oracle oinstall 104858112 Jul 30 15:47 std04.redo
-rw-r-----. 1 oracle oinstall  31465472 Jul 30 15:47 undotbs01.dbf
-rw-r-----. 1 oracle oinstall 461381632 Jul 30 15:47 system01.dbf
-rw-r-----. 1 oracle oinstall 262152192 Jul 30 15:47 sysaux01.dbf
-rw-r-----. 1 oracle oinstall   5251072 Jul 30 15:47 users01.dbf
-rw-r-----. 1 oracle oinstall 104865792 Jul 30 15:47 example01.dbf
-rw-r-----. 1 oracle oinstall 104858112 Jul 30 15:56 std05.redo
-rw-r-----. 1 oracle oinstall   7061504 Jul 30 15:56 control01.ctl
-rw-r-----. 1 oracle oinstall   7061504 Jul 30 15:56 control02.ctl
-rw-r-----. 1 oracle oinstall   7061504 Jul 30 15:56 control03.ctl

关闭主库,加入log_file_name_convert參数后,这种DG才算是完整的配置

Deploy Oracle 10.2.0.5 DataGuard on Red Hat Enterprise Linux 6.4相关推荐

  1. VMware虚拟机安装Red Hat Enterprise Linux 7.9.0 RHEL镜像下载安装

    目录 一.Red Hat Enterprise Linux 镜像下载(以RHEL7.9.0为例) 二.Red Hat虚拟机创建 1.创建虚拟机 2. 配置虚拟机镜像路径 3.Red Hat系统安装配置 ...

  2. Deploy Oracle 10.2.0.5 on Red Hat Enterprise Linux 6.4

    一.Linux系统安装和配置 1.安装系统时选Desktop 2.设置eth0网卡为静态IP,加入子网掩码,网关,DNS.并配置自己主动启动 3.改动/etc/hosts.加入主机名和相应IP 4.禁 ...

  3. oracle enterprise linux 5.7,Red Hat Enterprise Linux 5.7 安装Oracle数据库

    环境:Red Hat Enterprise Linux 5.7 数据库:Oracle 11g 1.Linux操作系统安装组建选择: GNOME Desktop Environment Editors ...

  4. Red Hat Enterprise Linux 5安装Oracle(10g/11g)

    一.安装系统 首先安装Linux系统,根据Oracle官方文档的建议,在机器内存小于1G的情况下,swap分区大小应该设置为内存的2倍大,若内存大于2G则swap分区设置为与内存大小一样. 其实Lin ...

  5. rhel6上使用udev配置oracle asm,Red Hat Enterprise Linux 6使用udev配置Oracle ASM总结文档

    1.概述 在Red Hat Enterprise Linux (RHEL)6以前,Oracle均是使用ASMLib这个内核支持库配置ASM. ASMLIB是一种基于Linux module,专门为Or ...

  6. Red Hat Enterprise Linux Server release 7.0双系统安装

    2019独角兽企业重金招聘Python工程师标准>>> Red Hat Enterprise Linux Server release 7.0双系统安装 1.RedHat 公司的企业 ...

  7. red hat linux 安装oracle10g vm,oracle 10g 在 RED HAT ENTERPRISE LINUX 5下的安装

    oracle 10g 在 RED HAT ENTERPRISE LINUX 5下的安装 ORACLE 10G在LINUX的安装: 先上来两张图: DBA是努力的方向,ORACLE DBA包罗万象,连L ...

  8. Red Hat Enterprise Linux 7.0 安装方法

    本次安装是在VMware Workstation Pro 12.0上安装 开始安装 一.选择安装方式 有3个选择项,分别是: 1.直接安装Linux 7.0: 2.先测试镜像是否有错,然后安装Linu ...

  9. Linux(Red Hat Enterprise Linux 6)安装Oracle(12c Release 2)数据库

    1.去oracle官网下载安装包和安装指南. 安装包:http://www.oracle.com/technetwork/database/enterprise-edition/downloads/i ...

最新文章

  1. php excel 转数组函数,使用PHPExcel将数组转换为Excel 2007
  2. jQuery遇到问题的小记
  3. boost::log::formatting_ostream用法的测试程序
  4. 团队博客作业-团队个人贡献分分配规则
  5. ai 图灵测试_适用于现代AI系统的“视觉图灵测试”
  6. 环境变量_配置JAVA环境变量
  7. 构建一个完整的中文智能问答系统
  8. word关闭首字母自动大写
  9. Java中基本数据类型的转换
  10. axure element ui素材_Element - 饿了么团队出品的神级桌面 UI 组件库
  11. PHP细说(加强版)
  12. JUCE框架教程(7)——AudioBuffer基础如何生成音频Output
  13. 基于树莓派的视频会议系统
  14. 你写论文时发现了哪些神网站?
  15. 对话90后,移动互联网新生代力量行为调查-20140219早读课
  16. CTS测试中CameraTest#testPreviewFpsRange项
  17. flv怎么转换成mp4格式?
  18. win10更新后应用无法连接服务器,win10更新无法连接到更新服务怎么办_win10无法连接到更新服务的解决方法...
  19. linux最后一行awk,51CTO博客-专业IT技术博客创作平台-技术成就梦想
  20. Android利用jsoup爬虫爬网页数据(一)

热门文章

  1. oracle x ksppi,求 x$ksppi 和x$ksppcv 得详细解释
  2. mysql 过滤单引号_python实现mysql的单引号字符串过滤方法
  3. php 上传文件 例子,php上传文件实例
  4. mysql 建前缀索引_MySQL_前缀索引_建立
  5. 提交日期表单状态操作_奇怪的知识又增加了,表单还能查寝?
  6. mysql 范围内日期列表_MySQL:即使没有记录,也选择范围内的所有日期
  7. 什么是事件冒泡?如何阻止事件冒泡?
  8. vs code使用问题
  9. Spark基础学习笔记19:RDD的依赖与Stage划分
  10. 【POJ1584】A Round Peg in a Ground Hole,第一次的计算几何