测试环境:IBM AIX5.2 ,ORACLE9204 RAC
172.16.102.202,172.16.102.204 构成rac 结构primary
172.16.102.181,172.16.102.182构成rac结构的第一级standby
172.16.102.202,172.16.102.204构成rac结构的第二级standby
命名规则:
primary instance_name 为eport1,eport2。
第一级dataguard的instance_name为dg1_eport1/2。
第三级为dg2_eport1/2。
--------------------------------------
***********make directory*************
--------------------------------------
mkdir -p /oracle9/app/oracle/admin/eport/bdump
mkdir -p /oracle9/app/oracle/admin/eport/cdump
mkdir -p /oracle9/app/oracle/admin/eport/create
mkdir -p /oracle9/app/oracle/admin/eport/pfile
mkdir -p /oracle9/app/oracle/admin/eport/udump
/oracle9/app/oracle/product/9.2.0/bin/orapwd file=/oracle9/app/oracle/product/9.2.0/dbs/orapweport1 password=eport entries=10
--------------------------------------
*************create database*************
--------------------------------------
connect SYS/eport as SYSDBA
startup nomount pfile="/oracle9/app/oracle/product/9.2.0/dbs/init_eport1.ora";
CREATE DATABASE eport
MAXINSTANCES 32
MAXLOGHISTORY 0
MAXLOGFILES 192
MAXLOGMEMBERS 3
MAXDATAFILES 1024
DATAFILE '/dev/rpsdb2_035' SIZE 1000M reuse
EXTENT MANAGEMENT LOCAL
DEFAULT TEMPORARY TABLESPACE TEMP TEMPFILE '/dev/rpsdb2_076' SIZE 100M reuse
UNDO TABLESPACE "UNDOTBS1" DATAFILE '/dev/rpsdb2_083' SIZE 100M reuse
CHARACTER SET ZHS16GBK
NATIONAL CHARACTER SET UTF8
LOGFILE GROUP 1 ('/dev/rpsdb2_095') SIZE 10M,
GROUP 2 ('/dev/rpsdb2_120') SIZE 10M;
CREATE UNDO TABLESPACE "UNDOTBS2" DATAFILE '/dev/rpsdb2_135' SIZE 100M reuse ;
CREATE TABLESPACE "USERS" LOGGING DATAFILE '/dev/rpsdb2_148' SIZE 100M EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO ;
--------------------------------------
************run catalog*******
--------------------------------------
@/oracle9/app/oracle/product/9.2.0/rdbms/admin/catalog.sql;
@/oracle9/app/oracle/product/9.2.0/rdbms/admin/catproc.sql;
connect SYSTEM/manager
@/oracle9/app/oracle/product/9.2.0/sqlplus/admin/pupbld.sql;
connect SYSTEM/manager
set echo on
spool /oracle9/app/oracle/product/9.2.0/assistants/dbca/logs/sqlPlusHelp.log
@/oracle9/app/oracle/product/9.2.0/sqlplus/admin/help/hlpbld.sql helpus.sql;
--------------------------------------
**********cluster view******
--------------------------------------
@/oracle9/app/oracle/product/9.2.0/rdbms/admin/catclust.sql;
--------------------------------------
**********post dbcreate actions*********
--------------------------------------
@/oracle9/app/oracle/product/9.2.0/rdbms/admin/utlrp.sql;
alter database datafile '/dev/rpsdb2_035' autoextend off;
alter database datafile '/dev/rpsdb2_083' autoextend off;
alter database datafile '/dev/rpsdb2_135' autoextend off;
alter database datafile '/dev/rpsdb2_148' autoextend off;
shutdown immediate;
create spfile='/dev/rpsdb2_164' FROM pfile='/oracle9/app/oracle/product/9.2.0/dbs/init_dg1_eport1.ora';
startup;
ALTER DATABASE ADD LOGFILE THREAD 2 GROUP 3 ('/dev/rpsdb2_187') SIZE 10M,
GROUP 4 ('/dev/rpsdb2_193') SIZE 10M;
ALTER DATABASE ENABLE PUBLIC THREAD 2;
--------------------------------------
*****raw device tablesapce map and their size****
--------------------------------------
/dev/rpsdb2_035 system 1000
/dev/rpsdb2_076 temp 100
/dev/rpsdb2_083 undo1 100
/dev/rpsdb2_095 redo01_t1 10
/dev/rpsdb2_120 redo02_t1 10
/dev/rpsdb2_135 undo2 100
/dev/rpsdb2_148 users 100
/dev/rpsdb2_187 redo01_t2 10
/dev/rpsdb2_193 redo02_t2 10
然后节点2上建立initeport2.ora 内容spfile='/dev/rpsdb2_164';
mkdir -p /oracle9/app/oracle/admin/eport/bdump
mkdir -p /oracle9/app/oracle/admin/eport/cdump
mkdir -p /oracle9/app/oracle/admin/eport/create
mkdir -p /oracle9/app/oracle/admin/eport/pfile
mkdir -p /oracle9/app/oracle/admin/eport/udump
/oracle9/app/oracle/product/9.2.0/bin/orapwd file=/oracle9/app/oracle/product/9.2.0/dbs/orapweport2 password=eport
--------------------------------------
**********init.ora********************
--------------------------------------
###########################################
# Cluster Database
###########################################
cluster_database_instances=2
remote_listener=LISTENERS_ORA8
cluster_database=true
eport1.instance_name=eport1
eport2.instance_name=eport2
eport1.instance_number=1
eport2.instance_number=2
eport1.local_listener=LISTENER_ORA81
eport2.local_listener=LISTENER_ORA82
eport2.thread=2
eport1.thread=1
eport2.undo_tablespace=UNDOTBS2
eport1.undo_tablespace=UNDOTBS1
eport1.log_archive_dest_1='location=/archivelog01/eport'
eport2.log_archive_dest_1='location=/archivelog/eport'
eport1.log_archive_dest_2='service=dg1_181 lgwr reopen=60'
eport1.log_archive_start=true
eport2.log_archive_start=true
db_name=eport
control_files=("/dev/rpsdb2_027")
.....略
--------------------------------------
**crt standbyshutdown and dd*************
--------------------------------------
primary(202)上的dd脚本
dd if=/dev/rpsdb2_035 of=/archivelog01/eport/trans/system.dd bs=1048576 count=1002
dd if=/dev/rpsdb2_076 of=/archivelog01/eport/trans/temp.dd bs=1048576 count=102
dd if=/dev/rpsdb2_083 of=/archivelog01/eport/trans/undo1.dd bs=1048576 count=102
dd if=/dev/rpsdb2_095 of=/archivelog01/eport/trans/redo01_t1.dd bs=1048576 count=12
dd if=/dev/rpsdb2_120 of=/archivelog01/eport/trans/redo02_t1.dd bs=1048576 count=12
dd if=/dev/rpsdb2_135 of=/archivelog01/eport/trans/undo2.dd bs=1048576 count=102
dd if=/dev/rpsdb2_148 of=/archivelog01/eport/trans/users.dd bs=1048576 count=102
dd if=/dev/rpsdb2_187 of=/archivelog01/eport/trans/redo01_t2.dd bs=1048576 count=12
dd if=/dev/rpsdb2_193 of=/archivelog01/eport/trans/redo02_t2.dd bs=1048576 count=12
在第一级standby(181)上有与primary完全一致的裸设备,所以上面dd的结果直接ftp到181并dd
dd of=/dev/rpsdb2_035 if=/archivelog01/eport/system.dd bs=1048576 count=1002
dd of=/dev/rpsdb2_076 if=/archivelog01/eport/temp.dd bs=1048576 count=102
dd of=/dev/rpsdb2_083 if=/archivelog01/eport/undo1.dd bs=1048576 count=102
dd of=/dev/rpsdb2_095 if=/archivelog01/eport/redo01_t1.dd bs=1048576 count=12
dd of=/dev/rpsdb2_120 if=/archivelog01/eport/redo02_t1.dd bs=1048576 count=12
dd of=/dev/rpsdb2_135 if=/archivelog01/eport/undo2.dd bs=1048576 count=102
dd of=/dev/rpsdb2_148 if=/archivelog01/eport/users.dd bs=1048576 count=102
dd of=/dev/rpsdb2_187 if=/archivelog01/eport/redo01_t2.dd bs=1048576 count=12
dd of=/dev/rpsdb2_193 if=/archivelog01/eport/redo02_t2.dd bs=1048576 count=12
第二级dataguard仍在primary上,所以必须与primary进行文件映射,202eport 与202 dg2_eport的映射表
dd if=/dev/rpsdb2_035 of=/dev/rpsdb1_002 bs=1048576 count=1002
dd if=/dev/rpsdb2_076 of=/dev/rpsdb1_003 bs=1048576 count=102
dd if=/dev/rpsdb2_083 of=/dev/rpsdb1_004 bs=1048576 count=102
dd if=/dev/rpsdb2_095 of=/dev/rpsdb1_007 bs=1048576 count=12
dd if=/dev/rpsdb2_120 of=/dev/rpsdb1_008 bs=1048576 count=12
dd if=/dev/rpsdb2_135 of=/dev/rpsdb1_005 bs=1048576 count=102
dd if=/dev/rpsdb2_148 of=/dev/rpsdb1_006 bs=1048576 count=102
dd if=/dev/rpsdb2_187 of=/dev/rpsdb1_009 bs=1048576 count=12
dd if=/dev/rpsdb2_193 of=/dev/rpsdb1_010 bs=1048576 count=12
202_dg2的控制文件
dd if=/archivelog01/eport/trans/standby.ctl of=/dev/rpsdb1_011 bs=1048576
ftp下面文件到181
--------------------------------------
**********create standby controlfile******
--------------------------------------
alter database force logging;
startup mount pfile='init_eport1.ora' --修改cluster_database=false
alter database archivelog;
alter database create standby controlfile as '/archivelog01/standby.ctl';
--------------------------------------
**********make standby step****************
--------------------------------------
on 181
orapwd file=orapwdg1_eport1.ora password=eport
将上面生成的standby.ctl 分别dd入第一二级控制文件裸设中
-------------------------------
tnsnames.ora on 181**********
-----------------------------
dg1_181 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST=172.16.102.181)(PORT = 1521))
)
(CONNECT_DATA =
(SID = dg1_eport1)
)
)
dg_202 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST=172.16.102.202)(PORT = 1521))
)
(CONNECT_DATA =
(SID = eport1)
)
)
dg_204 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST=172.16.102.204)(PORT = 1521))
)
(CONNECT_DATA =
(SID = eport2)
)
)
dg2_202 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST=172.16.102.202)(PORT = 1521))
)
(CONNECT_DATA =
(SID = dg2_eport1)
)
)
dg2_204 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST=172.16.102.204)(PORT = 1521))
)
(CONNECT_DATA =
(SID = dg2_eport2)
)
)
下面设备用于standby dataguard (dg2_eport1,dg2_eport2)需要用log_file_name_conver和data_file_name_conver进行处理
#psdb1_002 rpsdb2_035 system
#psdb1_003 rpsdb2_076 temp
#psdb1_004 rpsdb2_083 undo1
#psdb1_007 rpsdb2_135 undo2
#psdb1_008 rpsdb2_148 users
#
#psdb1_005 rpsdb2_095 redo11_t1
#psdb1_006 rpsdb2_120 redo21_t1
#psdb1_009 rpsdb2_187 redo11_t2
#psdb1_010 rpsdb2_193 redo21_t2
倒入202的dg2的脚本
dd if=/dev/rpsdb2_035 of=/dev/rpsdb1_002 bs=1048576
dd if=/dev/rpsdb2_076 of=/dev/rpsdb1_003 bs=1048576
dd if=/dev/rpsdb2_083 of=/dev/rpsdb1_004 bs=1048576
dd if=/dev/rpsdb2_135 of=/dev/rpsdb1_007 bs=1048576
dd if=/dev/rpsdb2_148 of=/dev/rpsdb1_008 bs=1048576
dd if=/dev/rpsdb2_095 of=/dev/rpsdb1_005 bs=1048576
dd if=/dev/rpsdb2_120 of=/dev/rpsdb1_006 bs=1048576
dd if=/dev/rpsdb2_187 of=/dev/rpsdb1_009 bs=1048576
dd if=/dev/rpsdb2_193 of=/dev/rpsdb1_010 bs=1048576
-------------------------------
***crt standby redo logfile on 181**********
-----------------------------
alter database add standby logfile ('/dev/rpsdb2_003') size 10m ;
alter database add standby logfile ('/dev/rpsdb2_006') size 10m ;
alter database add standby logfile ('/dev/rpsdb2_008') size 10m ;
alter database add standby logfile ('/dev/rpsdb2_014') size 10m ;
alter database add standby logfile ('/dev/rpsdb2_036') size 10m ;
alter database add standby logfile ('/dev/rpsdb2_038') size 10m ;
-------------------------------
***initdg1_eport1.ora 181上第一级standby参数文件节选*
-----------------------------
cluster_database_instances=2
remote_listener=LISTENERS_ORA8
cluster_database=true
dg1_eport1.instance_name=dg1_eport1
dg1_eport2.instance_name=dg1_eport2
dg1_eport1.instance_number=1
dg1_eport2.instance_number=2
dg1_eport1.local_listener=LISTENER_ORA81
dg1_eport2.local_listener=LISTENER_ORA82
dg1_eport2.thread=2
dg1_eport1.thread=1
dg1_eport2.undo_tablespace=UNDOTBS2
dg1_eport1.undo_tablespace=UNDOTBS1
*.log_archive_start=true
*.log_archive_dest_1='location=/archivelog01/eport'
*.log_archive_dest_2='service=dg2_202'
*.standby_archive_dest='/archivelog01/eport/arch'
*.fal_client='dg1_181'
*.fal_server='dg_202','dg_204'
rac的standby只能在一个节点上进行恢复,所以有上面的fal写法
-------------------------------
***initdg2_eport1.ora 202上第二级standby参数文件节选*
-----------------------------
cluster_database_instances=2
remote_listener=LISTENERS_ORA8
cluster_database=true
dg2_eport1.instance_name=dg2_eport1
dg2_eport2.instance_name=dg2_eport2
*.lock_name_space='dg2eport'
dg2_eport1.instance_number=4
dg2_eport2.instance_number=5
dg2_eport1.local_listener=LISTENER_ORA81
dg2_eport2.local_listener=LISTENER_ORA82
dg2_eport2.thread=2
dg2_eport1.thread=1
dg2_eport2.undo_tablespace=UNDOTBS2
dg2_eport1.undo_tablespace=UNDOTBS1
*.log_archive_start=true
*.log_archive_dest_1='location=/archivelog01/dg2_eport'
*.fal_client='dg2_202'
*.fal_server='dg1_181'
*.standby_archive_dest='/archivelog01/dg2_eport/arch'
*.standby_file_management=auto
*.remote_login_passwordfile='exclusive'
*.db_file_name_convert='/dev/rpsdb2_035','/dev/rpsdb1_002','/dev/rpsdb2_083','/dev/rpsdb1_004','/dev/rpsdb2_135','/dev/rpsdb1_005','/dev/rpsdb2_148','/dev/rpsdb1_006'
*.log_file_name_convert='/dev/rpsdb2_095','/dev/rpsdb1_007','/dev/rpsdb2_120','/dev/rpsdb1_008','/dev/rpsdb2_187','/dev/rpsdb1_009','/dev/rpsdb2_193','/dev/rpsdb1_010'
第一二级dataguard启动一个节点即可。
转载请注明出处与作者