创建备用数据库

如何升级到 Oracle Solaris Cluster 4.0 第 6 部分

作者:Tim Read

2012 年 5 月发布

第 1 部分 — 示例配置概述
第 2 部分 — 针对集群配置 Oracle Database
第 3 部分 — 安装目标集群
第 4 部分 — 创建区域集群
第 5 部分 — 安装新应用程序软件体系
第 6 部分 — 创建备用数据库
第 7 部分 — 创建 Oracle Solaris Cluster 地理版配置
第 8 部分 — Oracle Solaris Cluster 地理版如何简化升级过程

一旦在目标集群上安装了 Oracle Database 软件并且配置了逻辑主机,就该配置 Oracle Database 监听器并开始创建备用数据库的过程。tnsnames.orasqlnet.ora 文件与其在原始集群上的等效项相同。listener.ora 文件仅在其监听的主机的名称 (vzpyrus1a) 及其使用的 ORACLE_SID (salesdr) 方面不同。

注意:如果选择使用本文作为执行类似过程的指南,需要密切注意各命令运行的节点。因此,本示例步骤中显示的系统提示包括节点名称和用户名以指示命令必须运行在什么位置以及必须由谁来运行。

首先,创建 listener.ora 文件(如果尚未存在的话)。清单 1 显示示例 listener.ora 文件。

vzpyrus3a (oracle) $ cd /u02/app/oracle/product/11.2.0/dbhome_1/network/admin
vzpyrus3a (oracle) $ cat listener.ora
# listener.ora Network Configuration File: 
/u02/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = salesdr_DGMGRL)
      (ORACLE_HOME = /u02/app/oracle/product/11.2.0/dbhome_1)
      (SID_NAME = salesdr)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = vzpyrus1a)(PORT = 1521))
    )
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

ADR_BASE_LISTENER = /u02/app/oracle

清单 1. 示例 listener.ora 文件

创建 listener.ora 文件之后,手动启动监听器进程,如清单 2 所示。

vzpyrus3a (oracle) $ export ORACLE_HOME=/u02/app/oracle/product/11.2.0/dbhome_1
vzpyrus3a (oracle) $ export PATH=$PATH:${ORACLE_HOME}/bin 
vzpyrus3a (oracle) $ lsnrctl start

LSNRCTL for Solaris: Version 11.2.0.3.0 - Production on 18-JAN-2012 03:06:19

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

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

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

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=vzpyrus1a)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Solaris: Version 11.2.0.3.0 - Production
Start Date                18-JAN-2012 03:06:20
Uptime                    0 days 0 hr. 0 min. 0 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u02/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
Listener Log File         /u02/app/oracle/diag/tnslsnr/vzpyrus3a/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.134.108.111)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
Services Summary...
Service "salesdr_DGMGRL" has 1 instance(s).
  Instance "salesdr", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully

清单 2. 启动监听器进程

还需要在新集群上创建 Oracle 钱夹,如清单 3 所示。使用对在提升到主数据库时检查备用数据库运行状况的 Oracle Solaris Cluster 数据库探测器使用不同服务名称 (salesdr) 的凭证。

vzpyrus3a (oracle) $ export ORACLE_HOME=/u02/app/oracle/product/11.2.0/dbhome_1
vzpyrus3a (oracle) $ export PATH=$PATH:${ORACLE_HOME}/bin
vzpyrus3a (oracle) $ mkstore -wrl /oradata/wallet -create Oracle Secret Store Tool : Version 11.2.0.3.0 - Production Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved. Enter password: Enter password again: vzpyrus3a (oracle) $ mkstore -wrl /oradata/wallet -createCredential salesdr hamon Oracle Secret Store Tool : Version 11.2.0.3.0 - Production Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved. Your secret/Password is missing in the command line Enter your secret/Password: Re-enter your secret/Password: Enter wallet password: Create credential oracle.security.client.connect_string1

清单 3. 创建钱夹

接下来,使用 Oracle rman 备份原始集群上的数据库,如清单 4 所示。

pgyruss1 (oracle) $ export ORACLE_HOME=/u02/app/oracle/product/11.2.0/dbhome_1
pgyruss1 (oracle) $ export PATH=$PATH:${ORACLE_HOME}/bin
pgyruss1 (oracle) $ export ORACLE_SID=sales
pgyruss1 (oracle) $ rman 

Recovery Manager: Release 11.2.0.3.0 - Production on Wed Jan 18 03:14:55 2012

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

RMAN> connect target sys/oracle@sales;

connected to target database: SALES (DBID=645630077)

RMAN> connect auxiliary /;

connected to auxiliary database: SALES (DBID=645630077)

RMAN> backup device type disk tag 'mybkup' database include current controlfile for standby;

Starting backup at 18-JAN-12
using channel ORA_DISK_1
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00001 name=/oradata/SALES/datafile/o1_mf_system_7k0sfhtw_.dbf
input datafile file number=00002 name=/oradata/SALES/datafile/o1_mf_sysaux_7k0sfhxg_.dbf
input datafile file number=00003 name=/oradata/SALES/datafile/o1_mf_undotbs1_7k0sfhxp_.dbf
input datafile file number=00004 name=/oradata/SALES/datafile/o1_mf_users_7k0sfj0f_.dbf
channel ORA_DISK_1: starting piece 1 at 18-JAN-12
channel ORA_DISK_1: finished piece 1 at 18-JAN-12
piece handle=/oradata/fast_recovery_area/SALES/backupset/2012_01_18/o1_mf_nnndf_MYBKUP_7kfbho4k_.bkp 
tag=MYBKUP comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:35
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
including standby control file in backup set
including current SPFILE in backup set
channel ORA_DISK_1: starting piece 1 at 18-JAN-12
channel ORA_DISK_1: finished piece 1 at 18-JAN-12
piece handle=/oradata/fast_recovery_area/SALES/backupset/2012_01_18/o1_mf_ncsnf_MYBKUP_7kfbjshm_.bkp 
tag=MYBKUP comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 18-JAN-12

RMAN> backup device type disk tag 'mybkup' archivelog all not backed up;

Starting backup at 18-JAN-12
current log archived
using channel ORA_DISK_1
channel ORA_DISK_1: starting archived log backup set
channel ORA_DISK_1: specifying archived log(s) in backup set
input archived log thread=1 sequence=5 RECID=1 STAMP=772495231
input archived log thread=1 sequence=6 RECID=2 STAMP=772527653
input archived log thread=1 sequence=7 RECID=3 STAMP=772538549
input archived log thread=1 sequence=8 RECID=4 STAMP=772570848
input archived log thread=1 sequence=9 RECID=5 STAMP=772614042
input archived log thread=1 sequence=10 RECID=6 STAMP=772653634
input archived log thread=1 sequence=11 RECID=7 STAMP=772732808
input archived log thread=1 sequence=12 RECID=8 STAMP=772783210
input archived log thread=1 sequence=13 RECID=9 STAMP=772795868
input archived log thread=1 sequence=14 RECID=10 STAMP=772840877
input archived log thread=1 sequence=15 RECID=11 STAMP=772855395
input archived log thread=1 sequence=16 RECID=12 STAMP=772856892
input archived log thread=1 sequence=17 RECID=13 STAMP=772859064
input archived log thread=1 sequence=18 RECID=14 STAMP=772859071
input archived log thread=1 sequence=19 RECID=18 STAMP=772859451
input archived log thread=1 sequence=20 RECID=20 STAMP=772859819
channel ORA_DISK_1: starting piece 1 at 18-JAN-12
channel ORA_DISK_1: finished piece 1 at 18-JAN-12
piece handle=/oradata/fast_recovery_area/SALES/backupset/2012_01_18/o1_mf_annnn_MYBKUP_7kfbkdcy_.bkp 
tag=MYBKUP comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:15
Finished backup at 18-JAN-12

RMAN> quit
Recovery Manager complete.

清单 4. 生成备份

此过程完成时,在目标集群上创建等同备份目录并将备份文件复制过去,为恢复阶段做好准备,如清单 5 所示。尽管有多种方法可用,显示此方法主要是因为其简单性。

vzpyrus3a (oracle) $ mkdir -p /oradata/fast_recovery_area/SALES/backupset/2012_01_18
vzpyrus3a (oracle) $ cd /oradata/fast_recovery_area/SALES/backupset/2012_01_18
vzpyrus3a (oracle) $ scp oracle@vzgyruss1b:/oradata/fast_recovery_area/SALES/backupset/2012_01_18/\* .
Password:
o1_mf_annnn_MYBKUP_7 100% |********************************************|   380 MB    00:18    
o1_mf_ncsnf_MYBKUP_7 100% |********************************************|  9600 KB    00:00    
o1_mf_nnndf_MYBKUP_7 100% |********************************************|  1071 MB    00:52

清单 5. 复制备份文件

复制原始数据库的初始化参数之前,设置启用日志传输所必需的参数,如清单 6 所示。

pgyruss1 (oracle) $ sqlplus /NOLOG

SQL*Plus: Release 11.2.0.3.0 Production on Tue Jan 17 09:34:57 2012

Copyright (c) 1982, 2011, Oracle.  All rights reserved.

SQL> connect sys/oracle as sysdba
Connected.

SQL> alter system set log_archive_dest_1='location=use_db_recovery_file_dest \
valid_for=(all_logfiles,all_roles) db_unique_name=sales' scope=both;
System altered. SQL> alter system set log_archive_dest_2='service=salesdr \
valid_for= (online_logfiles,primary_role) db_unique_name=salesdr' scope=both;
System altered. SQL> alter system set standby_file_management='AUTO' scope=both; System altered. SQL> alter system set fal_server='salesdr' scope=both; System altered. SQL> alter system set fal_client='sales' scope=both; System altered. SQL> create pfile='/tmp/inittmp.ora' from spfile; File created. SQL> Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options

清单 6. 设置参数

将临时初始化文件复制到新集群:

vzpyrus3a (oracle) $ scp oracle@vzgyruss1b:/tmp/inittmp.ora /tmp/inittmp.ora
Password: 
inittmp.ora          100% |********************************************|  1246 00:00  
vzpyrus3a (oracle) $

现在,编辑临时初始化文件使其适合新数据库,如清单 7 所示。

vzpyrus3a (oracle) $ cat /tmp/inittmp.ora
salesdr.__db_cache_size=855638016
salesdr.__java_pool_size=16777216
salesdr.__large_pool_size=16777216
salesdr.__oracle_base='/u02/app/oracle'#ORACLE_BASE set from environment
salesdr.__pga_aggregate_target=872415232
salesdr.__sga_target=1275068416
salesdr.__shared_io_pool_size=0
salesdr.__shared_pool_size=369098752
salesdr.__streams_pool_size=0
*.audit_file_dest='/u02/app/oracle/admin/salesdr/adump'
*.audit_trail='db'
*.compatible='11.2.0.0.0'
*.db_block_size=8192
*.db_create_file_dest='/oradata'
*.db_domain=''
*.db_name='sales'
*.db_unique_name='salesdr'
*.db_recovery_file_dest='/oradata/fast_recovery_area'
*.db_recovery_file_dest_size=4322230272
*.db_unique_name='salesdr'
*.diagnostic_dest='/u02/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=salesdrXDB)'
*.fal_client='salesdr'
*.fal_server='sales'
*.local_listener='LISTENER_SALESDR'
*.log_archive_dest_1='location=use_db_recovery_file_dest valid_for=(all_logfiles,all_roles) 
db_unique_name=salesdr'
*.log_archive_dest_2='service=sales valid_for=(online_logfiles,primary_role) 
db_unique_name=sales'
*.log_archive_format='%t_%s_%r.dbf'
*.memory_target=2147483648
*.open_cursors=300
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.standby_file_management='AUTO'
*.undo_tablespace='UNDOTBS1'

清单 7. 编辑初始化文件

所有 区域集群节点上创建 audit 目录,然后以 nomount 模式启动数据库,如清单 8 所示。

vzpyrus3a (oracle) $ mkdir -p /u02/app/oracle/admin/salesdr/adump

vzpyrus3b (oracle) $ mkdir -p /u02/app/oracle/admin/salesdr/adump

vzpyrus3a (oracle) $ export ORACLE_HOME=/u02/app/oracle/product/11.2.0/dbhome_1
vzpyrus3a (oracle) $ cd /u02/app/oracle/product/11.2.0/dbhome_1/dbs
vzpyrus3a (oracle) $ scp oracle@vzgyruss1b:/u02/app/oracle/product/11.2.0/dbhome_1/dbs/orapwsales \
orapwsalesdr
Password: orapwsales 100% |********************************************| 1536 00:00 vzpyrus3a (oracle) $ vzpyrus3a (oracle) $ export PATH=$PATH:${ORACLE_HOME}/bin vzpyrus3a (oracle) $ export ORACLE_SID=salesdr vzpyrus3a (oracle) $ sqlplus /NOLOG SQL*Plus: Release 11.2.0.3.0 Production on Wed Jan 18 02:05:33 2012 Copyright (c) 1982, 2011, Oracle. All rights reserved. SQL> connect sys/oracle as sysdba Connected to an idle instance. SQL> create spfile from pfile='/tmp/inittmp.ora'; File created. SQL> ! vzpyrus3a (oracle) $ ls -l $ORACLE_HOME/dbs total 15 -rw-r--r-- 1 oracle oinstall 2851 May 15 2009 init.ora -rw-r----- 1 oracle oinstall 1536 Jan 18 02:46 orapwsalesdr -rw-r----- 1 oracle oinstall 3584 Jan 18 05:08 spfilesalesdr.ora $ exit SQL> startup nomount ORACLE instance started. Total System Global Area 2138521600 bytes Fixed Size 2161024 bytes Variable Size 1275070080 bytes Database Buffers 855638016 bytes Redo Buffers 5652480 bytes SQL> Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options

清单 8. 启动数据库

接下来,运行 rman 恢复数据库,如清单 9 所示。

vzpyrus3a (oracle) $ rman

Recovery Manager: Release 11.2.0.3.0 - Production on Wed Jan 18 05:09:25 2012

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

RMAN> connect target sys/oracle@sales;

connected to target database: SALES (DBID=645630077)

RMAN> connect auxiliary /;

connected to auxiliary database: SALES (not mounted)

RMAN> duplicate target database for standby nofilenamecheck;

Starting Duplicate Db at 18-JAN-12
using target database control file instead of recovery catalog
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: SID=134 device type=DISK

contents of Memory Script:
{
   sql clone "alter system set  control_files = 
  ''/oradata/SALESDR/controlfile/o1_mf_7kfk4wd8_.ctl'', 
  ''/oradata/fast_recovery_area/SALESDR/controlfile/o1_mf_7kfk4wdd_.ctl'' comment=
 ''Set by RMAN'' scope=spfile";
   restore clone standby controlfile;
}
executing Memory Script

sql statement: alter system set  control_files =   
''/oradata/SALESDR/controlfile/o1_mf_7kfk4wd8_.ctl'', 
''/oradata/fast_recovery_area/SALESDR/controlfile/o1_mf_7kfk4wdd_.ctl'' 
comment= ''Set by RMAN'' scope=spfile

Starting restore at 18-JAN-12
using channel ORA_AUX_DISK_1

channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: restoring control file
channel ORA_AUX_DISK_1: reading from backup piece 
/oradata/fast_recovery_area/SALES/backupset/2012_01_18/o1_mf_ncsnf_MYBKUP_7kfbjshm_.bkp
channel ORA_AUX_DISK_1: piece 
handle=/oradata/fast_recovery_area/SALES/backupset/2012_01_18/o1_mf_ncsnf_MYBKUP_7kfbjshm_.bkp tag=MYBKUP
channel ORA_AUX_DISK_1: restored backup piece 1
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01
output file name=/oradata/SALESDR/controlfile/o1_mf_7kfk4wrx_.ctl
output file name=/oradata/fast_recovery_area/SALESDR/controlfile/o1_mf_7kfk4wx3_.ctl
Finished restore at 18-JAN-12

contents of Memory Script:
{
   sql clone 'alter database mount standby database';
}
executing Memory Script

sql statement: alter database mount standby database

contents of Memory Script:
{
   set newname for clone tempfile  1 to new;
   switch clone tempfile all;
   set newname for clone datafile  1 to new;
   set newname for clone datafile  2 to new;
   set newname for clone datafile  3 to new;
   set newname for clone datafile  4 to new;
   restore
   clone database
   ;
}
executing Memory Script

executing command: SET NEWNAME

renamed tempfile 1 to /oradata/SALESDR/datafile/o1_mf_temp_%u_.tmp in control file

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

Starting restore at 18-JAN-12
using channel ORA_AUX_DISK_1

channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00001 to /oradata/SALESDR/datafile/o1_mf_system_%u_.dbf
channel ORA_AUX_DISK_1: restoring datafile 00002 to /oradata/SALESDR/datafile/o1_mf_sysaux_%u_.dbf
channel ORA_AUX_DISK_1: restoring datafile 00003 to /oradata/SALESDR/datafile/o1_mf_undotbs1_%u_.dbf
channel ORA_AUX_DISK_1: restoring datafile 00004 to /oradata/SALESDR/datafile/o1_mf_users_%u_.dbf
channel ORA_AUX_DISK_1: reading from backup piece 
/oradata/fast_recovery_area/SALES/backupset/2012_01_18/o1_mf_nnndf_MYBKUP_7kfbho4k_.bkp
channel ORA_AUX_DISK_1: piece 
handle=/oradata/fast_recovery_area/SALES/backupset/2012_01_18/o1_mf_nnndf_MYBKUP_7kfbho4k_.bkp tag=MYBKUP
channel ORA_AUX_DISK_1: restored backup piece 1
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:25
Finished restore at 18-JAN-12

contents of Memory Script:
{
   switch clone datafile all;
}
executing Memory Script

datafile 1 switched to datafile copy
input datafile copy RECID=5 STAMP=772866621 file 
name=/oradata/SALESDR/datafile/o1_mf_system_7kfk546q_.dbf
datafile 2 switched to datafile copy
input datafile copy RECID=6 STAMP=772866621 file 
name=/oradata/SALESDR/datafile/o1_mf_sysaux_7kfk546y_.dbf
datafile 3 switched to datafile copy
input datafile copy RECID=7 STAMP=772866621 file 
name=/oradata/SALESDR/datafile/o1_mf_undotbs1_7kfk5476_.dbf
datafile 4 switched to datafile copy
input datafile copy RECID=8 STAMP=772866621 file 
name=/oradata/SALESDR/datafile/o1_mf_users_7kfk547d_.dbf
Finished Duplicate Db at 18-JAN-12

RMAN> quit
Recovery Manager complete.

清单 9. 恢复数据库

恢复过程完成后,将备用日志文件添加到新数据库,检查恢复过程是否正常工作,并启用闪回。然后,启动数据库恢复过程,如清单 10 所示。

vzpyrus3a (oracle) $ sqlplus /NOLOG

SQL*Plus: Release 11.2.0.3.0 Production on Wed Jan 18 05:13:18 2012

Copyright (c) 1982, 2011, Oracle.  All rights reserved.

SQL> connect sys/oracle as sysdba
Connected.
SQL> alter database add standby logfile size 50m;

Database altered.

SQL> alter database add standby logfile size 50m;

Database altered.

SQL> alter database add standby logfile size 50m;

Database altered.

SQL> alter database recover managed standby database using current logfile disconnect ;

Database altered.

SQL> shutdown immediate ;
ORA-01109: database not open


Database dismounted.
ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.

Total System Global Area 2138521600 bytes
Fixed Size		    2161024 bytes
Variable Size		 1275070080 bytes
Database Buffers	  855638016 bytes
Redo Buffers		    5652480 bytes
Database mounted.
SQL> alter database flashback on;

Database altered.

SQL> alter database recover managed standby database using current logfile disconnect;

Database altered.

SQL> quit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

清单 10. 启动数据库恢复

通过在原始数据库上执行日志切换然后通过查看警报日志检查是否在新实例上恢复了日志文件,来确定恢复过程是否正常工作,如清单 11 所示。

pgyruss1 (oracle) $ sqlplus /NOLOG

SQL*Plus: Release 11.2.0.3.0 Production on Wed Jan 18 05:22:57 2012

Copyright (c) 1982, 2011, Oracle.  All rights reserved.

SQL> connect sys/oracle as sysdba
Connected.
SQL> alter system switch logfile ;

System altered.

SQL> quit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

vzpyrus3a (oracle) $ tail -f alert_salesdr.log 
Primary database is in MAXIMUM PERFORMANCE mode
RFS[2]: Assigned to RFS process 11124
RFS[2]: Selected log 4 for thread 1 sequence 24 dbid 645630077 branch 772449215
Wed Jan 18 05:26:50 2012
Archived Log entry 4 added for thread 1 sequence 23 ID 0x267ae67d dest 1:
Wed Jan 18 05:26:50 2012
Media Recovery Waiting for thread 1 sequence 24 (in transit)
Recovery of Online Redo Log: Thread 1 Group 4 Seq 24 Reading mem 0
  Mem# 0: /oradata/SALESDR/onlinelog/o1_mf_4_7kfk61h2_.log
  Mem# 1: /oradata/fast_recovery_area/SALESDR/onlinelog/o1_mf_4_7kfk61os_.log
^C
vzpyrus3a (oracle) $

清单 11. 确定恢复过程是否正常工作

数据库已成功恢复,现在将服务器参数文件和数据库口令文件的副本传播到另一个区域集群节点:

vzpyrus3a (oracle) $ cd /u02/app/oracle/product/11.2.0/dbhome_1/dbs
vzpyrus3a (oracle) $  scp orapwsalesdr spfilesalesdr.ora oracle@vzpyrus3b:`pwd`
Password: 
orapwsalesdr         100% |********************************************|  1536       00:00    
spfilesalesdr.ora    100% |********************************************|  3584 00:00 

接下来,为监听器进程和数据库实例创建 Oracle Solaris Cluster 资源,然后测试 Oracle 资源组的切换以确保其已成功完成,如清单 12 所示。

vzpyrus3a (root) # clrt register SUNW.oracle_listener
vzpyrus3a (root) # clrs create -g oracle-rg -t SUNW.oracle_listener \
-p resource_dependencies=oracle-lh-rs \
-p ORACLE_HOME=/u02/app/oracle/product/11.2.0/dbhome_1 oracle-lsnr-rs
vzpyrus3a (root) # vzpyrus3a (root) # clrt register SUNW.oracle_server vzpyrus3a (root) # clrs create -g oracle-rg -t SUNW.oracle_server \
-p ORACLE_HOME=/u02/app/oracle/product/11.2.0/dbhome_1 \
-p connect_string=/@salesdr \
-p ORACLE_SID=salesdr \
-p Alert_log_file=/u02/app/oracle/diag/rdbms/salesdr/salesdr/trace/alert_salesdr.log \
-p Dataguard_role=STANDBY \
-p Standby_mode=PHYSICAL \
-p resource_dependencies_offline_restart=oracle-hasp-rs,oracle-lsnr-rs \
oracle-svr-rs
ppyrus2:oracle-zc - ALERT_LOG_FILE /u02/app/oracle/diag/rdbms/salesdr/salesdr/trace/alert_salesdr.log doesn't exist ppyrus2:oracle-zc - This resource depends on a HAStoragePlus resource that is not online on this node. Ignoring validation errors. vzpyrus3a (root) # vzpyrus3a (root) # clrs status === Cluster Resources === Resource Name Node Name State Status Message ------------- --------- ----- -------------- oracle-svr-rs vzpyrus3a Online Online vzpyrus3b Offline Offline oracle-lsnr-rs vzpyrus3a Online Online vzpyrus3b Offline Offline oracle-hasp-rs vzpyrus3a Online Online vzpyrus3b Offline Offline oracle-lh-rs vzpyrus3a Online Online - LogicalHostname online. vzpyrus3b Offline Offline vzpyrus3a (root) # clrg switch -n vzpyrus3b oracle-rg vzpyrus3a (root) # clrg switch -n vzpyrus3a oracle-rg vzpyrus3a (root) #

清单 12. 创建资源和测试切换

您可能注意到,Solaris Cluster Oracle 代理仅在挂载模式下启动数据库,并不重新启动恢复过程。这是代理正常、预期的行为。我们将在下面的步骤中创建 Data Guard broker 配置时解决数据库恢复过程。

在执行此操作之前,更新原始集群上的 Oracle 服务器资源以确保其属性现在与其是 Oracle Data Guard 主数据库的事实匹配:

pgyruss1 (root) # clrs set -p Dataguard_role=PRIMARY \
-p Standby_mode=PHYSICAL oracle-svr-rs

通过创建 Oracle Data Guard 配置完成复制配置。首先,修改 broker 配置文件的数据库设置,使它们位于共享存储上,然后启用 Data Guard broker,如清单 13 所示。

vzpyrus3a (oracle) $ sqlplus /NOLOG 

SQL*Plus: Release 11.2.0.3.0 Production on Thu Jan 19 04:10:34 2012

Copyright (c) 1982, 2011, Oracle.  All rights reserved.

SQL> connect sys/oracle as sysdba
Connected.
SQL> alter system set dg_broker_config_file1='/oradata/dr1salesdr.dat' scope=both;

System altered.

SQL> alter system set dg_broker_config_file2='/oradata/dr2salesdr.dat' scope=both;

System altered.

SQL> alter system set dg_broker_start=true scope=both;

System altered.

SQL> connect sys/oracle@sales as sysdba
Connected.
SQL> alter system set dg_broker_config_file1='/oradata/dr1sales.dat' scope=both;

System altered.

SQL> alter system set dg_broker_config_file2='/oradata/dr2sales.dat' scope=both;

System altered.

SQL> alter system set dg_broker_start=true scope=both;

System altered.

SQL> Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
oracle@vzpyrus3a:~$ 

清单 13. 创建 Oracle Data Guard 配置

现在,启动 Data Guard broker 并开始定义配置,如清单 14 所示。您可以通过在 broker 会话中指定相应的连接字符串从任一集群创建 Data Guard broker 配置。

vzpyrus3a (oracle) $ dgmgrl 
DGMGRL for Solaris: Version 11.2.0.3.0 - 64bit Production

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

Welcome to DGMGRL, type "help" for information.
DGMGRL> connect sys/oracle@sales
Connected.
DGMGRL> create configuration sales as primary database is sales
> connect identifier is sales;
Configuration "sales" created with primary database "sales"
DGMGRL> add database salesdr as connect identifier is salesdr
> maintained as physical;
Database "salesdr" added
DGMGRL> enable configuration;
Enabled.
DGMGRL> edit configuration set property BystandersFollowRoleChange='NONE';
Property "bystandersfollowrolechange" updated
DGMGRL> show configuration verbose;

Configuration - sales

  Protection Mode: MaxPerformance
  Databases:
    sales   - Primary database
    salesdr - Physical standby database

  Properties:
    FastStartFailoverThreshold      = '30'
    OperationTimeout                = '30'
    FastStartFailoverLagLimit       = '30'
    CommunicationTimeout            = '180'
    FastStartFailoverAutoReinstate  = 'TRUE'
    FastStartFailoverPmyShutdown    = 'TRUE'
    BystandersFollowRoleChange      = 'NONE'

Fast-Start Failover: DISABLED

Configuration Status:
SUCCESS

DGMGRL> quit

清单 14. 启动 Data Guard Broker

如果一切指定正确,配置状态将显示 SUCCESS。将配置置于 Oracle Solaris Cluster 地理版控制下之前,确保从 Data Guard broker 内部测试切换过程。很明显,在生产环境中必须选择恰当的时间来执行此操作,因为它对数据库客户端有影响。

要检查切换是否正常工作,首先禁用监视这两个集群的 Oracle Solaris Cluster Oracle 代理,因为运行状况探测器会对数据库关闭以及 Oracle Data Guard 角色与指定的 Oracle 资源属性设置不匹配的事实做出反应。一旦验证切换正常工作,重新启用 Oracle 资源监视。参见清单 15。

当 Data Guard broker 配置处于 Oracle Solaris Cluster 地理版控制下时,Oracle 资源中 Dataguard_role 属性的值由 Oracle Solaris Cluster 地理版软件的 Oracle Data Guard 模块软件管理。

pgyruss1 (root) # clrs status

=== Cluster Resources ===

Resource Name       Node Name      State        Status Message
-------------       ---------      -----        --------------
oracle-svr-rs       pgyruss1       Offline      Offline
                    pgyruss2       Online       Online

oracle-lsnr-rs      pgyruss1       Offline      Offline
                    pgyruss2       Online       Online

oracle-hasp-rs      pgyruss1       Offline      Offline
                    pgyruss2       Online       Online

oracle-lh-rs        pgyruss1       Offline      Offline - LogicalHostname offline.
                    pgyruss2       Online       Online - LogicalHostname online.

pgyruss1 (root) # clrs unmonitor oracle-svr-rs

vzpyrus3a (root) # clrs status

=== Cluster Resources ===

Resource Name       Node Name      State        Status Message
-------------       ---------      -----        --------------
oracle-svr-rs       vzpyrus3a      Online       Online
                    vzpyrus3b      Offline      Offline

oracle-lsnr-rs      vzpyrus3a      Online       Online
                    vzpyrus3b      Offline      Offline

oracle-hasp-rs      vzpyrus3a      Online       Online
                    vzpyrus3b      Offline      Offline

oracle-lh-rs        vzpyrus3a      Online       Online - LogicalHostname online.
                    vzpyrus3b      Offline      Offline - LogicalHostname offline.

vzpyrus3a (root) # clrs unmonitor oracle-svr-rs
vzpyrus3a (root) # su - oracle
vzpyrus3a (oracle) $ dgmgrl
DGMGRL for Solaris: Version 11.2.0.3.0 - 64bit Production

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

Welcome to DGMGRL, type "help" for information.
DGMGRL> connect sys/oracle@sales
Connected.
DGMGRL> show configuration

Configuration - sales

  Protection Mode: MaxPerformance
  Databases:
    sales   - Primary database
    salesdr - Physical standby database

Fast-Start Failover: DISABLED

Configuration Status:
SUCCESS

DGMGRL> switchover to salesdr;
Performing switchover NOW, please wait...
New primary database "salesdr" is opening...
Operation requires shutdown of instance "sales" on database "sales"
Shutting down instance "sales"...
ORACLE instance shut down.
Operation requires startup of instance "sales" on database "sales"
Starting instance "sales"...
ORACLE instance started.
Database mounted.
Switchover succeeded, new primary is "salesdr"
DGMGRL> show configuration;

Configuration - sales

  Protection Mode: MaxPerformance
  Databases:
    salesdr - Primary database
    sales   - Physical standby database

Fast-Start Failover: DISABLED

Configuration Status:
SUCCESS

DGMGRL> switchover to sales;
Performing switchover NOW, please wait...
New primary database "sales" is opening...
Operation requires shutdown of instance "salesdr" on database "salesdr"
Shutting down instance "salesdr"...
ORACLE instance shut down.
Operation requires startup of instance "salesdr" on database "salesdr"
Starting instance "salesdr"...
ORACLE instance started.
Database mounted.
Switchover succeeded, new primary is "sales"
DGMGRL> show configuration;

Configuration - sales

  Protection Mode: MaxPerformance
  Databases:
    sales   - Primary database
    salesdr - Physical standby database

Fast-Start Failover: DISABLED

Configuration Status:
SUCCESS

DGMGRL> quit

pgyruss1 (root) # clrs status

=== Cluster Resources ===

Resource Name    Node Name   State                  Status Message
-------------    ---------   -----                  --------------
oracle-svr-rs    pgyruss1    Offline                Offline
                 pgyruss2    Online_not_monitored   Online_not_monitored

oracle-lsnr-rs   pgyruss1    Offline                Offline
                 pgyruss2    Online                 Online

oracle-hasp-rs   pgyruss1    Offline                Offline
                 pgyruss2    Online                 Online

oracle-lh-rs     pgyruss1    Offline                Offline - LogicalHostname offline.
                 pgyruss2    Online                 Online - LogicalHostname online.

pgyruss1 (root) # clrs monitor oracle-svr-rs
pgyruss1 (root) # clrs status

=== Cluster Resources ===

Resource Name       Node Name      State        Status Message
-------------       ---------      -----        --------------
oracle-svr-rs       pgyruss1       Offline      Offline
                    pgyruss2       Online       Online

oracle-lsnr-rs      pgyruss1       Offline      Offline
                    pgyruss2       Online       Online

oracle-hasp-rs      pgyruss1       Offline      Offline
                    pgyruss2       Online       Online

oracle-lh-rs        pgyruss1       Offline      Offline - LogicalHostname offline.
                    pgyruss2       Online       Online - LogicalHostname online.

vzpyrus3a (root) # clrs monitor oracle-svr-rs

清单 15. 检查切换是否正常工作

修订版 1.0,2012 年 5 月 1 日

通过 FacebookTwitterOracle 博客关注我们。