data guard主备数据库是在不现的机器上
主数据库的db_name=jytest db_unique_name=jytest
备份数据库db_name=jytest db_unique_name=jyrac1
演示用的示例足够了,我们分两阶段配置,分别是配置primary数据库和配置standby数据库,如下:
一、Primary
数据库配置及相关操作
1、确认主库处于归档模式
SQL> archive log list; Database log mode Archive Mode Automatic archival Enabled Archive destination /u01/app/oracle/arch/jytest Oldest online log sequence 124 Next log sequence to archive 126 Current log sequence 126
2、将primary数据库置为FORCE LOGGING模式。通过下列语句:
SQL> alter database force logging; 数据库已更改。
3、创建standby数据库控制文件
SQL> alter database create standby controlfile as '/u01/app/oracle/jyrac1_01.ctl'; Database altered.
4、创建primary数据库客户端初始化参数文件
注:主要此处修改项较多,为了方便,我们首先创建并修改pfile,然后再通过pfile重建spfile,你当
然也可以通过alter system set命令直接修改spfile内容。
SQL> create pfile from spfile; 文件已创建。
将该初始化参数文件复制一份,做为standby数据库的客户端初始化参数文件
SQL> host copy /u01/app/oracle/product/10.2.0/db/dbs/initjytest.ora /u01/app/oracle/product/10.2.0/db/dbs/initjytest01.ora 已复制1个文件。
修改客户端初始化参数文件,增加下列内容
DB_UNIQUE_NAME='jytest' LOG_ARCHIVE_CONFIG='DG_CONFIG=(jytest,jyrac1)' LOG_ARCHIVE_DEST_1='LOCATION=/u01/app/oracle/arch/jytest VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=jytest' LOG_ARCHIVE_DEST_2='SERVICE=jyrac1 LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=jyrac1' LOG_ARCHIVE_DEST_STATE_1='ENABLE' LOG_ARCHIVE_DEST_STATE_2='ENABLE' REMOTE_LOGIN_PASSWORDFILE='EXCLUSIVE' #--------配置standby角色的参数用于角色转换 FAL_CLIENT='jytest' FAL_SERVER='jyrac1' DB_FILE_NAME_CONVERT=/u01/app/oracle/oradata/jytest','/u01/app/oracle/oradata/jytest'
在备位置后面指定主数据库文件的路径名和文件名位置。这
个参数将主数据库的数据文件路径名转换成备数据文件路
径名。如果备数据库与主数据库处于同一系统上或如果数据
文件在备站点上的目录结构与主站点不同,则需要这个参
数。注意这个参数只是用于转换物理备数据库的路径名。这
个参数可以指定多对路径。(我这里主备数据库目录路径相同也可以不配置)
LOG_FILE_NAME_CONVERT=’/u01/app/oracle/oradata/jytest',' /u01/app/oracle/oradata/jytest'
在备位置后面指定主数据库联机重做日志文件的位置。这个
参数将主数据库日志文件的路径名转换成备数据库上的路
径名。如果备数据库与主数据库处于同一系统上或如果数据
文件在备站点上的目录结构与主站点不同,则需要这个参
数。这个参数可以指定多对路径(我这里主备数据库目录路径相同也可以不配置)
STANDBY_FILE_MANAGEMENT='AUTO'
通过pfile重建spfile
SQL> shutdown immediate ... SQL> create spfile from pfile 文件已创建。
5、复制数据文件到standby服务器(方式多样,不详述)
将adump,bdump,cdump,dpdump,pfile,udump目录复制到weblogic29机器上来
[root@weblogic28 ~]# scp -r /u01/app/oracle/admin/* root@10.138.130.29:/u01/app/oracle/admin root@10.138.130.29's password: 将数据文件,控制文件和重做日志文件复制到weblogic29这台机器上 [root@weblogic28 ~]# scp -r /u01/app/oracle/oradata/* root@10.138.130.29:/u01/app/oracle/oradata root@10.138.130.29's password: redo07a.log 100% 50MB 25.0MB/s 00:02 hygeia01.dbf 100% 20GB 42.9MB/s 07:57 redo04a.log 100% 50MB 50.0MB/s 00:01 control02.ctl 100% 6896KB 6.7MB/s 00:00 temp01.dbf 100% 5120MB 43.4MB/s 01:58 redo06b.log 100% 50MB 25.0MB/s 00:02 users01.dbf 100% 5128KB 5.0MB/s 00:00 control03.ctl 100% 6896KB 6.7MB/s 00:00 redo06a.log 100% 50MB 25.0MB/s 00:02 control01.ctl 100% 6896KB 6.7MB/s 00:00 redo05a.log 100% 50MB 50.0MB/s 00:01 redo07b.log 100% 50MB 50.0MB/s 00:01 redo05b.log 100% 50MB 50.0MB/s 00:01 sysaux01.dbf 100% 5120MB 43.0MB/s 01:59 redo04b.log 100% 50MB 50.0MB/s 00:01 redo01.log 100% 50MB 50.0MB/s 00:01 redo03.log 100% 50MB 25.0MB/s 00:02 redo02.log 100% 50MB 50.0MB/s 00:01 system01.dbf 100% 5120MB 41.0MB/s 02:05 undotbs01.dbf 100% 5120MB 34.1MB/s 02:30
还要将参数文件和口令文件复制过来
[root@weblogic28 ~]# scp -r /u01/app/oracle/product/10.2.0/db/dbs/* root@10.138.130.29:/u01/app/oracle/product/10.2.0/db/dbs
root@10.138.130.29’s password:
alert_jytest.log 100% 435 0.4KB/s 00:00
hc_jytest.dat 100% 1552 1.5KB/s 00:00
initdw.ora 100% 13KB 12.6KB/s 00:00
initjytest.ora 100% 1753 1.7KB/s 00:00
init.ora 100% 8385 8.2KB/s 00:00
lkJYTEST 100% 24 0.0KB/s 00:00
orapwjytest 100% 1536 1.5KB/s 00:00
spfilejytest.ora 100% 4608 4.5KB/s 00:00
注意需要复制所有数据文件,备份的控制文件及客户端初始化参数文件
6、配置listener及net service names(方式多样,不详述)。
分别在主数据库和备份数据库上进行配置
Jytest主数据库(weblogic28)
SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = /u01/app/oracle/product/10.2.0/db) (PROGRAM = extproc) ) (SID_DESC = (GLOBAL_DBNAME =jytest) (ORACLE_HOME =/u01/app/oracle/product/10.2.0/db) (SID_NAME =jytest) ) ) LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = weblogic28)(PORT = 1521)) (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0)) ) )
Jyrac1备份数据库(weblogic29)
SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = /u01/app/oracle/product/10.2.0/db) (PROGRAM = extproc) ) (SID_DESC = (GLOBAL_DBNAME =jytest) (ORACLE_HOME =/u01/app/oracle/product/10.2.0/db) (SID_NAME =jytest) ) ) LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = weblogic29)(PORT = 1521)) (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0)) ) )
在tnsnames.ora文件加入主数据库和备份数据库的服务名
jytest = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.138.130.28)(PORT = 1521)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = jytest) ) ) jyrac1 = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.138.130.29)(PORT = 1521)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME =jytest) ) )
完之后重启listener:
[oracle@weblogic28 ~]$ lsnrctl stop [oracle@weblogic28 ~]$lsnrctl start
通过tnsping测试tnsnames是否正确有效:
C:\Documents and Settings\Administrator>tnsping jyrac1 TNS Ping Utility for 32-bit Windows: Version10.2.0.1.0 - Production on 01-12月- 2012 21:29:27 Copyright (c) 1997, 2005, Oracle. All rights reserved. 已使用的参数文件: C:\oracle\product\10.2.0\db_1\network\admin\sqlnet.ora 已使用TNSNAMES适配器来解析别名 Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP) (HOST = 10.138.130.29)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME =jytest))) OK (10毫秒) C:\Documents and Settings\Administrator>tnsping jytest TNS Ping Utility for 32-bit Windows: Version10.2.0.1.0 - Production on 01-12月- 2012 21:31:57 Copyright (c) 1997, 2005, Oracle. All rights reserved. 已使用的参数文件: C:\oracle\product\10.2.0\db_1\network\admin\sqlnet.ora 已使用TNSNAMES适配器来解析别名 Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP) (HOST = 10.138.130.28)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME =jytest))) OK (0毫秒)
二、Standby
数据库配置及相关操作
1、通过ORADIM创建新的OracleService
2、创建密码文件,注意保持sys密码与primary数据库一致。
[oracle@weblogic29 ~]$orapwd file=/u01/app/oracle/product/10.2.0\db\dba\PWDjytest .ora password=system entries=30
3、创建目录
[root@weblogic28 ~]# mkdir /u01/app/oracle /admin/jytest/adump
4、复制文件,不做过多描述
5、修改初始化参数文件
增加下列参数
db_unique_name=jyrac1 LOG_ARCHIVE_CONFIG='DG_CONFIG=(jytest,jyrac1)' DB_FILE_NAME_CONVERT=/u01/app/oracle/oradata/jytest','/u01/app/oracle/oradata/jytest'
在备位置后面指定主数据库文件的路径名和文件名位置。这
个参数将主数据库的数据文件路径名转换成备数据文件路
径名。如果备数据库与主数据库处于同一系统上或如果数据
文件在备站点上的目录结构与主站点不同,则需要这个参
数。注意这个参数只是用于转换物理备数据库的路径名。这
个参数可以指定多对路径。(我这里主备数据库目录路径相同也可以不配置)
LOG_FILE_NAME_CONVERT=’/u01/app/oracle/oradata/jytest',' /u01/app/oracle/oradata/jytest'
在备位置后面指定主数据库联机重做日志文件的位置。这个
参数将主数据库日志文件的路径名转换成备数据库上的路
径名。如果备数据库与主数据库处于同一系统上或如果数据
文件在备站点上的目录结构与主站点不同,则需要这个参
数。这个参数可以指定多对路径(我这里主备数据库目录路径相同也可以不配置)
LOG_ARCHIVE_DEST_1='LOCATION=/u01/app/oracle/arch/jyrac1 VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=jyrac1' LOG_ARCHIVE_DEST_STATE_1=ENABLE
#—下列参数用于角色切换
LOG_ARCHIVE_DEST_2='SERVICE=jytest LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=jytest' LOG_ARCHIVE_DEST_STATE_2=ENABLE REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE FAL_SERVER=jytest FAL_CLIENT=jyrac1 STANDBY_FILE_MANAGEMENT=AUTO
注意同时修改*_dest的路径。
通过该pfile创建spfile
SQL> create spfile from pfile; 文件已创建。
6、启动standby到mount
SQL> startup mount ORACLE instance started. Total System Global Area 6442450944 bytes Fixed Size 2030368 bytes Variable Size 1090520288 bytes Database Buffers 5335154688 bytes Redo Buffers 14745600 bytes Database mounted.
7、启动redo应用
SQL> alter database recover managed standby database disconnect from session; Database altered.
8、查看同步情况
首先连接到primary数据库
SQL> show parameter db_unique NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_unique_name string jytest SQL> alter system switch logfile; System altered SQL> select max(sequence#) from v$archived_log; MAX(SEQUENCE#) -------------- 129
连接到standby数据库
SQL> show parameter db_unique NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_unique_name string jyrac1 SQL> select max(sequence#) from v$archived_log; MAX(SEQUENCE#) -------------- 129