实验:搭建dataguard
1、打开主库zwb强制写日志模式
SQL> alter database force logging;
SQL> select force_logging from v$database;
FOR
---
YES
2、建立备库数据文件放置目录
[oracle@testsvr oracle]$ mkdir stdby
3、做首次全同步数据库
SQL> alter database begin backup;
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
/oracle/oradata/zwb/system01.dbf
/oracle/oradata/zwb/undotbs01.dbf
/oracle/oradata/zwb/sysaux01.dbf
/oracle/oradata/zwb/users01.dbf
/oracle/oradata/zwb/example01.dbf
/oracle/oradata/zwb/rmantbs01.dbf
6 rows selected.
[oracle@testsvr zwb]$ cp *.dbf /oracle/stdby
SQL> alter database end backup;
4、配置网络
[oracle@testsvr ~]$ cd $ORACLE_HOME/network/admin
配置listener.ora:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /oracle/app/product/10.2.0/db_1)
(PROGRAM = extproc)
)
(SID_DESC =
(SID_NAME = zwb)
(ORACLE_HOME = /oracle/app/product/10.2.0/db_1)
(global_dbname=zwb)
)
(SID_DESC =
(SID_NAME = stdby)
(ORACLE_HOME = /oracle/app/product/10.2.0/db_1)
(global_dbname=stdby)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = testsvr)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
)
配完后重启一下监听
[oracle@testsvr admin]$ lsnrctl stop
[oracle@testsvr admin]$ lsnrctl start
配置tnsnames.ora:
EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)
ZWB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = tcp)(HOST = 10.10.10.88)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = zwb)
)
)
bxtest =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = tcp)(HOST = 10.10.10.88)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = bxtest)
)
)
stdby =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = tcp)(HOST = 10.10.10.88)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = stdby)
)
)
5、测试下能否ping通stdby
[oracle@testsvr admin]$ tnsping stdby
TNS Ping Utility for Linux: Version 10.2.0.1.0 - Production on 10-JUN-2012 20:07:20
Copyright (c) 1997, 2005, Oracle. All rights reserved.
Used parameter files:
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = tcp)(HOST = 10.10.10.88)(PORT = 1521)) (CONNECT_DATA = (SERVICE_NAME = stdby)))
OK (10 msec)
6、创建备库目录
[oracle@testsvr admin]$ cd $ORACLE_BASE/admin
[oracle@testsvr admin]$ mkdir -p stdby/bdump
[oracle@testsvr admin]$ mkdir -p stdby/cdump
[oracle@testsvr admin]$ mkdir -p stdby/adump
[oracle@testsvr admin]$ mkdir -p stdby/udump
[oracle@testsvr stdby]$ mkdir -p /oracle/stdby/archlog /*创建备库的归档路径*/
7、配置备库密码文件
[oracle@testsvr admin]$ cd $ORACLE_HOME/dbs
[oracle@testsvr dbs]$ cp orapwzwb orapwstdby
8、测试连到备库
[oracle@testsvr dbs]$ sqlplus 'sys/oracle@stdby as sysdba'
SQL*Plus: Release 10.2.0.1.0 - Production on Sun Jun 10 20:15:29 2012
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to an idle instance.
9、创建备库参数文件模板
[oracle@testsvr dbs]$ cd $ORACLE_HOME/dbs
[oracle@testsvr dbs]$ cp initzwb.ora initstdby.ora
10、主库zwb参数文件添加如下参数
[oracle@testsvr dbs]$ vi initzwb.ora
standby_archive_dest='/oracle/archlog'
standby_file_management=auto
db_file_name_convert='/oracle/stdby','/oracle/oradata/zwb'
log_file_name_convert='/oracle/stdby','/oracle/oradata/zwb'
log_archive_config='DG_CONFIG=(zwb,stdby)'
注意:log_file_name_convert=('AAA','BBB' )
AAA是日志文件的源目录,BBB是日志文件目标目录
10、主库重新创建spfile,重启生效
SQL> create spfile from pfile;
SQL> startup
11、测试一下参数是否生效
SQL> show parameter db_file_name_convert;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_file_name_convert string /oracle/stdby, /oracle/zwb
12、编辑备库stdby参数文件
[oracle@testsvr dbs]$ cd $ORACLE_HOME/dbs
$vi initstdby.ora
将zwb替换成stdby,注意db_name参数不需要替换,并添加或修改如下参数
standby_archive_dest='/oracle/stdby/archlog'
standby_file_management=auto
db_file_name_convert='/oracle/oradata/zwb','/oracle/stdby'
log_file_name_convert='/oracle/oradata/zwb','/oracle/stdby'
db_unique_name='stdby'
log_archive_config='DG_CONFIG=(zwb,stdby)'
13、生成备库spfile
SQL> create spfile from pfile;
14、启动备库
[oracle@testsvr dbs]$ export ORACLE_SID=stdby
[oracle@testsvr dbs]$ sqlplus '/as sysdba'
SQL> startup nomount
ORACLE instance started.
15、连到主库,从主库zwb创建standby controlfile
[oracle@testsvr dbs]$ export ORACLE_SID=zwb
[oracle@testsvr dbs]$ sqlplus '/as sysdba'
SQL> alter database create standby controlfile as '/oracle/stdby/control01.ctl';
16、切换备库并mount
[oracle@testsvr dbs]$ export ORACLE_SID=stdby
[oracle@testsvr dbs]$ sqlplus '/as sysdba'
SQL> alter database mount;
17、备库设置传输参数
SQL> alter system set log_archive_dest_1='location=/oracle/stdby/archlog VALID_FOR=(ALL_LOGFILES,ALL_ROLES) db_unique_name=stdby';
SQL> alter system set log_archive_dest_2='SERVICE=zwb VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=zwb';
18、主库设置传输参数
[oracle@testsvr dbs]$ export ORACLE_SID=zwb
[oracle@testsvr dbs]$ sqlplus '/as sysdba'
SQL> alter system set log_archive_dest_2='SERVICE=stdby VALID_FOR=(ALL_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=stdby';
System altered.
SQL> alter system set log_archive_dest_1='LOCATION=/oracle/archlog VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=zwb';
System altered.
19、测试主库切个归档看备库是否传到
主库:
SQL> alter system switch logfile;
System altered.
备库收到日志:
[oracle@testsvr archlog]$ pwd
/oracle/stdby/archlog
[oracle@testsvr archlog]$ ls -rtl
total 792
-rw-r----- 1 oracle oinstall 803328 Jun 10 21:33 1_24_784249064.dbf
20、备库启动之前手动应用归档
SQL> recover standby database; ---缺少的话直接考一下
如果正常,启动后台应用进程mrp
SQL> alter database recover managed standby database disconnect from session;
Database altered.
实验成功:搭建dataguard成功