OracleDataGuard搭建实训.docx

上传人:b****1 文档编号:1680122 上传时间:2023-05-01 格式:DOCX 页数:35 大小:656.57KB
下载 相关 举报
OracleDataGuard搭建实训.docx_第1页
第1页 / 共35页
OracleDataGuard搭建实训.docx_第2页
第2页 / 共35页
OracleDataGuard搭建实训.docx_第3页
第3页 / 共35页
OracleDataGuard搭建实训.docx_第4页
第4页 / 共35页
OracleDataGuard搭建实训.docx_第5页
第5页 / 共35页
OracleDataGuard搭建实训.docx_第6页
第6页 / 共35页
OracleDataGuard搭建实训.docx_第7页
第7页 / 共35页
OracleDataGuard搭建实训.docx_第8页
第8页 / 共35页
OracleDataGuard搭建实训.docx_第9页
第9页 / 共35页
OracleDataGuard搭建实训.docx_第10页
第10页 / 共35页
OracleDataGuard搭建实训.docx_第11页
第11页 / 共35页
OracleDataGuard搭建实训.docx_第12页
第12页 / 共35页
OracleDataGuard搭建实训.docx_第13页
第13页 / 共35页
OracleDataGuard搭建实训.docx_第14页
第14页 / 共35页
OracleDataGuard搭建实训.docx_第15页
第15页 / 共35页
OracleDataGuard搭建实训.docx_第16页
第16页 / 共35页
OracleDataGuard搭建实训.docx_第17页
第17页 / 共35页
OracleDataGuard搭建实训.docx_第18页
第18页 / 共35页
OracleDataGuard搭建实训.docx_第19页
第19页 / 共35页
OracleDataGuard搭建实训.docx_第20页
第20页 / 共35页
亲,该文档总共35页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

OracleDataGuard搭建实训.docx

《OracleDataGuard搭建实训.docx》由会员分享,可在线阅读,更多相关《OracleDataGuard搭建实训.docx(35页珍藏版)》请在冰点文库上搜索。

OracleDataGuard搭建实训.docx

OracleDataGuard搭建实训

DATAGUARD物理备库的创建

--实训2013-11-23

1、dataguard介绍

Dataguard是ORACLE推出的一种高可用性(HIGHAVAILABLE)的数据库方案,RAC的技术

是为了保护实例。

rman的技术是为了保护数据。

而DATAGUARD则是把实例和数据一起保护了。

在8i之前称之为standbydatabase从9i开始。

正式更名为Dataguard它是在主节点与备用节点间通过日志同步来保证数据的同步。

可以实现快速切换与灾难性恢复。

Dataguard只是在软件上对数据库进行设置,并不需要额外购买任何组件,它能在对主数据库影响很小的情况下,实现备数据库的同步.而主备机的数据差异只在在线日志部分,如果是在实时应用模式则理论上主备库的数据应该是一样的。

所以如果在主库出现故障的情

况下会丢失这部分未归档的数据。

当然这是最坏的一种情况。

本文档软件环境.主备库处于不同的服务器上

主库

操作系统版本:

RedHatEnterpriseLinux5.4

数据库版本:

OracleDatabase11gEnterpriseEditionRelease11.2.0.1.0

Ip地址:

172.25.140.1

Oracle_sid=ora11

Db_unique_name=ora11

 

备库

操作系统版本:

RedHatEnterpriseLinux5.4

数据库版本:

OracleDatabase11gEnterpriseEditionRelease11.2.0.1.0

Ip地址:

172.25.140.2

Oracle_sid=ora12

Db_unique_name=ora12

(注意:

主库已经安装好数据库软件和一个运行正常的数据库实例,备库只安装数据库软件,先不创建数据库和实例。

2、dataguard环境要求

2.1数据库版本必须为企业版.版本最好在9i以上.主备库数据库的版本必须一致。

2.2主备数据库所在操作系统版本以及位数要求一样。

2.3主备库硬件配置可以不一样.看具体应用。

2.4主数据库和备数据库都可以是单实例的.也可以是RAC。

2.5同一个dataguard环境中数据库名必须一样。

主备库的目录结构要求一样(逻辑备

库可以不一样)。

3、对主库的修改

3.1修改归档方式

要使用dataguard做数据库容灾.主库必须处于归档模式下。

如果已经是归档模式则跳

过此步。

修改归档模式步骤

SQL>archiveloglist;

DatabaselogmodeNoArchiveMode

AutomaticarchivalDisabled

Archivedestination/u01/arch

Oldestonlinelogsequence1

Currentlogsequence3

可见当前数据库处于非归档模式.

--关闭数据库

SQL>shutdownimmediate;

启动数据库到mount阶段

SQL>startupmount;

修改数据库为归档模式

SQL>alterdatabasearchivelog;

Databasealtered.

打开数据库

SQL>alterdatabaseopen;

 

查看当前数据库模式

可见数据库已经处于归档模式。

归档模式修改完成。

3.2打开ForcedLogging模式

查询当前日志模式

可见当前数据库为非强制日志模式

修改数据库为强制日志模式

SQL>alterdatabaseforcelogging;

Databasealtered.

再次查询

提示:

关于FORCELOGGING

想必大家知道有一些DDL语句可以通过指定NOLOGGING子句的方式避免写redo

log(目的是提高速度.某些时候确实有效),指定数据库为FORCELOGGING模式后,数

据库将会记录除临时表空间或临时回滚段外所有的操作而忽略类似NOLOGGING之类的

指定参数。

如果在执行forcelogging时有nologging之类的语句在执行,则forcelogging会等待直到这类语句全部执行。

FORCELOGGING是做为固定参数保存在控制文件中。

因此其不受重启之类操作的影响(只执行一次即可)如果想取消.可以通过alterdatabasenoforcelogging语句关闭强制记录。

3.3创建密码文件

[oracle@redhatDG1~]$orapwdfile=orapwora11password=redhatforce=y

注意.orapworcl应该是orapw如果你的SID是其他则需要换成你的SID,并放入

$ORACLE_HOME/dbs下。

备库也是一样。

该密码文件默认生成位置为$ORACLE_HOME/dbs目录.主备库的密码必须一致.否则归档

日志无法在主备库之间同步。

3.4修改初始化参数

增加以下参数.如果在初始化参数已经有配置.则看需要做相应的修改。

1、与主库角色相关的初始化参数说明:

DB_NAME

注意保持同一个DataGuard环境中所有数据库DB_NAME相同

DB_UNIQUE_NAME

为每一个数据库指定一个唯一的名称,以标示同一个dataguard环境中不同的数据库。

LOG_ARCHIVE_CONFIG

该参数通过DG_CONFIG属性罗列同一个DataGuard中所有DB_UNIQUE_NAME(含主库db及备

库db)以逗号分隔。

例如:

LOG_ARCHIVE_CONFIG='DB_CONFIG=(ora11,ora12)'

LOG_ARCHIVE_DEST_n

归档文件的生成路径。

该参数非常重要,dataguard就是通过这里的设置传输日志的。

LOG_ARCHIVE_DEST_STATE_n

指定参数值为ENABLE􀇔标示对应的LOG_ARCHIVE_DEST_n参数是否有效。

REMOTE_LOGIN_PASSWORDFILE

推荐设置参数值为EXCLUSIVE或者SHARED,注意保证相同DataGuard配置中所有db服务

器sys密码相同。

如果不同日志传输会失败。

数据库默认是EXCLUSIVE,一般不用修改。

LOG_ARCHIVE_FORMAT

指定归档文件格式。

一般也不用修改,保持默认即可

2、以下参数为备库角色相关的参数,建议在主库的初始化参数中也进行设置,这样在主备

库角色相互转换后不需要做修改dataguard也能正常运行。

FAL_SERVER

指定备库到主数据库的连接服务名:

FAL_SERVER=ora12日志所在服务器。

FAL_CLIENT

指定主库到备库的连接服务名:

FAL_CLIENT=ora11日志接收客户端。

STANDBY_FILE_MANAGEMENT

如果主库的数据文件发生修改:

如新建,重命名等,则按照本参数的设置在备库中做相应修

改。

设为AUTO表示自动管理。

设为MANUAL表示需要手工管理。

例如:

STANDBY_FILE_MANAGEMENT=AUTO

下面开始修改主库的初始化参数。

db_name参数已经设置.不用修改

SQL>altersystemsetdb_unique_name=’ora11’scope=spfile;

Systemaltered.

SQL>altersystemsetlog_archive_config='dg_config=(ora11,oral2)'scope=spfile;

Systemaltered.

---这里的ora1l和oral2为db_unique_nam

SQL>altersystemsetlog_archive_dest_1='location=/u01/arch'scope=spfile;

Systemaltered.

--/u01/arch为本地的归档目录,需要手动创建该目录,当然也可以指定别的路径。

注意oracle账号对该目录又可读写的权限。

SQL>altersystemsetlog_archive_dest_state_1=enablescope=spfile;

Systemaltered.

--这个通常不用修改,系统默认的就是enable。

SQL>altersystemsetlog_archive_dest_2='service=ora12

valid_for=(online_logfiles,primary_role)archasyncNOAFFIRM

db_unique_name=orcl2'scope=spfile;

Systemaltered.

-----这里的service为主库连接到备库的服务名,后面会在tnsnames.ora文件中配置valid_for参数说明这个归档日志目的地在本数据库为主库的角色下才需要把online_logfile传输到备库去。

archasyncNOAFFIRM说明的是同步的方式,这个同步的方式有三种方式:

最大保护,最大性能,最大可用。

每个方式有不同的设置,具体见第五项说明。

SQL>altersystemsetlog_archive_dest_state_2=enablescope=spfile;

Systemaltered.

以上修改的是作为主库角色需要的参数,为了方便以后主备库切换,建议在主库中也配置作

为备库角色的相关参数。

SQL>altersystemsetfal_server=oral2scope=spfile;

Systemaltered

SQL>altersystemsetfal_client=ora11scope=spfile;

Systemaltered

SQL>altersystemsetstandby_file_management=autoscope=spfile;

Systemaltered.

生成静态参数文件,以备后面给备库使用。

SQL>createpfilefromspfile;

Filecreated.

重新启动主库.使参数生效。

提示:

接下来重启数据库!

3.5用rman工具备份主库

创建一个备份文件存放目录.本例为/u01/rmanbk,同时赋予oracle账号可读写该目录。

[root@localhostu01]#mkdirrmanbk

[root@localhostu01]#chownoracle:

oinstallrmanb

--注意以上用root账号创建目录

开始备份数据库

[oracle@redhatDG1oradisk]$rmantarget/

RMAN>backupfulldatabaseformat='/u01/rmanbk/%d_%s.dbf'plusarchivelogdelete

input;

主库备份完成!

3.6创建备库控制文件

SQL>alterdatabasecreatestandbycontrolfileas'/u01/rmanbk/control01.ctl'

Databasealtered

创建一个备库使用的控制文件。

到此我们已经为备库准备好了静态参数文件,备库控制文件,主库数据库备份。

在备库主机上建一目录,把上述文件通过scp命令传输到备库主机上。

其中备份目录要和主库上的备份目录路径一样,不然在用rman还原备库时候会找不到文件。

即在备库上也建一个目录/opt/rmanbk,我们把所有的文件都放在这个目录下。

[oracle@redhatDG1~]$scp/u01/rmanbk/*oracle@172.25.140.2:

/u01/rmanbk/

上述已经传输了备份文件和备库的控制文件,下面把主库的静态参数文件传输到备库

3.7修改listener.ora和tnsnames.ora

修改listener.ora文件.修改这部分内容.目的是使用oracle服务在监听器中静态注册。

主库:

listener.ora

【备注】当使用静态注册的时候,

(SID_NAME=ora11)中的sid_name务必要小写,不管数据库中instance_name参数是否是大

写。

不然通过静态注册的服务无法连接数据库实例。

同oracle用户的环境变量ORACLE_SID

一样,也必须用小写。

修改静态注册可以使用netmgr工具配置。

修改tnsnames.ora文件.增加主库连接到备库的服务名并修改对本地的连接用ip表示.

这样主备库可以统一。

主库:

tnsnames.ora

host地址根据实际情况修改。

到此对主库的修改基本完成。

 

4、对备库的修改

4.1设置oracle环境变量和oracle实例名

修改oracle账号根目录下的.bash_profile文件。

增加红色部分代码。

目的是创建一个数据库实例sid。

[oracle@redhatDG1~]$vim.bash_profile

注意:

要与主库的.bash_profile基本一样,只需将exportORACLE_SID=ora11改为exportORACLE_SID=ora12,即可!

4.2建立备库的参数文件

备库的参数文件我们根据主库的参数文件做一些修改即可。

拷贝/u01/rmanbk/initora11.ora到$ORACLE_HOME/dbs/initoral2.ora。

注意要修改参数文

件名称。

[oracle@redhatDG2~]$cp/u01/rmanbk/initora1l.ora$ORACLE_HOME/dbs/initoral2.ora

修改initorcl2.ora文件内容.需要修改的部分以及修改后如下.

*.db_unique_name='ora12'

*.fal_client='ORA11'

*.fal_server='ORA12'

*.log_archive_dest_2='service=ora11valid_for=(online_logfiles,primary_role)archasyncNOAFFIRMdb_unique_name=ora11'

删除*.dispatchers='(PROTOCOL=TCP)(SERVICE=orclXDB)'

删除(如果备库不存在flash目录则删除)

*.db_recovery_file_dest='/opt/oracle/product/11.2.0/db_1/flash_recovery_area'

删除(如果备库不存在flash目录则删除)

*.db_recovery_file_dest_size=2147483648

别的不需要改动。

尽量保持主备库的sga和pga相关参数一样。

 

4.3建立备库相关的目录

参考主库在备库上建立相关的数据库目录

[oracle@redhatDG2~]$mkdir/u01/arch

创建备库的本地归档目录

[oracle@redhatDG2~]$mkdir/u01/app/oracle/oradata/ora11/

创建数据库目录

[oracle@redhatDG2~]$mkdir/u01/rmanbk

创建数据库备份文件目录

[oracle@redhatDG2~]$mkdir-p$ORACLE_BASE/admin/ora11

[oracle@redhatDG1ora11]$mkdiradumpdpdumppfilescripts

注意:

这两步必须与主库的一样!

创建数据库后台运行日志目录,这些目录是需要同参数文件中的设置一致的。

4.4建立备库密码文件

可以手动建也可以拷贝主库的密码文件,前提是主备库设置的密码要一致,否则日志传输会失败。

[oracle@redhatDG2~]$orapwdfile=orapwora12password=redhatforce=y

注意文件名称不能有误.否则主库连接不上备库,导致归档日志同步失败

4.5修改listener.ora和tnsnames.ora

可以拷贝主库的listener.ora,tnsnames.ora,sqlnet.ora三个文件到备库。

方法同上3.6。

sqlnet.ora文件和tnsnames.ora文件不用修改,与主库保持一样即可。

备库listener.ora:

备库tnsnames.ora:

这个时候在主备库上分别用tnsping命令测试orcl和orcl2服务名看是否通。

如果不通则

修改检查以上文件配置是否正确。

[oracle@redhatDG2~]$tnspingora11

[oracle@redhatDG1~]$tnspingora12

从上面两个服务名均已经互通。

还有一种办法就是:

这样就表示配置成功!

4.6恢复控制文件

拷贝二份备库控制文件到数据库目录

先在主库中查看控制文件的位置:

[oracle@redhatDG2rmanbk]$

cpcontrol01.ctl/u01/app/oracle/oradata/ora11/control01.ctl

[oracle@redhatDG2rmanbk]$

cpcontrol01.ctl/u01/app/oracle/flash_recovery_area/ora11/control02.ctl

4.7用RMAN还原出备库

[oracle@redhatDG2~]$rmantarget/

启动数据库到mount阶段.准备还原

RMAN>restoredatabase;

RMAN>exit

退出rman恢复管理器

到此备库基本建立完成。

4.8开启备库

创建备库的动态参数文件

SQL>createspfilefrompfile;

关闭数据库

SQL>shutdownimmediate;

启动备库到mount状态

SQL>startupmount

SQL>alterdatabaserecovermanagedstandbydatabasedisconnectfromsession;

使备库处于日志恢复模式(备用模式)。

这时候备库的进程有以上几个:

RFS-远程文件接收进程

MRP0-日志应用进程

到此,需要测试一下备库是否可以接收到主库的归档日志。

可在主库中手动归档一个日志文

件(altersystemswitchlogfile),然后查看在备库的归档目录中是否生成有新的归档日

志文件,也可以在备库中用一下语句查询是否存在日志归档记录。

这样就表示成功了!

备注.

对于物理备库(physicalstandby)来说,处于日志恢复模式的时候数据库是不能打开的。

如果要打开只能

先关闭日志恢复模式,然后以readonly(只读方式)打开。

(oracle11G版本可以在readonly下应用归档日志)

SQL>alterdatabaserecovermanagedstandbydatabasecancel;

停止日志恢复模式

SQL>alterdatabaseopenreadonly;

打开数据库。

物理备库在只读模式下可以增加临时文件。

SQL>alterdatabasetempaddtempfile'/u01/app/oracle/oradata/ora11/temp02.dbf'size100mreuse;

这个时候备库还是可以接收主库传输过来的归档日志文件.只是不能应用日志而已。

当用readonly方式打开备库后只有重新启动才能使备库重新回到备用模式。

4.9切换到DATAGUARD最大可用模式并开启实时应用

一般情况下,到4.8步骤为止,dataguard的物理备库已经可以正常使用了。

只是这时

dataguard处于默认的最大性能模式,这个模式下,主库的重做日志只有在归档之后才会传

输到备库上,然后备库才会应用日志。

如果在归档之前主库数据库意外down机,那么这部

分未归档的数据肯会丢失。

为了避免这种情况的发生.可以使用最大可用模式。

Oracle推

荐最大可用模式使用LGWRASYNC(异步)NOAFFIRM模式传输。

实际的生产库推荐这种模式。

在standby不可用时,最大可用模式会自动降低成最大性能模式,所以standby故障不会导

致primay不可用。

对于dataguard模式的介绍。

以下是在dataguard默认的最大性能模式

下切换到实际生成用途的最大可用模式。

1.在备库上增加备用重做日志文件,大小跟主库的在线重做日志一样。

组的数量最好比在

线重做日志多一两组(可调)。

sql>alterdatabaserecovermanagedstandbydatabasecancel;

--先取消日志应用

sql>systemaltered

sql>alterdatabaseaddstandbylogfilegroup4

('/opt/oradata/primary/std_redo01.log')size50M;

sql>systemaltered

sql>alterdatabaseaddstandbylogfilegroup5

('/opt/oradata/primary/std_redo02.log')size50M;

sql>systemaltered

sql>alterdatabaseaddstandbylogfilegroup6

('/opt/oradata/primary/std_redo03.log')size50M;

sql>systemaltered

sql>alterdatabaseaddstandbylogfilegroup7

('/opt/oradata/primary/std_redo04.log')size50M;

sql>systemaltered

sql>recovermanagedstandbydatabasedisconnectfromsession;

------非实时应用模式或者用下面的语句开启备库的实时应用模式

sql>recovermanagedstandbydatabaseusingcurrentlogfile

disconnectfromsession;

鉴于后面主备库切换的需要,在主库上也增加备用重做日志。

当然要把主库处于mount状态下才可添加。

可在下面统一修改。

2.在主库上做修改(两个地方:

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2