ORACLE 11G搭建dataguard详细步骤(物理standby所有操作总结)

序言:
      DATAGUARD是通过建立一个PRIMARY和STANDBY组来确立其参照关系;STANDBY一旦创建,DATAGUARD就会通过将主数据库(PRIMARY)的REDO传递给STANDBY数据库,然后在STANDBY中应用REDO实现数据库的同步。

有两种类型的STANDBY:物理STANDBY和逻辑STANDBY
    物理STANDBY提供与主数据库完全一样的拷贝(块到块),数据库SCHEMA,包括索引都是一样的。它是直接应用REDO实现同步的。
    逻辑STANDBY则不是这样,在逻辑STANDBY中,逻辑信息是相同的,但物理组织和数据结构可以不同,它和主库保持同步的方法是将接收的REDO转换成SQL语句,然后在STANDBY上执行SQL语句。逻辑STANDBY除灾难恢复外还有其它用途,比如用于用户进行查询和报表。

1、安装环境 
在primary搭建数据库软件,建立lsnrctl监听,采用dbca搭建实例,在standby上搭建数据库软件,建立监听,但是不需要采用dbca建立实例。
如何在linux上搭建oracle数据库,请参考以前的blog实验:http://blog.itpub.net/26230597/viewspace-1413242/

项目列表 primary库 standby库
操作系统:  都是centos6.4  都是centos6.4
oracle软件版本:  oracle 11.2.0.1.0  oracle 11.2.0.1.0
IP地址: 192.168.121.217 192.168.121.218
db_unique_name: pdunq pdunq_dg

?


2、准备工作 在primary上操作
2.1、打开Forced Logging 模式

先确认primary库处于归档模式
SQL> archive log list;
Database log mode       Archive Mode
Automatic archival       Enabled
Archive destination       USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     362
Next log sequence to archive   364
Current log sequence       364
SQL>

强制归档
SQL> alter database force logging;
 
Database altered.

SQL>
确认primary库是归档模式

添加standby文件
alter database add standby logfile group 4 (‘/home/oradata/powerdes/redo_dg_021.log‘) size 20M;
alter database add standby logfile group 5 (‘/home/oradata/powerdes/redo_dg_022.log‘) size 20M;
alter database add standby logfile group 6 (‘/home/oradata/powerdes/redo_dg_023.log‘) size 20M;
alter database drop standby logfile group 4;
alter database drop standby logfile group 5;
alter database drop standby logfile group 6;

查看所有redo文件列表,select * from v$logfile order by 1;
SQL> select * from v$logfile order by 1;

1   ONLINE  /home/oradata/powerdes/redo03.log           NO
2   ONLINE  /home/oradata/powerdes/redo02.log           NO
3   ONLINE  /home/oradata/powerdes/redo01.log           NO
4   STANDBY /home/oradata/powerdes/redo_dg_021.log           NO
5   STANDBY /home/oradata/powerdes/redo_dg_022.log           NO
6   STANDBY /home/oradata/powerdes/redo_dg_023.log           NO

6 rows selected.

SQL>

2.3 准备参数文件
2.3.1 生成pfile

create pfile from spfile;
shutdown immediate

2.3.2 修改pfile
cp $ORACLE_HOME/dbs/initpowerdes.ora $ORACLE_HOME/dbs/initpowerdes.ora.bak
vim $ORACLE_HOME/dbs/initpowerdes.ora
*.db_unique_name=pdunq
*.diagnostic_dest=‘/oracle/app/oracle‘
*.dispatchers=‘(PROTOCOL=TCP) (SERVICE=powerdesXDB)‘
*.fal_client=‘pdunq‘
*.fal_server=‘pdunq_dg‘
*.standby_file_management=‘AUTO‘
*.db_file_name_convert=‘/home/oradata/powerdes‘,‘/home/oradata/pwerdes‘
*.log_file_name_convert=‘/home/oradata/powerdes‘,‘/home/oradata/powerdes‘
*.log_archive_config=‘DG_CONFIG=(pdunq,pdunq_dg)‘
*.log_archive_dest_2=‘SERVICE=pdunq_dg  lgwr sync affirm VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=pdunq_dg‘
*.log_archive_dest_state_2=‘ENABLE‘

2.3.3 生成spfile
create spfile from pfile;
startup #这里可以启动也可以不启动,这里不启动,后面就要记得startup;让新的参数文件生效

2.4 修改监听文件
[[email protected] admin]$ vim listener.ora 
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = /oracle/app/oracle/product/11.2.0/dbhome_1)
      (PROGRAM = extproc)
    )
    (SID_DESC =
      (SID_NAME = powerdes)
      (ORACLE_HOME = /oracle/app/oracle/product/11.2.0/dbhome_1)
    )
  )

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

ADR_BASE_LISTENER = /oracle/app/oracle
INBOUND_CONNECT_TIMEOUT_listener=10

2.5,修改tns配置文件
[[email protected] admin]$ vim tnsnames.ora 
PD =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.121.217)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = pdunq)
    )
  )

SC_SID =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.121.218)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SID = powerdes)
        (SERVER = DEDICATED)
    )
  )

EXTPROC_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
    )
    (CONNECT_DATA =
      (SID = PLSExtProc)
      (PRESENTATION = RO)
    )
  )

2.6 监听服务重启
lsnrctl stop
lsnrctl start

2.7 primary上配置最大可用模式:
SQL>startup
SQL>alter database set standby database to maximize availability;
  
2.8 备份数据库
backup database plus archivelog;
backup current controlfile for standby;
exit;
备份结束后会在闪回区产生备份文件

3,数据库配置 standby上
3.1 建立相应的文件目录

包括dump文件目录,数据文件目录,通过show parameter dest;查看,保持和primary一样的路径地址

3.2 从primary上copy数据文件到standby上
在主库上执行:
ps:在primary上执行
copy闪回区内容
copy闪回文件
cd /oracle/app/oracle/flash_recovery_area/
scp -r ./* 192.168.121.218:/oracle/app/oracle/flash_recovery_area/

copy参数文件
cd /oracle/app/oracle/product/11.2.0/dbhome_1/dbs
scp -r ./* 192.168.121.218:/oracle/app/oracle/product/11.2.0/dbhome_1/dbs

copy监听文件
cd /oracle/app/oracle/product/11.2.0/dbhome_1/network/admin/
scp -r ./* 192.168.121.218:/oracle/app/oracle/product/11.2.0/dbhome_1/network/admin/

3.3 在standby库 修改配置文件 在standby上修改
[[email protected] admin]$ vim listener.ora

# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = /oracle/app/oracle/product/11.2.0/dbhome_1)
      (PROGRAM = extproc)
    )
    (SID_DESC =
      (SID_NAME = powerdes)
      (ORACLE_HOME = /oracle/app/oracle/product/11.2.0/dbhome_1)
    )
  )

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

在standby修改tns文件

3.4,修改参数文件
*.db_unique_name=‘pdunq_dg‘
*.diagnostic_dest=‘/oracle/app/oracle‘
*.dispatchers=‘(PROTOCOL=TCP) (SERVICE=powerdes)‘
*.fal_client=‘pdunq‘
*.fal_server=‘pdunq_dg‘
*.standby_file_management=‘AUTO‘
*.db_file_name_convert=‘/home/oradata/powerdes‘,‘/home/oradata/powerdes‘
*.log_file_name_convert=‘/home/oradata/powerdes‘,‘/home/oradata/powerdes‘
*.log_archive_config=‘DG_CONFIG=(pdunq,pdunq_dg)‘
*.log_archive_dest_2=‘SERVICE=pdunq_dg  lgwr sync affirm VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=pdunq_dg‘
*.log_archive_dest_state_2=‘ENABLE‘

PS:将*.log_archive_dest_2=后面的DB_UNIQUE_NAME改成primary的DB_UNIQUE_NAME值改为pdunq,这样在做switchover的时候,新的primary能通过这个将redo日志传到新的standby上面去。
log_archive_dest_N 目的是告诉数据库,把归档放到那里去可选项,首先是本地,然后考虑远程的从库,所以,假设A是主库,B是从库,切换之后B是主库,A是从库,所以,log_archive_dest_N需要设置为对方

3.5,重启监听 standby
[[email protected] dbs]$ lsnrctl stop

LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 10-FEB-2015 15:41:36

Copyright (c) 1991, 2009, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.121.218)(PORT=1521)))
The command completed successfully
[[email protected] dbs]$ lsnrctl start

LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 10-FEB-2015 15:41:41

Copyright (c) 1991, 2009, Oracle.  All rights reserved.

Starting /oracle/app/oracle/product/11.2.0/dbhome_1/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 11.2.0.1.0 - Production
System parameter file is /oracle/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
Log messages written to /oracle/app/oracle/diag/tnslsnr/powerlong5/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.121.218)(PORT=1521)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC0)))

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.121.218)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date                10-FEB-2015 15:41:41
Uptime                    0 days 0 hr. 0 min. 0 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /oracle/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
Listener Log File         /oracle/app/oracle/diag/tnslsnr/powerlong5/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.121.218)(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 "powerdes" has 1 instance(s).
  Instance "powerdes", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
[[email protected] dbs]$

3.6,恢复数据库 
在standby库上操作
[[email protected] admin]$ rman target sys/[email protected] auxiliary /

Argument     Value          Description
-----------------------------------------------------------------------------
target       quoted-string  connect-string for target database
catalog      quoted-string  connect-string for recovery catalog
nocatalog    none           if specified, then no recovery catalog
cmdfile      quoted-string  name of input command file
log          quoted-string  name of output message log file
trace        quoted-string  name of output debugging message log file
append       none           if specified, log is opened in append mode
debug        optional-args  activate debugging
msgno        none           show RMAN-nnnn prefix for all messages
send         quoted-string  send a command to the media manager
pipe         string         building block for pipe names
timeout      integer        number of seconds to wait for pipe input
checksyntax  none           check the command file for syntax errors
-----------------------------------------------------------------------------
Both single and double quotes (‘ or ") are accepted for a quoted-string.
Quotes are not required unless the string contains embedded white-space.

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-00552: syntax error in command line arguments
RMAN-01009: syntax error: found "end-of-file": expecting one of: "double-quoted-string, identifier, single-quoted-string, "
RMAN-01007: at line 0 column 0 file: command line arguments
[[email protected] admin]$ 
[[email protected] admin]$ 
[[email protected] admin]$

报错,看下是否standby没有启动导致?
SQL> startup

ORA-00845: MEMORY_TARGET not supported on this system
SQL> SQL> startup nomount
ORA-00845: MEMORY_TARGET not supported on this system
SQL> 
[[email protected] ~]# mount -t tmpfs shmfs -o size=12g /dev/shm
[[email protected] ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda3              57G   45G  8.9G  84% /
tmpfs                  12G     0   12G   0% /dev/shm
/dev/sda1             190M   51M  129M  29% /boot
/dev/sr0              4.1G  4.1G     0 100% /media/CentOS_6.4_Final
shmfs                  12G     0   12G   0% /dev/shm
[[email protected] ~]#

SQL> startup
ORA-09925: Unable to create audit trail file
Linux-x86_64 Error: 2: No such file or directory
Additional information: 9925
SQL> startup nomount
ORA-09925: Unable to create audit trail file
Linux-x86_64 Error: 2: No such file or directory
Additional information: 9925
ORA-09925: Unable to create audit trail file
Linux-x86_64 Error: 2: No such file or directory
Additional information: 9925
SQL> 
去primary库上查询下audit路径
SQL> show parameter audit_file_dest

NAME     TYPE VALUE
------------------------------------ ----------- ------------------------------
audit_file_dest     string /oracle/app/oracle/admin/powerdes/adump
SQL>

然后在standby上操作
SQL> startup nomount
ORA-01081: cannot start already-running ORACLE - shut it down first
SQL> shutdown
ORA-01507: database not mounted

ORACLE instance shut down.
SQL> startup nomount
ORACLE instance started.

Total System Global Area 1.1358E+10 bytes
Fixed Size    2216744 bytes
Variable Size 8589937880 bytes
Database Buffers 2751463424 bytes
Redo Buffers   13946880 bytes
SQL>

去primary修改sys密码:
SQL> alter user sys identified by "syxxlxxxx58";

User altered.

SQL>

在standby库执行rman target sys/[email protected] auxiliary /,如下所示:

  1. [[email protected] ~]$ rman target sys/[email protected] auxiliary /
  2. Recovery Manager: Release 11.2.0.1.0 - Production on Sat Feb 7 19:08:16 2015
  3. Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
  4. connected to target database: POWERDES (DBID=3391761643)
  5. connected to auxiliary database: POWERDES (not mounted)
  6. RMAN> run {
  7. allocate auxiliary channel c1 device type disk;
  8. allocate auxiliary channel c2 device type disk;
  9. duplicate target database for standby nofilenamecheck dorecover;
  10. release channel c1;
  11. release channel c2;
  12. }
  13. 2> 3> 4> 5> 6> 7>
  14. using target database control file instead of recovery catalog
  15. allocated channel: c1
  16. channel c1: SID=767 device type=DISK
  17. allocated channel: c2
  18. channel c2: SID=1150 device type=DISK
  19. Starting Duplicate Db at 07-FEB-15
  20. contents of Memory Script:
  21. {
  22. set until scn 10903678943;
  23. restore clone standby controlfile;
  24. }
  25. executing Memory Script
  26. executing command: SET until clause
  27. Starting restore at 07-FEB-15
  28. channel c1: starting datafile backup set restore
  29. channel c1: restoring control file
  30. channel c1: reading from backup piece /oracle/app/oracle/flash_recovery_area/PDUNQ/backupset/2015_02_07/o1_mf_ncsnf_TAG20150207T182252_bfct20tb_.bkp
  31. channel c1: piece handle=/oracle/app/oracle/flash_recovery_area/PDUNQ/backupset/2015_02_07/o1_mf_ncsnf_TAG20150207T182252_bfct20tb_.bkp tag=TAG20150207T182252
  32. channel c1: restored backup piece 1
  33. channel c1: restore complete, elapsed time: 00:00:01
  34. output file name=/oracle/data_ora/powerdes/control01.ctl
  35. output file name=/oracle/app/oracle/flash_recovery_area/powerdes/control02.ctl
  36. Finished restore at 07-FEB-15
  37. contents of Memory Script:
  38. {
  39. sql clone \‘alter database mount standby database\‘;
  40. }
  41. executing Memory Script
  42. sql statement: alter database mount standby database
  43. contents of Memory Script:
  44. {
  45. set until scn 10903678943;
  46. set newname for datafile 1 to
  47. \"/home/oradata/pwerdes/system01.dbf\";
  48. set newname for datafile 2 to
  49. \"/home/oradata/pwerdes/sysaux01.dbf\";
  50. set newname for datafile 3 to
  51. \"/home/oradata/pwerdes/undotbs01.dbf\";
  52. set newname for datafile 4 to
  53. \"/home/oradata/pwerdes/users01.dbf\";
  54. set newname for datafile 6 to
  55. \"/home/oradata/pwerdes/plas01.dbf\";
  56. set newname for datafile 7 to
  57. \"/home/oradata/pwerdes/pl01.dbf\";
  58. set newname for datafile 8 to
  59. \"/home/oradata/pwerdes/help01.dbf\";
  60. set newname for datafile 9 to
  61. \"/home/oradata/pwerdes/adobelc01.dbf\";
  62. set newname for datafile 10 to
  63. \"/home/oradata/pwerdes/sms01.dbf\";
  64. restore
  65. clone database
  66. ;
  67. }
  68. executing Memory Script
  69. executing command: SET until clause
  70. executing command: SET NEWNAME
  71. executing command: SET NEWNAME
  72. executing command: SET NEWNAME
  73. executing command: SET NEWNAME
  74. executing command: SET NEWNAME
  75. executing command: SET NEWNAME
  76. executing command: SET NEWNAME
  77. executing command: SET NEWNAME
  78. executing command: SET NEWNAME
  79. Starting restore at 07-FEB-15
  80. channel c1: starting datafile backup set restore
  81. channel c1: specifying datafile(s) to restore from backup set
  82. channel c1: restoring datafile 00001 to /home/oradata/pwerdes/system01.dbf
  83. channel c1: restoring datafile 00002 to /home/oradata/pwerdes/sysaux01.dbf
  84. channel c1: restoring datafile 00003 to /home/oradata/pwerdes/undotbs01.dbf
  85. channel c1: restoring datafile 00004 to /home/oradata/pwerdes/users01.dbf
  86. channel c1: restoring datafile 00006 to /home/oradata/pwerdes/plas01.dbf
  87. channel c1: restoring datafile 00007 to /home/oradata/pwerdes/pl01.dbf
  88. channel c1: restoring datafile 00008 to /home/oradata/pwerdes/help01.dbf
  89. channel c1: restoring datafile 00009 to /home/oradata/pwerdes/adobelc01.dbf
  90. channel c1: restoring datafile 00010 to /home/oradata/pwerdes/sms01.dbf
  91. channel c1: reading from backup piece /oracle/app/oracle/flash_recovery_area/PDUNQ/backupset/2015_02_07/o1_mf_nnndf_TAG20150207T182252_bfcsvxoz_.bkp
  92. channel c1: piece handle=/oracle/app/oracle/flash_recovery_area/PDUNQ/backupset/2015_02_07/o1_mf_nnndf_TAG20150207T182252_bfcsvxoz_.bkp tag=TAG20150207T182252
  93. channel c1: restored backup piece 1
  94. channel c1: restore complete, elapsed time: 00:04:05
  95. Finished restore at 07-FEB-15
  96. contents of Memory Script:
  97. {
  98. switch clone datafile all;
  99. }
  100. executing Memory Script
  101. datafile 1 switched to datafile copy
  102. input datafile copy RECID=3 STAMP=871067691 file name=/home/oradata/pwerdes/system01.dbf
  103. datafile 2 switched to datafile copy
  104. input datafile copy RECID=4 STAMP=871067691 file name=/home/oradata/pwerdes/sysaux01.dbf
  105. datafile 3 switched to datafile copy
  106. input datafile copy RECID=5 STAMP=871067691 file name=/home/oradata/pwerdes/undotbs01.dbf
  107. datafile 4 switched to datafile copy
  108. input datafile copy RECID=6 STAMP=871067691 file name=/home/oradata/pwerdes/users01.dbf
  109. datafile 6 switched to datafile copy
  110. input datafile copy RECID=7 STAMP=871067691 file name=/home/oradata/pwerdes/plas01.dbf
  111. datafile 7 switched to datafile copy
  112. input datafile copy RECID=8 STAMP=871067691 file name=/home/oradata/pwerdes/pl01.dbf
  113. datafile 8 switched to datafile copy
  114. input datafile copy RECID=9 STAMP=871067691 file name=/home/oradata/pwerdes/help01.dbf
  115. datafile 9 switched to datafile copy
  116. input datafile copy RECID=10 STAMP=871067692 file name=/home/oradata/pwerdes/adobelc01.dbf
  117. datafile 10 switched to datafile copy
  118. input datafile copy RECID=11 STAMP=871067692 file name=/home/oradata/pwerdes/sms01.dbf
  119. contents of Memory Script:
  120. {
  121. set until scn 10903678943;
  122. recover
  123. standby
  124. clone database
  125. delete archivelog
  126. ;
  127. }
  128. executing Memory Script
  129. executing command: SET until clause
  130. Starting recover at 07-FEB-15
  131. starting media recovery
  132. archived log for thread 1 with sequence 302 is already on disk as file /oracle/app/oracle/flash_recovery_area/archivelog/1_302_870804216.dbf
  133. archived log file name=/oracle/app/oracle/flash_recovery_area/archivelog/1_302_870804216.dbf thread=1 sequence=302
  134. media recovery complete, elapsed time: 00:00:00
  135. Finished recover at 07-FEB-15
  136. Finished Duplicate Db at 07-FEB-15
  137. released channel: c1
  138. released channel: c2
  139. RMAN> exit

3.7  standby上修改参数文件
先关闭oracle
shutdown immediate
然后开始修改参数文件
cd  $ORACLE_HOME/dbs 
vim initpowerdes.ora
# 主要是修改db_unique_name
*.db_unique_name=‘pdunq_dg‘
*.diagnostic_dest=‘/oracle/app/oracle‘
*.dispatchers=‘(PROTOCOL=TCP) (SERVICE=powerdesXDB)‘
*.fal_client=‘PD1‘
*.fal_server=‘PD2‘
*.global_names=FALSE
*.job_queue_processes=1000
*.log_archive_config=‘DG_CONFIG=(pdunq,pddgunq)‘
重新创建参数文件
create spfile from pfile;

3.8 启动数据库
startup nomount;
alter database mount standby database;
alter database add standby logfile;
alter database add standby logfile;
alter database add standby logfile;
alter database recover managed standby database using current logfile disconnect from session;

4,检查看到归档没有过来
SQL> archive log list;
Database log mode       Archive Mode
Automatic archival       Enabled
Archive destination       ?/dbs/arch
Oldest online log sequence     0
Next log sequence to archive   0
Current log sequence       0
SQL> 
看到归档信息为0,说明primary上的redo日志没有传到standby上来。

4.1,查看alert日志
[[email protected] trace]$ tail -f /oracle/app/oracle/diag/rdbms/pdunq_dg/powerdes/trace/alert_powerdes.log 
MRP0 started with pid=41, OS id=21243 
MRP0: Background Managed Standby Recovery process started (powerdes)
 started logmerger process
Sat Feb 07 20:12:18 2015
Managed Standby Recovery not using Real Time Apply
Parallel Media Recovery started with 4 slaves
Waiting for all non-current ORLs to be archived...
All non-current ORLs have been archived.
Media Recovery Waiting for thread 1 sequence 303
Completed: alter database recover managed standby database disconnect from session

查看日志传输情况
    select sequence#,first_time,next_time from v$archived_log;
SELECT sequence#,to_char(first_time,‘yyyy-mm-dd hh24:mi:ss‘) first_time,to_char(next_time,‘yyyy-mm-dd hh24:mi:ss‘) next_time from v$archived_log;
primary :

问题分析解决:
primary主库上的alert日志有错:
Error 12154 received logging on to the standby
Errors in file /oracle/app/oracle/diag/rdbms/pdunq/powerdes/trace/powerdes_arc2_22609.trc:
ORA-12154: TNS:could not resolve the connect identifier specified
PING[ARC2]: Heartbeat failed to connect to standby ‘pdunq_dg‘. Error is 12154.
错误很清晰了,主库无法检测到从库存在
tns 12154 错误,主库无法 tnsping pdunq_dg 
tnsping standby库报错 
[[email protected] admin]$ tnsping pdunq_dg

TNS Ping Utility for Linux: Version 11.2.0.1.0 - Production on 08-FEB-2015 21:42:26

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

Used parameter files:

TNS-03505: Failed to resolve name
[[email protected] admin]$

参数文件里面
*.log_archive_dest_2=‘SERVICE=pdunq_dg  lgwr sync affirm VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=pdunq_dg‘
SERVICE=pdunq_dg 要和tnsnames.ora里面的保持一致。

4.2,去tnsnames.ora里面修改配置
去把tnsnames.ora里面的改成pdunq_dg即可。
重启lsnrctl,然后查看从库归档日志,有日志了,如下所示:
SQL> archive log list;
Database log mode       Archive Mode
Automatic archival       Enabled
Archive destination       USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     350
Next log sequence to archive   0
Current log sequence       351
SQL>

备库切换到open状态:
退出redo应用状态
SQL> alter database recover managed standby database cancel;
Database altered.
PS:停止standby的redo应用 ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;注意,此时只是暂时redo 应用,并不是停止Standby 数据库,standby 仍会保持接收只不过不会再应用接收到的归档,直到你再次启动redo 应用为止。类似mysql里面的stop slave功能;

打开standby上的oracle库
SQL> alter database open;
Database altered. 
再应用redo日志
SQL> alter database recover managed standby database using current logfile disconnect ; 
Database altered.
SQL>

去primary、standby库上面执行检查
SQL> select sequence#,applied from v$archived_log;

查看最新的scn:
SQL> select max(sequence#) from v$archived_log;

primary和standby都保持一致,OK,dataguard搭建完成。

----------------------------------------------------------------------------------------------------------------
<版权所有,文章允许转载,但必须以链接方式注明源地址,否则追究法律责任!>
原博客地址:      http://blog.itpub.net/26230597/viewspace-1432637/
原作者:黄杉 (mchdba)
----------------------------------------------------------------------------------------------------------------

时间: 2024-12-20 01:08:41

ORACLE 11G搭建dataguard详细步骤(物理standby所有操作总结)的相关文章

ORACLE 11G 搭建dataguard详细步骤(所有操作总结)

序言:DATAGUARD是通过建立一个PRIMARY和STANDBY组来确立其参照关系.STANDBY一旦创建,DATAGUARD就会通过将主数据库(PRIMARY)的REDO传递给STANDBY数据库,然后在STANDBY中应用REDO实现数据库的同步. 有两种类型的STANDBY:物理STANDBY和逻辑STANDBY物理STANDBY提供与主数据库完全一样的拷贝(块到块),数据库SCHEMA,包括索引都是一样的.它是直接应用REDO实现同步的.逻辑STANDBY则不是这样,在逻辑STAND

Oracle 11g服务器端安装详细步骤——图文教程 转

http://jingyan.baidu.com/article/363872eccfb9266e4aa16f5d.html 方法/步骤 1 大家可以根据自己的操作系统是多少位(32位或64位)的,到官网下载相应的安装程序,如下图所示. 有一点需要注意,Oracle的安装程序分成2个文件,下载后将2个文件解压到同一目录即可. 2 下载完成后,将2个压缩文件一起选中,鼠标右键—>解压文件,如下图所示.两个压缩文件解压到同一目录下. 需要注意的是,路径名称中最好不要出现中文.空格等不规则字符.(由于

ORACLE 11G 之DATAGUARD搭建逻辑standby

Oracle Data Guard逻辑备库是利用主库的一个备份首先建立一个物理备库,然后再将其转换为逻辑备库.这之后主库将日志传递到备库,备库利用logminer从主库的日志中解析出主库所执行过的SQL,在备库上重新执行一遍,从而保证与主库的数据在逻辑上保持一致.与物理备库相对应的是,物理备库使用的是redo apply,逻辑备库使用的是sql apply.因此逻辑备库仅仅保证数据与主库是在逻辑上是一致的,从而逻辑备库可以处于open状态下并进行相应的DML操作. 在转换physical备库到l

ORACLE 11G 之DATAGUARD搭建物理standby

1 安装环境 在Primary库上安装数据库软件,并建监听和实例,在Standby库上安装数据库软件,并建监听,但不建实例. Primary库 Standby库 操作系统 CentOS release 6.4 64位 CentOS release 6.4 64位 IP/主机名 192.183.3.17/nn 192.183.3.145/kk 数据库软件版本 oracle 11.2.0.1.0 oracle 11.2.0.1.0 ORACLE_HOME /home/oracle/product /

CentOS 5.11下Oracle 11G R2 Dataguard搭建

Datagard算是Oracle企业版的一种容灾方案,在企业中广泛应用,我就将搭建过程记录下来以作备用. 主机名    数据库版本    实例名    IP db1    Oracle 11G R2    member    172.16.1.250 db2    Oracle 11G R2    member    172.16.1.251 默认情况下以上都已经安装好了Oracle数据库,但是只在db1上建立了数据库和监听,db2只安装Oracle软件不建库,不建监听. 目录: 打开强制归档日

DataGuard相同SID物理Standby搭建

Oracle Data Guard 是针对企业数据库的最有效和最全面的数据可用性.数据保护和灾难恢复解决方案.它提供管理.监视和自动化软件基础架构来创建和维护一个或多个同步备用数据库,从而保护数据不受故障.灾难.错误和损坏的影响. Data Guard 优点 灾难恢复和高可用性Data Guard 提供了一个高效.全面的灾难恢复和高可用性解决方案.自动故障切换和易于管理的转换功能允许主数据库和备用数据库之间的快速角色转换,从而使主数据库因计划中和计划外的中断所导致的停机时间减到最少. 完善的数据

Oracle 11g的dataguard创建中ORA-01665解决过程

Oracle 11g在创建data guard时,恢复standby控制文件不成功.在mount standby database时告诉我,控制文件不是standby控制文件,具体信息为"ORA-01665: control file is not a standby control file". 控制文件我在主库中,使用rman生成的. backup current controlfile for standby format 'xxxxxx/ctl.stdy'; 拷贝到备库上恢复.

Oracle 11g RAC 卸载CRS步骤

Oracle 11g之后提供了卸载grid和database的脚本,可以卸载的比较干净,不需要手动删除crs ############ ORACLE DEINSTALL & DECONFIG TOOL START ############ 1.root用户进入到grid的ORACLE_HOME(只在一个节点上执行即可) 说明:(如果没有从官网上下载) 1.从oracle官方网站上下载的deinstall工具 11GR2有7个下载包,deinstall放在第7个下载包,如11.2.0.2的下载包为

Oracle 11G Active DataGuard角色切换

1.切换前准备: 1.1主库检查: 1.1.1 FAL检查 SQL> show parameter fal; NAME                                 TYPE        VALUE ------------------------------------ ----------- ------------------------------ fal_client                           string fal_server