ORACLE 11G dataguard安装配置手册--单实例物理standby 三种保护模式互相切换

DG的安装与三种保护配置的切换

一、配置初始化环境并恢复到备库

安装前规划:

环境:VBOX虚拟机,操作系统:OracleLinux Server release 5.7

数据库版本:OracleDatabase 11g Enterprise Edition Release 11.2.0.1.0 -

dg1做为主库,dg2做为备库。dg1/dg2操作系统文件目录相同。

dg1:

IP:192.168.1.241

主机名:dg1 

ORACLE_SID=dg

ORACLE_BASE=/u01 

ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1

db_unique_name=dg1

dg2:

IP:192.168.1.242

主机名:dg2

ORACLE_SID=dg  

ORACLE_BASE=/u01 

ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1

db_unique_name=dg2

数据库软件安装配置:

dg1安装数据库软件,并创建数据库。

dg2安装数据库软件,不创建数据库。

查看主机名及hosts文件:dg1-dg2的HOSTS文件应该相同,保证互相PING主机名可通。

[root@dg1 ~]# cat /etc/hosts

127.0.0.1       localhost.localdomain localhost

::1             localhost6.localdomain6 localhost6

192.168.1.241   dg1 dg1.dg.com

192.168.1.242   dg2 dg2.dg.com

 

[root@dg1~]# cat /etc/sysconfig/network

NETWORKING=yes

NETWORKING_IPV6=no

HOSTNAME=dg1.dg.com

查看用户环境变量:

增加以下内容--与上面的规划对应:
ORACLE_BASE=/u01
ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
ORACLE_SID=dg
PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH:$HOME/bin
export PATH ORACLE_BASE ORACLE_HOME ORACLE_SID
alias sqlplus='rlwrap sqlplus'
alias rman='rlwrap rman'

dg1上数据库配置

SQL>select instance_name,status from v$instance;

INSTANCE_NAMESTATUS

----------------------------------

dg              OPEN

SQL>select name,db_unique_name,force_logging from v$database;

NAME      DB_UNIQUE_NAME           FOR

--------------------------------------- ---

DG        dg                          NO

修改DG1初始化参数--部分已经修改,部分需要修改。

最终需要的参数如下:

[oracle@dg1~]$ sqlplus / as sysdba

查询参数值:

SQL>select instance_name,status from v$instance;

INSTANCE_NAME    STATUS

----------------------------

dg               OPEN

SQL>select name,db_unique_name,force_logging from v$database;

NAME      DB_UNIQUE_NAME                 FOR

--------------------------------------- ---

DG        dg1                             YES

SQL> showparameter log_archive_dest_state_1

NAME                                 TYPE        VALUE

----------------------------------------------- ------------------------------

log_archive_dest_state_1             string      enable

SQL> showparameter log_archive_dest_state_2

NAME                                 TYPE        VALUE

----------------------------------------------- ------------------------------

log_archive_dest_state_2             string      enable

SQL> showparameter remote_login_p

NAME                                 TYPE        VALUE

----------------------------------------------- ------------------------------

remote_login_passwordfile            string      EXCLUSIVE

SQL> showparameter log_archive_dest_1

NAME                                 TYPE        VALUE

----------------------------------------------- ------------------------------

log_archive_dest_1                   string

SQL> showparameter log_archive_dest_2

NAME                                 TYPE        VALUE

----------------------------------------------- ------------------------------

log_archive_dest_2                   string

SQL> showparameter log_archive_confi

NAME                                 TYPE        VALUE

----------------------------------------------- ------------------------------

log_archive_config                   string

SQL> showparameter standby_file_management

NAME                                 TYPE        VALUE

----------------------------------------------- ------------------------------

standby_file_management              string      MANUAL

需要进行修改参数值:

SQL>alter database force logging;

Databasealtered.

SQL>alter system set  log_archive_config="DG_CONFIG=(dg1,dg2)"scope=spfile;

Systemaltered.

SQL>alter system set  log_archive_dest_1="LOCATION=/u01/archivelog/  VALID_FOR=(ALL_LOGFILES,ALL_ROLES)  DB_UNIQUE_NAME=dg1"  scope=spfile;

Systemaltered.

SQL>alter system set log_archive_dest_2="SERVICE=dg2 LGWR ASYNC  VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)  DB_UNIQUE_NAME=dg2"  scope=spfile;

Systemaltered.

SQL>alter system set  fal_server=dg2 scope=spfile;

System altered.

SQL>alter system set  fal_client=dg1 scope=spfile;

Systemaltered.

SQL>alter system set  standby_file_management=auto scope=spfile;

Systemaltered.

SQL>alter system set  db_file_name_convert="/u01/oradata/dg","/u01/oradata/dg"  scope=spfile;

Systemaltered.

SQL>alter system set  log_file_name_convert="/u01/oradata/dg","/u01/oradata/dg"  scope=spfile;

Systemaltered.


创建增加standby日志-

这一步是配置为最大保护和最大可用模式做准备。

SQL>select a.member,b.bytes/1024/1024 MB from v$logfile a,v$log b wherea.group#=b.group#;

MEMBER                                 MB

----------------------------------------

/u01/oradata/dg/redo03.log             50

/u01/oradata/dg/redo02.log             50

/u01/oradata/dg/redo01.log             50

SQL>alter database add standby logfile group 4 '/u01/oradata/dg/standbyredo04.log'size 50M;

Databasealtered.

SQL>alter database add standby logfile group 5 '/u01/oradata/dg/standbyredo05.log'size 50M;

Databasealtered.

SQL>alter database add standby logfile group 6 '/u01/oradata/dg/standbyredo06.log'size 50M;

Databasealtered.

SQL>alter database add standby logfile group 7 '/u01/oradata/dg/standbyredo07.log'size 50M;

Databasealtered.

SQL>SELECT GROUP#,THREAD#,SEQUENCE#,ARCHIVED,STATUS FROM V$STANDBY_LOG;

    GROUP#   THREAD#  SEQUENCE# ARC STATUS

-------------------- ---------- --- ----------

         4          0          0 YES UNASSIGNED

         5          0          0 YES UNASSIGNED

         6          0          0 YES UNASSIGNED

         7          0          0 YES UNASSIGNED

SQL>shutdown immediate;

Databaseclosed.

Databasedismounted.

ORACLEinstance shut down.

SQL>startup;

ORACLEinstance started.

Total SystemGlobal Area  418484224 bytes

FixedSize                  1336932 bytes

VariableSize             281020828 bytes

DatabaseBuffers          130023424 bytes

RedoBuffers                6103040 bytes

Databasemounted.

Databaseopened.

#################################################

创建pfile以及standby控制文件。

然后关机做备份,准备复制文件到dg2--standby

SQL>create pfile from spfile;

Filecreated.

[oracle@dg1dbs]$ ls -al initdg.ora

-rw-r--r-- 1oracle oinstall 1322 Jul 27 12:47 initdg.ora

SQL>alter database create standby controlfile as '/u01/oradata/dg/standctl01.ctl';

Databasealtered.

在$ORACLE_HOME/dbs/  及 $ORACLE_HOME/network/admin/目录下传送相应文件到dg2

密码文件的生成—如已经有密码文件直接传,没有则新建。

orapwdfile=/u01/app/oracle/product/11.2.0/dbhome_1/dbs/orapwdg1 password=oraclesysentries=3 force=y

scp initdg.ora dg2:$ORACLE_HOME/dbs/

scp  orapwdgdg2:$ORACLE_HOME/dbs/

scp listener.ora tnsnames.ora dg2:$ORACLE_HOME/network/admin/

 在备库上修改init初始化参数,注意标红的参数。结果如下:--其实需要修改的也就是 db_unique_name了,也可以打开数据库后再修改。

[oracle@dg2 dbs]$ cat initdg.ora
dg.__db_cache_size=130023424
dg.__java_pool_size=4194304
dg.__large_pool_size=4194304
dg.__oracle_base='/u01'#ORACLE_BASE set from environment
dg.__pga_aggregate_target=155189248
dg.__sga_target=264241152
dg.__shared_io_pool_size=0
dg.__shared_pool_size=113246208
dg.__streams_pool_size=4194304
*.audit_file_dest='/u01/admin/dg/adump'
*.audit_trail='db'
*.compatible='11.2.0.0.0'
*.control_files='/u01/oradata/dg/control01.ctl','/u01/flash_recovery_area/dg/control02.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_file_name_convert='/u01/oradata/dg','/u01/oradata/dg'
*.db_name='dg'
*.db_recovery_file_dest='/u01/flash_recovery_area'
*.db_recovery_file_dest_size=4039114752
*.db_unique_name='DG2'
*.diagnostic_dest='/u01'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=dgXDB)'
*.fal_client='DG2'
*.fal_server='DG1'
*.log_archive_config='DG_CONFIG=(dg1,dg2)'
*.log_archive_dest_1='LOCATION=/u01/archivelog/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=dg2'
*.log_archive_dest_2='SERVICE=dg2 LGWR ASYNC  VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=dg1'
*.log_archive_format='arc_%t_%s_%r.arc'
*.log_file_name_convert='/u01/oradata/dg','/u01/oradata/dg'
*.memory_target=419430400
*.open_cursors=300
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.standby_file_management='AUTO'
*.undo_tablespace='UNDOTBS1'


在dg1 和dg2上配置监听

dg1上的配置:listener.ora  tnsnames.ora

listener.ora可以使用NETCA图形界面配置生成,也可以手动创建。

[oracle@dg1admin]$ cat listener.ora

#listener.ora Network Configuration File:/u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora

# Generatedby Oracle configuration tools.

LISTENER =

  (DESCRIPTION_LIST =

    (DESCRIPTION =

      (ADDRESS =(PROTOCOL = TCP)(HOST = dg1)(PORT = 1521))

    )

  )

 

ADR_BASE_LISTENER= /u01

 

需要增加dg1 dg2的解析信息

[oracle@dg1admin]$ cat tnsnames.ora

dg1 =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST =dg1.dg.com)(PORT = 1521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = dg1)

    )

  )

dg2=

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST =dg2.dg.com)(PORT = 1521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = dg2)

    )

  )

 

EXTPROC_CONNECTION_DATA=

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = IPC)(KEY =EXTPROC1))

    )

    (CONNECT_DATA =

      (SID = PLSExtProc)

      (PRESENTATION = RO)

    )

  )

 

从监听的红色部分能看到监听已启动

用到命令有: lsnrctl start/stop/status/reload

[oracle@dg1admin]$ lsnrctl status

LSNRCTL forLinux: Version 11.2.0.1.0 - Production on 27-JUL-2013 13:34:05

Copyright(c) 1991, 2009, Oracle.  All rightsreserved.

Connectingto (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=dg1)(PORT=1521)))

STATUS ofthe LISTENER

------------------------

Alias                     LISTENER

Version                   TNSLSNR for Linux: Version11.2.0.1.0 - Production

StartDate                27-JUL-2013 11:27:27

Uptime                    0 days 2 hr. 6 min. 38 sec

TraceLevel               off

Security                  ON: Local OS Authentication

SNMP                      OFF

ListenerParameter File  /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora

Listener LogFile        /u01/diag/tnslsnr/dg1/listener/alert/log.xml

ListeningEndpoints Summary...

  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=dg1)(PORT=1521)))

ServicesSummary...

Service"DG1" has 1 instance(s).

  Instance "dg", status READY, has 1handler(s) for this service...

Service"dgXDB" has 1 instance(s).

  Instance "dg", status READY, has 1handler(s) for this service...

The command completedsuccessfully

 

dg2上的配置 其中tnsnames.ora与dg1上完全相同,不贴出了。

Dg2的listener.ora需要配置静态注册。

[oracle@dg2admin]$ cat listener.ora

#listener.ora Network Configuration File:/u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora

# Generatedby Oracle configuration tools.

LISTENER =

  (DESCRIPTION_LIST =

    (DESCRIPTION =

      (ADDRESS =(PROTOCOL = TCP)(HOST = dg2)(PORT = 1521))

    )

  )

 

SID_LIST_LISTENER=

  (SID_LIST =

     (SID_DESC =

      (GLOBAL_DBNAME = dg2)

      (ORACLE_HOME =/u01/app/oracle/product/11.2.0/dbhome_1)

      (SID_NAME = dg)

    )

  )

ADR_BASE_LISTENER= /u01

[oracle@dg2admin]$ lsnrctl status

LSNRCTL forLinux: Version 11.2.0.1.0 - Production on 27-JUL-2013 21:42:14

Copyright(c) 1991, 2009, Oracle.  All rightsreserved.

Connectingto (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=dg2)(PORT=1521)))

STATUS ofthe LISTENER

------------------------

Alias                     LISTENER

Version                   TNSLSNR for Linux: Version11.2.0.1.0 - Production

StartDate                27-JUL-2013 21:39:19

Uptime                    0 days 0 hr. 2 min. 55 sec

TraceLevel               off

Security                  ON: Local OS Authentication

SNMP                      OFF

ListenerParameter File   /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora

Listener LogFile        /u01/diag/tnslsnr/dg2/listener/alert/log.xml

ListeningEndpoints Summary...

 (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=dg2)(PORT=1521)))

ServicesSummary...

Service"dg2" has 1 instance(s).

  Instance "dg", status UNKNOWN, has1 handler(s) for this service...

Thecommand completed successfully

#################################################

dg1和dg2互相登陆测试

从dg1登陆dg2

[oracle@dg1admin]$ sqlplus sys/oraclesys@dg2 as sysdba

SQL*Plus:Release 11.2.0.1.0 Production on Sat Jul 27 13:43:33 2013

Copyright(c) 1982, 2009, Oracle.  All rightsreserved.

Connected toan idle instance.

SQL>

 

dg2主机上测试能否登陆dg1的数据库--tnsnames.ora已经与dg1的相同。

[oracle@dg2admin]$ sqlplus sys/oraclesys@dg1 as sysdba

Connectedto:

OracleDatabase 11g Enterprise Edition Release 11.2.0.1.0 - Production

With thePartitioning, OLAP, Data Mining and Real Application Testing options

SQL> colhost_name for a10

SQL>select instance_name,host_name from v$instance;

INSTANCE_NAME    HOST_NAME

--------------------------

dg               dg1.dg.com

虚拟机可以关机做下备份。

使用RMAN duplicate创建STANDBY数据库

使用RMAN时连接本地连也要用用户名密码方式。在 dg1上登陆RMAN进行以下操作:

[oracle@dg1~]$ rman target sys/oraclesys auxiliary  sys/oraclesys@dg2

RecoveryManager: Release 11.2.0.1.0 - Production on Sat Jul 27 14:02:41 2013

Copyright(c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.

connectedto target database: DG (DBID=1735160627)

connectedto auxiliary database: DG (not mounted)

 

duplicate target database for standby nofilenamecheck  from active database dorecover;

输出日志:

StartingDuplicate Db at 27-JUL-13

using targetdatabase control file instead of recovery catalog

allocatedchannel: ORA_AUX_DISK_1

channelORA_AUX_DISK_1: SID=19 device type=DISK

contents ofMemory Script:

{

   backup as copy reuse

   targetfile '/u01/app/oracle/product/11.2.0/dbhome_1/dbs/orapwdg' auxiliary format

 '/u01/app/oracle/product/11.2.0/dbhome_1/dbs/orapwdg'   ;

}

executingMemory Script

Startingbackup at 27-JUL-13

allocatedchannel: ORA_DISK_1

channelORA_DISK_1: SID=41 device type=DISK

Finishedbackup at 27-JUL-13

contents ofMemory Script:

{

   backup as copy current controlfile forstandby auxiliary format  '/u01/oradata/dg/control01.ctl';

   restore clone controlfile to  '/u01/flash_recovery_area/dg/control02.ctl'from

 '/u01/oradata/dg/control01.ctl';

}

executingMemory Script

Startingbackup at 27-JUL-13

usingchannel ORA_DISK_1

channelORA_DISK_1: starting datafile copy

copyingstandby control file

output filename=/u01/app/oracle/product/11.2.0/dbhome_1/dbs/snapcf_dg.ftag=TAG20130727T140349 RECID=3 STAMP=821887430

channelORA_DISK_1: datafile copy complete, elapsed time: 00:00:06

Finishedbackup at 27-JUL-13

Startingrestore at 27-JUL-13

usingchannel ORA_AUX_DISK_1

channelORA_AUX_DISK_1: copied control file copy

Finishedrestore at 27-JUL-13

contents ofMemory Script:

{

   sql clone 'alter database mount standbydatabase';

}

executingMemory Script

sql statement:alter database mount standby database

contents ofMemory Script:

{

   set newname for tempfile  1 to

 "/u01/oradata/dg/temp01.dbf";

   switch clone tempfile all;

   set newname for datafile  1 to

 "/u01/oradata/dg/system01.dbf";

   set newname for datafile  2 to

 "/u01/oradata/dg/sysaux01.dbf";

   set newname for datafile  3 to

 "/u01/oradata/dg/undotbs01.dbf";

   set newname for datafile  4 to

 "/u01/oradata/dg/users01.dbf";

   set newname for datafile  5 to

 "/u01/oradata/dg/example01.dbf";

   backup as copy reuse

   datafile 1 auxiliary format

 "/u01/oradata/dg/system01.dbf"   datafile

 2 auxiliary format

 "/u01/oradata/dg/sysaux01.dbf"   datafile

 3 auxiliary format

 "/u01/oradata/dg/undotbs01.dbf"   datafile

 4 auxiliary format

 "/u01/oradata/dg/users01.dbf"   datafile

 5 auxiliary format

 "/u01/oradata/dg/example01.dbf"   ;

   sql 'alter system archive log current';

}

executingMemory Script

executingcommand: SET NEWNAME

renamedtempfile 1 to /u01/oradata/dg/temp01.dbf in control file

executingcommand: SET NEWNAME

executingcommand: SET NEWNAME

executingcommand: SET NEWNAME

executingcommand: SET NEWNAME

executingcommand: SET NEWNAME

Startingbackup at 27-JUL-13

usingchannel ORA_DISK_1

channelORA_DISK_1: starting datafile copy

inputdatafile file number=00001 name=/u01/oradata/dg/system01.dbf

output filename=/u01/oradata/dg/system01.dbf tag=TAG20130727T140405

channelORA_DISK_1: datafile copy complete, elapsed time: 00:02:35

channelORA_DISK_1: starting datafile copy

inputdatafile file number=00002 name=/u01/oradata/dg/sysaux01.dbf

output filename=/u01/oradata/dg/sysaux01.dbf tag=TAG20130727T140405

channelORA_DISK_1: datafile copy complete, elapsed time: 00:02:15

channelORA_DISK_1: starting datafile copy

inputdatafile file number=00003 name=/u01/oradata/dg/undotbs01.dbf

output filename=/u01/oradata/dg/undotbs01.dbf tag=TAG20130727T140405

channelORA_DISK_1: datafile copy complete, elapsed time: 00:00:35

channelORA_DISK_1: starting datafile copy

inputdatafile file number=00005 name=/u01/oradata/dg/example01.dbf

output filename=/u01/oradata/dg/example01.dbf tag=TAG20130727T140405

channelORA_DISK_1: datafile copy complete, elapsed time: 00:00:25

channelORA_DISK_1: starting datafile copy

inputdatafile file number=00004 name=/u01/oradata/dg/users01.dbf

output filename=/u01/oradata/dg/users01.dbf tag=TAG20130727T140405

channelORA_DISK_1: datafile copy complete, elapsed time: 00:00:03

Finishedbackup at 27-JUL-13

sqlstatement: alter system archive log current

contents ofMemory Script:

{

   backup as copy reuse

   archivelog like "/u01/archivelog/arc_1_15_821829622.arc" auxiliary format

 "/u01/archivelog/arc_1_15_821829622.arc"   archivelog like

 "/u01/archivelog/arc_1_16_821829622.arc"auxiliary format

 "/u01/archivelog/arc_1_16_821829622.arc"   ;

   catalog clone archivelog "/u01/archivelog/arc_1_15_821829622.arc";

   catalog clone archivelog "/u01/archivelog/arc_1_16_821829622.arc";

   switch clone datafile all;

}

executingMemory Script

Startingbackup at 27-JUL-13

usingchannel ORA_DISK_1

channelORA_DISK_1: starting archived log copy

inputarchived log thread=1 sequence=15 RECID=10 STAMP=821887447

output filename=/u01/archivelog/arc_1_15_821829622.arc RECID=0 STAMP=0

channelORA_DISK_1: archived log copy complete, elapsed time: 00:00:01

channelORA_DISK_1: starting archived log copy

inputarchived log thread=1 sequence=16 RECID=11 STAMP=821887800

output filename=/u01/archivelog/arc_1_16_821829622.arc RECID=0 STAMP=0

channelORA_DISK_1: archived log copy complete, elapsed time: 00:00:01

Finishedbackup at 27-JUL-13

 

catalogedarchived log

archived logfile name=/u01/archivelog/arc_1_15_821829622.arc RECID=1 STAMP=821916602

catalogedarchived log

archived logfile name=/u01/archivelog/arc_1_16_821829622.arc RECID=2 STAMP=821916602

datafile 1switched to datafile copy

inputdatafile copy RECID=3 STAMP=821916603 file name=/u01/oradata/dg/system01.dbf

datafile 2switched to datafile copy

inputdatafile copy RECID=4 STAMP=821916603 file name=/u01/oradata/dg/sysaux01.dbf

datafile 3switched to datafile copy

inputdatafile copy RECID=5 STAMP=821916603 file name=/u01/oradata/dg/undotbs01.dbf

datafile 4switched to datafile copy

inputdatafile copy RECID=6 STAMP=821916603 file name=/u01/oradata/dg/users01.dbf

datafile 5switched to datafile copy

inputdatafile copy RECID=7 STAMP=821916603 file name=/u01/oradata/dg/example01.dbf

contents ofMemory Script:

{

   set until scn  897263;

   recover

   standby

   clone database

    delete archivelog

   ;

}

executingMemory Script

 

executingcommand: SET until clause

 

Startingrecover at 27-JUL-13

usingchannel ORA_AUX_DISK_1

startingmedia recovery

archived logfor thread 1 with sequence 15 is already on disk as file/u01/archivelog/arc_1_15_821829622.arc

archived logfor thread 1 with sequence 16 is already on disk as file/u01/archivelog/arc_1_16_821829622.arc

archived logfile name=/u01/archivelog/arc_1_15_821829622.arc thread=1 sequence=15

archived logfile name=/u01/archivelog/arc_1_16_821829622.arc thread=1 sequence=16

mediarecovery complete, elapsed time: 00:00:03

Finishedrecover at 27-JUL-13

FinishedDuplicate Db at 27-JUL-13

 

打开REDO应用:

1.RMAN恢复备库成功后,登陆dg2,此时dg2处于MOUNT状态,并启动redo应用。

[oracle@dg2~]$ sqlplus / as sysdba

Connectedto:

OracleDatabase 11g Enterprise Edition Release 11.2.0.1.0 - Production

With thePartitioning, OLAP, Data Mining and Real Application Testing options

SQL>select status,instance_name from v$instance;

STATUS       INSTANCE_NAME

----------------------------

MOUNTED      dg

SQL>select name,db_unique_name from v$database;

NAME      DB_UNIQUE_NAME

---------------------------------------

DG        DG2

SQL>alter database recover managed standby database disconnect from session;

Databasealtered.

#########################################

二、DG三种保护模式切换实践

最大性能模式-安装完DG时缺省是此模式。切换语句是:alter database set standby database to maximize PERFORMANCE;

[oracle@dg1~]$ sqlplus / as sysdba

SQL> settime on

14:29:04SQL> select max(sequence#) from v$archived_log;

MAX(SEQUENCE#)

--------------

            18

14:29:12SQL> alter system switch logfile;

Systemaltered.

14:29:39SQL> select max(sequence#) from v$archived_log;

MAX(SEQUENCE#)

--------------

            19

dg2上进行查看

[oracle@dg2~]$ sqlplus / as sysdba 

SQL>alter database recover managed standby database disconnect from session;
Database altered.

14:29:58SQL> select max(sequence#) from v$archived_log;

MAX(SEQUENCE#)

--------------

            19

一次切换当前REDO的ALERT日志

dg1--REDO切换到了LOG#1的--/u01/oradata/dg/redo01.log,

Sat Jul 2717:06:58 2013

Thread 1advanced to log sequence 25 (LGWR switch)

  Current log# 1 seq# 25 mem# 0:/u01/oradata/dg/redo01.log

Sat Jul 2717:06:58 2013

LNS: Standbyredo logfile selected for thread 1 sequence 25 for destinationLOG_ARCHIVE_DEST_2

Sat Jul 2717:06:59 2013

Archived Logentry 27 added for thread 1 sequence 24 ID 0x676c9833 dest 1:

#######################

dg2上

Sat Jul 2717:07:25 2013

RFS[4]:Selected log 5 for thread 1 sequence 25 dbid 1735160627 branch 821829622

Sat Jul 2717:07:25 2013

Archived Logentry 10 added for thread 1 sequence 24 ID 0x676c9833 dest 1:


最大可用模式

说明:切换保护模式的操作必须在primay执行,且primay必须处于mount状态,如果在open状态执行,则报ORA-01126错。

ORA-01126:database must be mounted EXCLUSIVE and not open for this operation。

dg1的操作:

[oracle@dg1~]$ sqlplus / as sysdba                 

SQL>select protection_mode,database_role,protection_level from v$database;

PROTECTION_MODE      DATABASE_ROLE    PROTECTION_LEVEL

------------------------------------ --------------------

MAXIMUMPERFORMANCE  PRIMARY          MAXIMUM PERFORMANCE

SQL> alter system set log_archive_dest_2="SERVICE=dg2  LGWR SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)  DB_UNIQUE_NAME=dg2";

Systemaltered.

SQL>shutdown immediate;

Databaseclosed.

Databasedismounted.

ORACLEinstance shut down.

SQL>startup mount;

ORACLEinstance started.

Total SystemGlobal Area  418484224 bytes

FixedSize                  1336932 bytes

VariableSize             348129692 bytes

DatabaseBuffers           62914560 bytes

RedoBuffers                6103040 bytes

Databasemounted.

SQL> alter database set standby database to maximize availability;

Databasealtered.

SQL>alter database open;

Databasealtered.

SQL>select protection_mode,database_role,protection_level from v$database;

PROTECTION_MODE      DATABASE_ROLE    PROTECTION_LEVEL

------------------------------------ --------------------

MAXIMUMAVAILABILITY PRIMARY          MAXIMUMAVAILABILITY

###############################################

dg2 的操作:

[oracle@dg2~]$ sqlplus / as sysdba                                                                                              

SQL>select protection_mode,database_role,protection_level from v$database;

PROTECTION_MODE      DATABASE_ROLE    PROTECTION_LEVEL

------------------------------------ --------------------

MAXIMUMPERFORMANCE  PHYSICAL STANDBY MAXIMUMPERFORMANCE 

下面设置log_archive_dest_2是为了SWITCHOVER用,可以不用做。

SQL> showparameter log_archive_dest_2

NAME                                 TYPE        VALUE

----------------------------------------------- ------------------------------

log_archive_dest_2                   string      SERVICE=dg1 ARCH ASYNC  VALID_

                                                FOR=(ONLINE_LOGFILES,PRIMARY_R

                                                OLE) DB_UNIQUE_NAME=dg1

SQL>alter system set log_archive_dest_2="SERVICE=dg1 LGWR SYNC  VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)DB_UNIQUE_NAME=dg1";

Systemaltered.

 

节点1mount时切换为最大可用性后再查看,节点2也已经改变。

SQL>select protection_mode,database_role,protection_level from v$database;

PROTECTION_MODE      DATABASE_ROLE    PROTECTION_LEVEL

------------------------------------ --------------------

MAXIMUMAVAILABILITY PHYSICAL STANDBY MAXIMUM AVAILABILITY

SQL>alter database recover managed standby database disconnect from session;
Database altered.

SQL>select max(sequence#) from v$archived_log;

MAX(SEQUENCE#)

--------------

            33

对应的DG1日志:

LGWR: Primarydatabase is in MAXIMUM AVAILABILITY mode

LGWR:Destination LOG_ARCHIVE_DEST_1 is not serviced by LGWR

DestinationLOG_ARCHIVE_DEST_2 is UNSYNCHRONIZED

******************************************************************

LGWR:Setting 'active' archival for destination LOG_ARCHIVE_DEST_2

******************************************************************…………………………………………

ARC0:STARTING ARCH PROCESSES COMPLETE

DestinationLOG_ARCHIVE_DEST_2 is SYNCHRONIZED

LGWR:Standby redo logfile selected to archive thread 1 sequence 34

LGWR:Standby redo logfile selected for thread 1 sequence 34 for destinationLOG_ARCHIVE_DEST_2

Shuttingdown archive processes

Thread 1advanced to log sequence 34 (LGWR switch)

  Current log# 1 seq# 34 mem# 0:/u01/oradata/dg/redo01.log

ARCHshutting down

ARC4:Archival stopped

Archived Logentry 45 added for thread 1 sequence 33 ID 0x676c9833 dest 1:

Sat Jul 2720:52:26 2013

Startingbackground process CJQ0

Sat Jul 2720:52:26 2013

CJQ0 startedwith pid=26, OS id=6197

SettingResource Manager plan SCHEDULER[0x3008]:DEFAULT_MAINTENANCE_PLAN via schedulerwindow

SettingResource Manager plan DEFAULT_MAINTENANCE_PLAN via parameter

Sat Jul 2720:52:29 2013

Startingbackground process VKRM

Sat Jul 2720:52:29 2013

VKRM startedwith pid=27, OS id=6201

Sat Jul 2720:57:23 2013

Startingbackground process SMCO

Sat Jul 2720:57:24 2013

SMCO startedwith pid=28, OS id=6261

######################################################

节点2日志

Sat Jul 2720:49:32 2013

ALTER SYSTEMSET log_archive_dest_2='SERVICE=dg1 LGWR SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=dg1'SCOPE=MEMORY;

Sat Jul 2720:49:52 2013

RFS[13]:Assigned to RFS process 4488

RFS[13]:Identified database type as 'physical standby': Client is LGWR SYNC pid 2845

Primarydatabase is in MAXIMUM PERFORMANCE mode

RFS[13]:Selected log 4 for thread 1 sequence 31 dbid 1735160627 branch 821829622

Sat Jul 2720:49:52 2013

RFS[14]:Assigned to RFS process 4492

RFS[14]:Identified database type as 'physical standby': Client is ARCH pid 2929

RFS[14]:Selected log 5 for thread 1 sequence 30 dbid 1735160627 branch 821829622

Sat Jul 2720:49:52 2013

Archived Logentry 16 added for thread 1 sequence 30 ID 0x676c9833 dest 1:

Sat Jul 2720:49:52 2013

RFS[15]:Assigned to RFS process 4496

RFS[15]:Identified database type as 'physical standby': Client is ARCH pid 2925

Sat Jul 2720:50:02 2013

Archived Logentry 17 added for thread 1 sequence 31 ID 0x676c9833 dest 1:

RFS[13]:Possible network disconnect with primary database

Sat Jul 2720:52:22 2013

RFS[16]:Assigned to RFS process 4537

RFS[16]:Identified database type as 'physical standby': Client is LGWR SYNC pid 6084      ----这里可以看到dg2通过同步时,发现主库是在最大可用模式下,就更改了自己的备库STANDBY 控制文件为最大可用模式。最终达到备库STANDBY 控制文件与主库一致

Primarydatabase is in MAXIMUM AVAILABILITY mode

Changingstandby controlfile to MAXIMUM AVAILABILITY mode

Changingstandby controlfile to RESYNCHRONIZATION level

Standbycontrolfile consistent with primary

RFS[16]:Selected log 4 for thread 1 sequence 33 dbid 1735160627 branch 821829622

Sat Jul 2720:52:22 2013

RFS[17]:Assigned to RFS process 4541

RFS[17]: Identifieddatabase type as 'physical standby': Client is ARCH pid 6157

RFS[17]:Selected log 5 for thread 1 sequence 32 dbid 1735160627 branch 821829622

Sat Jul 2720:52:22 2013

Archived Logentry 18 added for thread 1 sequence 32 ID 0x676c9833 dest 1:

Sat Jul 2720:52:25 2013

Archived Logentry 19 added for thread 1 sequence 33 ID 0x676c9833 dest 1:

Changingstandby controlfile to MAXIMUM AVAILABILITY level

RFS[16]:Selected log 4 for thread 1 sequence 34 dbid 1735160627 branch 821829622

 

 

 

最大保护模式--此种模式在11G下,如备库DOWN掉,主库会HANG住,而不是重启。

dg1上的配置,此时是最大可用

[oracle@dg1~]$ sqlplus / as sysdba                                                                                                

SQL>select protection_mode,database_role,protection_level from v$database;

PROTECTION_MODE      DATABASE_ROLE    PROTECTION_LEVEL

------------------------------------ --------------------

MAXIMUMAVAILABILITY PRIMARY          MAXIMUMAVAILABILITY

SQL> showparameter log_archive_dest_2

NAME                                 TYPE        VALUE

----------------------------------------------- ------------------------------

log_archive_dest_2                   string      SERVICE=dg2 LGWR SYNC  VALID_F

                                                OR=(ONLINE_LOGFILES,PRIMARY_RO

                                                 LE) DB_UNIQUE_NAME=dg2

SQL>alter system set log_archive_dest_2="SERVICE=dg2  SYNC AFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=dg2";

Systemaltered.

SQL>shutdown immediate;

SQL>startup mount;

更改保护模式为最大保护

SQL>alter database set standby database to maximize protection;

Databasealtered.

SQL>alter database open;

Databasealtered.

SQL>select max(sequence#) from v$archived_log;

MAX(SEQUENCE#)

--------------

            35

SQL>select protection_mode,database_role,protection_level from v$database;

PROTECTION_MODE      DATABASE_ROLE    PROTECTION_LEVEL

------------------------------------ --------------------

MAXIMUMPROTECTION   PRIMARY          MAXIMUM PROTECTION

#######################################################

dg2上的配置

[oracle@dg2~]$ sqlplus / as sysdba

SQL>select protection_mode,database_role,protection_level from v$database;

PROTECTION_MODE      DATABASE_ROLE    PROTECTION_LEVEL

------------------------------------ --------------------

MAXIMUMAVAILABILITY PHYSICAL STANDBY MAXIMUM AVAILABILITY 

SQL>select max(sequence#) from v$archived_log;

MAX(SEQUENCE#)

--------------

            33

SQL> showparameter log_archive_dest_2;

NAME                                 TYPE        VALUE

----------------------------------------------- ------------------------------

log_archive_dest_2                   string      SERVICE=dg1 LGWR SYNC  VALID_F

                                                OR=(ONLINE_LOGFILES,PRIMARY_RO

                                                LE) DB_UNIQUE_NAME=dg1

SQL>alter system set log_archive_dest_2="SERVICE=dg1  SYNC AFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=dg1";

Systemaltered.

dg1上重新打开数据库后在dg2查看信息如下:

SQL>alter database recover managed standby database disconnect from session;
Database altered.

SQL>select max(sequence#) from v$archived_log;

MAX(SEQUENCE#)

--------------

            35

SQL>select protection_mode,database_role,protection_level from v$database;

PROTECTION_MODE      DATABASE_ROLE    PROTECTION_LEVEL

------------------------------------ --------------------

MAXIMUMPROTECTION   PHYSICAL STANDBY MAXIMUMPROTECTION

#######################################################

对应的ALERT日志:

dg1上的日志:

[oracle@dg1~]$ cat alert_dg.log

Sat Jul 2721:12:16 2013

alterdatabase set standby database to maximize protection

Completed:alter database set standby database to maximize protection

alterdatabase open

Sat Jul 2721:12:21 2013

LGWR:STARTING ARCH PROCESSES

Sat Jul 2721:12:22 2013

ARC0 startedwith pid=21, OS id=6568

ARC0:Archival started

LGWR:STARTING ARCH PROCESSES COMPLETE

ARC0:STARTING ARCH PROCESSES

LGWR:Primary database is in MAXIMUM PROTECTION mode

LGWR:Destination LOG_ARCHIVE_DEST_1 is not serviced by LGWR

Sat Jul 2721:12:23 2013

ARC1 startedwith pid=22, OS id=6572

Sat Jul 2721:12:23 2013

ARC2 startedwith pid=20, OS id=6576

ARC1:Archival started

ARC2:Archival started

ARC1:Becoming the 'no FAL' ARCH

ARC1:Becoming the 'no SRL' ARCH

ARC2:Becoming the heartbeat ARCH

Sat Jul 2721:12:23 2013

ARC3 startedwith pid=23, OS id=6580

Sat Jul 2721:12:24 2013

NSS2 startedwith pid=24, OS id=6584

ARC3:Archival started

ARC0:STARTING ARCH PROCESSES COMPLETE

******************************************************************

LGWR:Setting 'active' archival for destination LOG_ARCHIVE_DEST_2

******************************************************************

LGWR:Standby redo logfile selected to archive thread 1 sequence 36

LGWR:Standby redo logfile selected for thread 1 sequence 36 for destinationLOG_ARCHIVE_DEST_2

Thread 1advanced to log sequence 36 (thread open)

ARC0: LGWRis actively archiving destination LOG_ARCHIVE_DEST_2

LGWR:Waiting for ORLs to be archived...

ARC0:Standby redo logfile selected for thread 1 sequence 35 for destinationLOG_ARCHIVE_DEST_2

Archived Logentry 48 added for thread 1 sequence 35 ID 0x676c9833 dest 1:

LGWR: ORLssuccessfully archived

Thread 1opened at log sequence 36

  Current log# 3 seq# 36 mem# 0: /u01/oradata/dg/redo03.log

Successfulopen of redo thread 1

Sat Jul 2721:12:28 2013

MTTRadvisory is disabled because FAST_START_MTTR_TARGET is not set

Sat Jul 2721:12:28 2013

SMON:enabling cache recovery

Successfullyonlined Undo Tablespace 2.

Verifyingfile header compatibility for 11g tablespace encryption..

Verifying11g file header compatibility for tablespace encryption completed

SMON:enabling tx recovery

DatabaseCharacterset is AL32UTF8

No ResourceManager plan active

replication_dependency_trackingturned off (no async multimaster replication found)

Startingbackground process QMNC

Sat Jul 2721:12:29 2013

QMNC startedwith pid=25, OS id=6588

Completed:alter database open

Sat Jul 2721:12:30 2013

db_recovery_file_dest_sizeof 3852 MB is 2.33% used. This is a

user-specifiedlimit on the amount of space that will be used by this

database forrecovery-related files, and does not reflect the amount of

spaceavailable in the underlying filesystem or ASM diskgroup.

Sat Jul 2721:12:31 2013

Startingbackground process CJQ0

Sat Jul 2721:12:31 2013

CJQ0 startedwith pid=28, OS id=6616

SettingResource Manager plan SCHEDULER[0x3008]:DEFAULT_MAINTENANCE_PLAN via schedulerwindow

SettingResource Manager plan DEFAULT_MAINTENANCE_PLAN via parameter

Sat Jul 2721:12:34 2013

Startingbackground process VKRM

Sat Jul 2721:12:34 2013

VKRM startedwith pid=26, OS id=6620

Sat Jul 2721:13:23 2013

ARC2:STARTING ARCH PROCESSES

Sat Jul 2721:13:23 2013

ARC4 startedwith pid=30, OS id=6646

ARC4:Archival started

ARC2:STARTING ARCH PROCESSES COMPLETE

Sat Jul 2721:14:24 2013

Shuttingdown archive processes

Sat Jul 2721:14:24 2013

ARCHshutting down

ARC4:Archival stopped

#######################################################

dg2上的日志:

[oracle@dg2~]$ cat alert_dg.log

Sat Jul 2721:07:54 2013

ALTER SYSTEMSET log_archive_dest_2='SERVICE=dg1  SYNCAFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=dg1'SCOPE=MEMORY;

Sat Jul 2721:08:18 2013

Archived Logentry 20 added for thread 1 sequence 34 ID 0x676c9833 dest 1:

Sat Jul 2721:12:27 2013

RFS[18]:Assigned to RFS process 4639

RFS[18]:Identified database type as 'physical standby': Client is LGWR SYNC pid 6498

Primarydatabase is in MAXIMUM PROTECTION mode

Changingstandby controlfile to MAXIMUM PROTECTION mode

Sat Jul 2721:12:28 2013

RFS[19]:Assigned to RFS process 4643

RFS[19]:Identified database type as 'physical standby': Client is LGWR SYNC pid 6498

Primarydatabase is in MAXIMUM PROTECTION mode

Standbycontrolfile consistent with primary

Standbycontrolfile consistent with primary

RFS[19]:Selected log 4 for thread 1 sequence 36 dbid 1735160627 branch 821829622

Sat Jul 2721:12:28 2013

RFS[20]:Assigned to RFS process 4647

RFS[20]:Identified database type as 'physical standby': Client is ARCH pid 6568

RFS[20]:Selected log 5 for thread 1 sequence 35 dbid 1735160627 branch 821829622

Sat Jul 2721:12:28 2013

Archived Logentry 21 added for thread 1 sequence 35 ID 0x676c9833 dest 1:

Sat Jul 2721:12:28 2013

RFS[21]:Assigned to RFS process 4651

RFS[21]:Identified database type as 'physical standby': Client is ARCH pid 6576

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值