文章
服务器与存储管理
作者:Tim Read
2012 年 5 月发布
第 1 部分 — 示例配置概述一旦在目标集群上安装了 Oracle Database 软件并且配置了逻辑主机,就该配置 Oracle Database 监听器并开始创建备用数据库的过程。tnsnames.ora 和 sqlnet.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 日 |