ITPub博客

首页 > 数据库 > Oracle > Oracle Dataguard搭建

Oracle Dataguard搭建

Oracle 作者:junfeng 时间:2013-08-10 12:32:00 0 删除 编辑

测试环境说明

硬件环境:虚拟机

主数据库:192.168.1.17

备数据库:192.168.1.18

软件环境:

OracleEnterprise Linux 5.8 x64

OracleDataBase 10g for Linux x64(已安装10.2.4.0补丁)

Oracle安装路径:/usr/oracle/product/10.2.0

ORACLE_SID: testdb

ORACLE_BASE: /usr/oracle

ORACLE_HOME:/usr/oracle/procuct/10.2.0

2 Dataguard搭建说明

2.1 OracleDataguard简介

Oracle DataGuard是Oracle开发的一种数据库级别的HA方案,最主要功能是冗灾、数据保护、故障恢复等,它是生产数据库的“事务一致性镜像”,创建时,使用主数据库的物理镜像备份;创建完成后,备数据库会通过主数据库传输过来的归档日志自动维护备用数据库,将重做数据应用到备用数据库,以保证数据一致性。

2.2主数据库的准备及配置

2.2.1确认主数据库运行在归档模式并启用强制归档

在sqlplus下执行以下语句:

selectname,log_mode,force_logging from v$database;

如log_mode值为ARCHIVELOG,force_logging值为yes,则表明数据库目前已运行在归档模式下,并已启用强制归档。如运行在非归档模式下,则需将数据库切换为归档模式,并启用强制归档。操作方法:

a.创建归档日志目录:在默认情况下,如不自定义归档日志目录,则归档日志保存在FRA(Flash Recovery Area)中,默认的FRA大小为2G。故日常使用中,推荐在操作系统中创建自定义的归档日志目录,并修改属主及组信息为oracle:dba:

mkdir p /usr/oracle/oradata/arch

chown R oracle.dba /usr/oracle/oradata/arch

b.修改数据库相关参数,指定归档日志存放路径,并将数据库切换至归档模式运行,启用强制归档,上述操作在sqlplus下进行:

altersystem set log_archive_dest_1=’/usr/oracle/oradata/arch’;

shutdown immediate;

startup mount;

alter database archivelog; --切换到归档模式

alter database force logging; --强制写日志,保证standby一致

alterdatabase open;

变更完成后,再次在sqlplus下执行:

selectname,log_mode,force_logging from v$database;

用于查看数据库是否已经运行在归档模式下并强制归档。确认已经启用归档后,在sqlplus下执行如下语句:

altersystem switch logfile; //日志强制切换

执行成功后,切换至自定义的归档日志目录,查看归档日志是否已经生成。

2.2.2配置TNS

绝大多数情况下,Oracle通信是通过其经典自有机制——监听器并配合TNS来进行的,DataGuard通信也不例外。在配置DataGuard之前,首先需要在主、备数据库中配置本机及远端机器的TNS,配置信息保存在/usr/oracle/product/10.2.0/network/admin/tnsnames.ora文件中。在该文件中增加以下内容:

testdg=

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST =192.168.1.18)(PORT = 3173))

)

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = testdb)

)

)

testpri=

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST =192.168.1.17)(PORT = 3173))

)

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = testdb)

)

)

2.2.3创建最新的pfile并修改相应参数

由于DataGuard配置过程中,需要增加一些参数,需要直接修改pfile,故在数据库归档模式启用后,需创建一个最新的pfile,创建方法在《冷备方式更换数据库》中已有描述,此处不再详述。执行createpfile from spfile,生成的pfile存放在$ORACLE_HOME/dbs(在/usr/oracle/product/10.2.0/dbs)下,文件名为init.ora。

创建完成后,另外创建该文件的一个备份,供后面步骤中备数据库用。

cpinittest.ora inittest_standby.ora

inittest.ora中增加以下内容:

*.fal_client='testdg'

*.fal_server='testpri'

*.log_archive_dest_1='location=/usr/oracle/oradata/arch'

*.log_archive_dest_2='SERVICE=testdgLGWR ASYNC'

*.standby_archive_dest='/usr/oracle/oradata/arch'

*.standby_file_management='AUTO'

2.2.4为备数据库创建控制文件

为保证控制文件创建无异常,该步骤需要在mount状态下用sqlplus进行:

shutdownimmediate;

startupmount;

alterdatabase create standby controlfile as ‘/home/oracle/control_standby.ctl’;

2.3备数据库的准备与配置

2.3.1确认备数据库运行在归档模式下并已启用强制归档

确认及调整方法同“2.2.1”。

2.3.2配置TNS

作用及配置方法同“2.2.2”。

2.3.3创建最新pfile并配置相应参数

将2.2.3步骤中主数据库pfile的备份inittest_standby.ora复制到备数据库对应目录,在文件中增加以下参数:

*.fal_client='testdg'

*.fal_server='testpri'

*.log_archive_dest_1='location=/usr/oracle/oradata/arch'

*.standby_archive_dest='/usr/oracle/oradata/arch'

*.standby_file_management='AUTO'

2.3.4复制数据文件及控制文件

在主、备数据库正常关闭状态下,将主数据库全部数据文件及密码文件用冷备方式复制到备数据库对应目录,冷备方法参考《冷备方式更换数据库》。注:不复制主数据库控制文件、联机重做日志文件、归档日志文件。

数据文件复制完成后,将2.2.4步骤中创建的控制文件control_standby.ctl复制到备库,并按照pfile中的配置复制三份:

scp oracle@192.168.1.17:/home/oracle/control_standby.ctl/home/oracle

cp/home/oracle/control_standby.ctl /usr/oracle/oradata/control01.ctl

cp /home/oracle/control_standby.ctl/usr/oracle/oradata/control02.ctl

cp/home/oracle/control_standby.ctl /usr/oracle/oradata/control03.ctl

2.4测试TNS配置是否可用

经过上述操作,主、备数据库配置工作完成。在正式启用前,需对两库的TNS配置进行测试。首先分别启动两数据库的监听器:

lsnrctl start

两库监听器均正常启动后,在两数据库上分别执行以下命令(以oracle用户执行):

tnspingtestpri

tnspingtestdg

如返回结果如下所示,则tns配置正常:

TNS Ping Utility for Linux: Version 10.2.0.4.0 - Productionon 25-4月-2013 15:26:20

Copyright (c) 1997,2007, Oracle.All rightsreserved.

Used parameter files:

Used TNSNAMES adapter to resolve the alias

Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS= (PROTOCOL = TCP)(HOST = 192.168.1.17)(PORT = 3173))) (CONNECT_DATA = (SERVER= DEDICATED) (SERVICE_NAME = testdb)))

OK (10 msec)

2.5启动及测试方法

全部配置及测试完成后,分别启动主、备数据库。

主库启动方法(在sqlplus下进行):

startuppfile=/usr/oracle/product/10.2.0/dbs/inittest.ora

观察是否正常启动。待主库正常启动后,用如下方法启动备数据库:

startupnomount pfile=/usr/oracle/product/10.2.0/dbs/inittest.ora

alterdatabase mount standby database;

alterdatabase recover managed standby database disconnect from session;

两数据库完全正常启动后,在主数据库sqlplus下执行:

alter system switchlogfile;

执行成功后,在主、备数据库分别查看对应的归档日志目录中是否生成归档日志,且备数据库中归档日志序号比主数据库归档日志序号大1。日志确认完成后,在备库的sqlplus下执行如下语句:

SELECT SEQUENCE#, FIRST_TIME, NEXT_TIME, APPLIEDFROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;

如在查询结果集中能看到与物理归档日志对应的记录,且APPLIED值为YES,说明主库归档日志已正常传到备库,且备数据库已应用。

2.6创建最新的spfile

上述测试完全正常后,Oracle DataGuard搭建完成。需要注意的一个问题:2.5步骤中,启动数据库时,完全依靠pfile,如有特殊情况需要重新启动数据库时,如忘记指定pfile,则DataGuard失效,影响较为严重,故在测试正常后,需要创建最新的spfile,在两数据库分别执行以下语句(sqlplus中进行):

createspfile from pfile;

3练习后思考内容

1. Oracle DataGuard分为哪两种类型?练习中的配置方法为哪种类型的配置?每种类型的运行方式最主要的区别是什么?

2.在步骤“2.2.4为备数据库创建控制文件”中,指定以mount状态进行操作的原因是什么?如该步骤改在nomount状态、open状态中执行,可能会出现什么问题?出现问题的原因是什么?

问题整理:

常欣(常欣) 09:22:03

SQL>alter system set log_archive_dest_1='/usr/oracle/oradata/arch';

altersystem set log_archive_dest_1='/usr/oracle/oradata/arch'

*

ERROR atline 1:

ORA-32017:failure in updating SPFILE

ORA-16179:incremental changes to "log_archive_dest_1" not allowed with SPFILE

常欣(常欣) 09:22:12

那句命令执行有错误

梁宇生(梁宇生) 09:22:49

这个是需要修改pfile的,修改spfile不生效。

直接改在pfile里修改吧。

梁宇生(梁宇生) 09:23:20

log_archive_dest

这个参数可以通过alter修改,log_archive_dest_n不可以。

常欣(常欣) 09:35:41

常欣(常欣) 09:35:49

pfile的路径以前就是那样。

常欣(常欣) 09:50:30

SQL>select name,log_mode,force_logging from v$database;

NAMELOG_MODEFOR

--------------------- ---

ANALYSEARCHIVELOGYES

已经在归档模式下,归档日志没生成

梁宇生(梁宇生) 09:51:07

altersystem switch logfile

梁宇生(梁宇生) 09:52:25

showparameter log_archive_dest;

梁宇生(梁宇生) 09:52:46

数据库启动的时候,指定pfile没?

常欣(常欣) 09:53:37

我是按文档,这样启动的数据库:startup mount;

常欣(常欣) 09:54:00

SQL> show parameter log_archive_dest;

NAMETYPEVALUE

----------------------------------------------- ------------------------------

log_archive_deststring

log_archive_dest_1string

log_archive_dest_10string

log_archive_dest_2string

log_archive_dest_3string

log_archive_dest_4string

log_archive_dest_5string

log_archive_dest_6string

log_archive_dest_7string

log_archive_dest_8string

log_archive_dest_9string

NAMETYPEVALUE

----------------------------------------------- ------------------------------

log_archive_dest_state_1stringenable

log_archive_dest_state_10stringenable

log_archive_dest_state_2stringenable

log_archive_dest_state_3stringenable

log_archive_dest_state_4stringenable

log_archive_dest_state_5stringenable

log_archive_dest_state_6stringenable

log_archive_dest_state_7stringenable

log_archive_dest_state_8stringenable

log_archive_dest_state_9stringenable

梁宇生(梁宇生) 09:54:41

这块儿需要注意一个问题:

当直接使用alter system命令修改数据库参数时,启动数据库不用指定pfile;

修改pfile时,启动数据库需要显式指定pfile。

梁宇生(梁宇生) 09:55:18

shutdownimmeidate;

startupmount pfile='/usr/oracle/product/10.2.0/dbs/initanalyse.ora';

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/61013/viewspace-1109093/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2009-03-10