Data guard原理及安装配置version2


本文主要介绍了9iR2data guard的一些原理和基本配置方法,以及在data guard环境下的升级和一些监控检测手段,还涉及到一些切换的配置。由于当中涉及的操作可能会导致数据库不能正常运行,贴别提醒,不要在生产系统上直接试验,切记做好备份工作。



免得到时候想哭都哭不出来。

: data guard介绍

dataguard为随着oracle9i R1推出的一项有了重大改进的融灾技术,可以在网络联通的情况下,对生产库做一个完整的在线备份,起到容灾备份的作用。且成本低廉。目前应用也很广,如联通,电信都有data guard的系统在运行。

随着9i R2的推出,data guard也有了很大的改进,主要有下面的一些新功能

1. Logical standby database

9i R2之前,data gauard的服务器只能运行在read only或者recover 模式,

一个physical standy database 在物理上完全等同主库,当physical standy database再做恢复的时候,不能打开用作其他用途。

logical standby database只是在logical上等同需要恢复的schema

所以在恢复的时候,可以同时打开做report,也可以用户和主库不一样的

数据对象等等,极大了提高了从库的利用率。

2Database protection modes

9iR2中,主库可以置于下面三种模式

Maximum protection

Maximum availability

Maximum performance

Maximum protection下, 可以保证从库和主库数据完全一样,做到zero data loss.事务同时在主从两边提交完成,才算事务完成。如果从库宕机或者网络出现问题,主从库不能通讯,主库也立即宕机。在这种方式下,具有最高的保护等级。但是这种模式对主库性能影响很大,要求高速的网络连接。

Maximum availability模式下,如果和从库的连接正常,运行方式等同

Maximum protection模式,事务也是主从库同时提交。如果从库和主库失去

联系,则主库自动切换到Maximum performance模式下运行,保证主库具有最大的可用性。

Maximum performance,主库把归档的 archived log通过arch进程传递给从库,在这种方式下,主库运行性能最高,但是不能保证数据不丢失,且丢失的数据受redo log的大小影响。在redo log过大的情况下,可能一天都没有归档一个日志,可以通过手工切换日志的方式来减小数据的丢失。

3Cascading standby databases

R2中,从库也可以设置把接受到得日志传递到下一级的从库。在有多台standby得情况下,通过这种方式,可以极大的减少主库的压力。

二:data guard原理

data guard原理可以通过如下的图来说明

clip_image002.jpg

physical standby直接从主库接受archived log,然后直接做基于block的物理恢复,所以physical standby再物理文件一级完全都等同于主库。

logical standby则把从主库接受过来的archived log通过logmnr技术,解析为sql语句,直接在logical standby上作基于sql的同步,所以比较灵活。

: data guard 的使用优势

1.增强了可用性,

通过和RAC协作,可以达到目前最高的可用性。可以做到同机房或者异地的容灾备份,同时成本很廉价。

2.提供三种保护模式选择,可以很灵活的在性能和数据保护等级上作选择。

3.提供switch overfail over功能,可以在主库宕机的情况,把从库

切换为主库,在最短时间内恢复性同的运行。

4.通过参数设置,可以控制传到data guard上的日志做延迟恢复,可以防止

用户的一些无操作或者physical corruptions

四:配置data guard

方案中涉及的软件及硬件环境介绍如下

机器 a (primary ip 10.2.33.100)以下简称主库,,机器 b(standby 10.1.1.78) ,以下简称从库。

其中10.2.33.41为本地操作平台,安装有xwin32

用于linux远程的图形操作。

操作系统 10.2.33.100 linux redhat advanced server 2.1

操作系统 10.1.1.78 linux redhat advanced server 2.1

操作系统 10.2.33.41 win2k server

数据库版本 9.2.0.1

由于本文主要关注9irelease 2 dataguard配置,对一些oracle的基本操作,

如安装,建库等,不做过多说明,请参考其他文章。操作系统的参数设置在不同平台,也不相同,请参考相关文档。

如果说到a,b两机,这表示同时在a,b机操作。

1.主从两机的操作系统参数修改(root用户操作)

vi /etc/sysctl.conf 文件,修改后为下面

kernel.sysrq = 1

kernel.shmmax = 1073741824 --这个参数为服务器ram的一半

kernel.msgmni = 1024

kernel.sem = 100 32000 100 100

fs.file-max = 65535

net.ipv4.ip_local_port_range = 1024 65000

net.ipv4.tcp_max_syn_backlog = 8192

2.a,b两机重起网卡,使第一步设置参数生效(root用户操作)

/etc/init.d/network restart

输出如下

Shutting down interface eth0: [ OK ]

Setting network parameters: [ OK ]

Bringing up interface lo: [ OK ]

Bringing up interface eth0: [ OK ]

检查参数设置是否生效

cat /proc/sys/kernel/shmmax

输出如下

1073741824 ,说明刚才设置生效

3.主从两机建立oracle安装用户(root用户操作)

useradd oracle9i

passwd oracle9i

4. a,b两机建立相关目录(root用户操作)

cd /

mkdir tpdata tpsys

chmod 777 tpdata

chmod 777 tpsys

5.主从两机oracle9i用户设置环境变量(oracle9i用户操作)

vi ~/.bash_profile

环境变量如下

export PATH

unset USERNAME

export ORACLE_BASE=/tpdata/9.2.0

export ORACLE_BASE1=/tpsys/app/oracle/product

#export ORACLE_BASE1=/tpsys/app/oracle/product/server

export ORACLE_HOME=$ORACLE_BASE1/9.2.0

export ORACLE_SID=sfssgbk

export PATH=$ORACLE_HOME/bin:$PATH

export LD_LIBRARY_PATH=$ORACLE_HOME/lib

export NLS_LANG=american_america.zhs16gbk

export DISPLAY=10.2.33.41:0 #便于远程操作

6.执行下面操作,使环境变量生效(oracle9i用户操作)

. ~/.bash_profile

echo $ORACLE_BASE

/tpdata/9.2.0

echo $ORACLE_HOME

/tpsys/app/oracle/product/9.2.0

确认环境变量已经生效。

7.在主库上安装好 oracle 9201,选择只安装software,建库的动作下一步做(oracle9i用户操作)

8.打包主库上$ORACLE_HOME,$ORACLE_BASE下面的安装文件,ftp到从库,解开(oracle9i用户操作)

主库

cd /

tar cvzf /tpdata/oracle9201server.tgz /tpsys/app/oracle/product9.2.0 /tpdata/9.2.0/doc /tpdata/9.2.0/jre /tpdata/9.2.0/oraInventory /tpdata/9.2.0/oui

ftp 到从库 /tpdata目录

从库

cd /

tar xvzf /tpdata/oracle9201server.tgz

9.在主库上建立数据库,通过dbca建立,除了字符集选择 zhs16gbk外,全部使用缺省方式(oracle9i用户操作)

10.关闭主库数据库,备份数据文件到从库(oracle9i用户操作)

确定需要cp过去的数据文件以及redo log

sqlplus /nolog

SQL> conn / as sysdba;

SQL> select FILE_NAME from dba_data_files;

FILE_NAME

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

/tpdata/9.2.0/oradata/sfssgbk/system01.dbf

/tpdata/9.2.0/oradata/sfssgbk/undotbs01.dbf

/tpdata/9.2.0/oradata/sfssgbk/drsys01.dbf

/tpdata/9.2.0/oradata/sfssgbk/example01.dbf

/tpdata/9.2.0/oradata/sfssgbk/indx01.dbf

/tpdata/9.2.0/oradata/sfssgbk/odm01.dbf

/tpdata/9.2.0/oradata/sfssgbk/tools01.dbf

/tpdata/9.2.0/oradata/sfssgbk/users01.dbf

/tpdata/9.2.0/oradata/sfssgbk/xdb01.dbf

SQL> select MEMBER from v$logfile;

MEMBER

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

/tpdata/9.2.0/oradata/sfssgbk/redo03.log

/tpdata/9.2.0/oradata/sfssgbk/redo02.log

/tpdata/9.2.0/oradata/sfssgbk/redo01.log

SQL> select NAME from v$tempfile;

NAME

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

/tpdata/9.2.0/oradata/sfssgbk/temp01.dbf

SQL> shutdown immediate;

ftp 上面选出的所有文件到从库上相应的目录,为了简单起见,我选择用tar,然后ftp过去

在主库上

cd /tpdata

tar cvzf sfssgbk.tgz /tpdata/9.2.0/oradata/sfssgbk /tpdata/9.2.0/admin/sfssgbk

ftp sfssgbk.tgz 到从库 /tpdata目录

在从库上

cd /tpdata

tar xvzf sfssgbk.tgz

11.打开主库数据库,修改为归档方式(oracle9i用户操作)

mkdir -p /tpdata/9.2.0/oradata/sfssgbk/archive

sqlplus /nolog

SQL> conn / as sysdba;

Connected.

SQL> startup mount;

ORACLE instance started.

Total System Global Area 235999352 bytes

Fixed Size 450680 bytes

Variable Size 201326592 bytes

Database Buffers 33554432 bytes

Redo Buffers 667648 bytes

Database mounted.

SQL> archive log list;

Database log mode No Archive Mode

Automatic archival Disabled

Archive destination /tpsys/app/oracle/product/9.2.0/dbs/arch

Oldest online log sequence 0

Current log sequence 1

SQL> alter database archivelog;

Database altered.

SQL> archive log start;

Statement processed.

SQL> archive log list;

Database log mode Archive Mode

Automatic archival Enabled

Archive destination /tpsys/app/oracle/product/9.2.0/dbs/arch

Oldest online log sequence 0

Next log sequence to archive 1

Current log sequence 1

SQL> alter database open;

Database altered.

SQL> alter system set LOG_ARCHIVE_DEST_1='LOCATION=/tpdata/9.2.0/oradata/sfssgbk/archive';

System altered.

SQL> alter system set log_archive_format='%t_%s.dbf' scope=spfile;

System altered.

SQL> alter system set log_archive_start=true scope=spfile;

System altered.

SQL> shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> startup

ORACLE instance started.

Total System Global Area 235999352 bytes

Fixed Size 450680 bytes

Variable Size 201326592 bytes

Database Buffers 33554432 bytes

Redo Buffers 667648 bytes

Database mounted.

Database opened.

SQL> archive log list;

Database log mode Archive Mode

Automatic archival Enabled

Archive destination /tpdata/9.2.0/oradata/sfssgbk/archive

Oldest online log sequence 0

Next log sequence to archive 1

Current log sequence 1

12.在主库上制作从库control file(oracle9i用户操作)

sqlplus /nolog

SQL> conn / as sysdba;

Connected.

SQL> ALTER DATABASE CREATE STANDBY CONTROLFILE AS '/tpdata/standby.ctl';

Database altered.

ftp 主库/tpdata/standby.ctl 到从库 /tpdata/9.2.0/oradata/sfssgbk目录

13.配置主库listener.oratnsnames.ora文件(oracle9i用户操作)

vi /tpsys/app/oracle/product/9.2.0/network/admin/listener.ora ,修改后为下

LISTENER =

(DESCRIPTION_LIST =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 10.2.33.100)(PORT = 1521))

)

)

)

SID_LIST_LISTENER =

(SID_LIST =

(SID_DESC =

(GLOBAL_DBNAME = sfssgbk)

(ORACLE_HOME = /tpsys/app/oracle/product/9.2.0)

(SID_NAME = sfssgbk)

)

)

vi /tpsys/app/oracle/product/9.2.0/network/admin/tnsnames.ora

修改后为下

PRIMARY =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 10.2.33.100)(PORT = 1521))

)

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = sfssgbk)

)

)

STANDBY =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.1.78)(PORT = 1521))

)

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = sfssgbk)

)

)

14.配置从库listener.oratnsnames.ora文件(oracle9i用户操作)

vi /tpsys/app/oracle/product/9.2.0/network/admin/listener.ora ,修改后为下

LISTENER =

(DESCRIPTION_LIST =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.1.78)(PORT = 1521))

)

)

)

SID_LIST_LISTENER =

(SID_LIST =

(SID_DESC =

(GLOBAL_DBNAME = sfssgbk)

(ORACLE_HOME = /tpsys/app/oracle/product/9.2.0)

(SID_NAME = sfssgbk)

)

)

vi /tpsys/app/oracle/product/9.2.0/network/admin/tnsnames.ora ,修改后为下

PRIMARY =

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

转载于:http://blog.itpub.net/3618/viewspace-485515/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值