oracle11g dataguard 完全手册

oracle11g dataguard 完全手册

一、前言:

网络上关于dataguard的配置文章很多,但是很多打着oracle11g的文章实际都是只能在9 10 上运行,比如FAL_CLIENT在11g中已经废弃,但是现在网络上的文章都是没有标注这一点。而且对于具体含义语焉不详对于新手只能知其然而不知其所以然。这篇文章我就想让像我这样的人对于dataguard配置不仅仅知道怎么配置,还要知道为什么需要这样配置,这样的效果才是最好的。

这篇文章不仅仅是记录如何配置,还介绍了为什么是这样,以及注意要点,我希望这个文章可以作为进行dataguard配置的一个参考手册。 二、前提

1.主库是归档模式:

如果我们不清楚为什么是归档模式,那我们就应该也不会清楚dataguard是用来做什么的。透过很多修饰的官方语言,我们需要明确DG(dataguard简称,后同)实际上的作用就是用来高可用。而实现原理就是从主库获取数据到从库,在主库发生异常的时候,从库接管主库,完成身份的变化。可以一个主库,最多9个从库。同时分为逻辑standby和物理standby这里我们讨论的是物理standby.

一旦创建并配置成 standby 后,dg 负责传输 primary数据库 redo data 到 standby 数据库,standby 数据库通过应用接收到的 redo data 保持与 primary 数据库的事务一致。

这下清楚了吧,需要保证主从库一致,需要传输archive log和redo log到从库,如果不是归档模式无法保证主从库的数据一致。

2.从库只需要安装数据库软件,数据从主库传输后完成。

3.很多人说11g有了active dataguard(ADG),逻辑standby 实际上已经没什么用处了。 4.主从库硬件最好一致。oracle数据库版本需要一致。 (1)内存检查项:

# grep MemTotal /proc/meminfo

交换分区检查项:如果内存在1-2G,swap是1.5倍;2-16G,1倍;超过16G,设置为16G即可。

# grep SwapTotal /proc/meminfo 查看共享内存大小: # df -h /dev/shm

(2)查看系统处理器架构,与oracle安装包一致 # uname -m

(3)空间空间 /tmp必须大于1G # df -h /tmp

5.配置环境数据库用户必须有sysdba权限

6.后面的环境:主库 192.168.215.101 数据库实例名:orcl db_unique_name:orcl 从库 192.168.215.102 数据库实例名:orcl db_unique_name:orcldg 三、配置

1.判断DG是否已经安装:

select * from v$option where parameter = 'Oracle Data Guard'; 如果是true表示已经安装可以配置,否则需要安装相应组件。 2.设置主库为强制记录日志。

默认情况下数据库操作会记录redo log,但是在一些特定的情况下可以使用nologging来不生成redo信息

(1)表的批量INSERT(通过/*+APPEND */提示使用“直接路径插入“。或采用SQL*Loader直接路径加载)。表数据不生成redo,但是

所有索引修改会生成redo,但是所有索引修改会生成redo(尽管表不生成日志,但这个表上的索引却会生成redo!)。

(2)LOB操作(对大对象的更新不必生成日志)。 (3)通过CREATE TABLE AS SELECT创建表 (4)各种ALTER TABLE操作,如MOVE和SPLIT

(5)在一些表迁移和表空间迁移中,可以使用alter table a nologging;或者alter tablespace snk nologging;在操作完成后再修改回logging状态。

这里需要多说一句,如果你使用nologging导入大批量数据,以后对这些数据的修改会在redo或者archive log中,但是基准的数据是没有的,所以一旦介质损坏是无法完全恢复的,必须在使用nologging完成切换回logging后,做一次全备或者0级备份。 (1)强制记录日志:sql>alter database force logging;

(2)检查状态(YEs为强制):sql>select name,force_logging from v$database;

(3)如果需要在主库添加或者删除数据文件时,这些文件也会在备份添加或删除,使用如下: sql>alter system set standy_file_management='AUTO'; 默认此参数是manual手工方式 sql>show parameter standby

3.创建standby log files(备用日志文件)

从库使用standby log files来保存从主库接收到的重做日志。既然主要是从库在使用,那为什么需要在主库上也建立

standby log files?原因主要由两个:一是主库可能转换为备库,而备库是需要有standby log files的二是如果主库

建立了standby log files那备库会自动建立。 建立standby如要注意以下几点:

<1>standby log files的大小和redo log files一样。

查询redo log files文件大小(默认50M,3个):select group#,bytes/1024/1024 as M from v$log

<2>一般而言, standbyredo 日志文件组数要比 primary 数据库的 online redo 日志文件组数至少多一个。

推荐 standbyredo 日志组数量基于 primary 数据库的线程数(这里的线程数可以理解为 rac 结构中的 rac 节点数)。

有一个推荐的公式可以做参考:(每线程的日志组数+1)*最大线程数 假设现在节点是1个,则=(3+1)*1=4 如果是双节点 则=(3+1)*2=8 这里我们创建4个standby logfile:

另:不建议组号group#紧挨着redo,因为后续redo有可能调整,这里我们从建立从11到

14的standby logfile # cd $ORACLE_BASE/oradata/orcl/ # mkdir dg 1 # chown oracle:dba dg 2 sql> alter database add standby 3 logfile group 11 '/opt/oracle/oradata/orcl/dg/standby11.log' 4 sql> alter database add standby 5 logfile group 12 '/opt/oracle/oradata/orcl/dg/standby12.log' 6 sql> alter database add standby 7 logfile group 13 '/opt/oracle/oradata/orcl/dg/standby13.log' 8 sql> alter database add standby logfile group 14 '/opt/oracle/oradata/orcl/dg/standby14.log' 4.密码文件和控制文件的创建传输 (1)一般数据库默认就有密码文件,存放在$ORACLE_HOME/dbs/orapwSID 这里为orapworcl 如果没有sql>orapwd file=$ORACLE_HOME/dbs/orapworcl password=oracle (2)检查REMOTE_LOGIN_PASSWORDFILE值是否为 EXCLUSIVE sql>show parameter REMOTE_LOGIN_PASSWORDFILE 如果值不是EXCLUSIVE,则:alter system set remote_login_passwordfile=exclusive scope=spfile; (3)密码文件需要scp到从库 # scp orapworcl oracle@192.168.215.102:/opt/oracle/11.2/dbs 提示输入yes (4)控制文件: size 50M; size 50M; size 50M; size 50M; 11g的控制文件一共两份,内容一样,一份在$ORACLE_BASE/oradata/orcl/control01.ctl 一份在/opt/oracle/flash_recovery_area/orcl/control02.ctl 生成standby控制文件: 1 sql>shutdown immediate 2 sql>startup mount 3 sql>alter database create standby controlfile as '/tmp/standby_control01.ctl';4 sql>startup open; 然后在备库建立对应的目录,并授权 mkdir orcl--- chown oracle:oinstall(或dba) orcl scp control01.ctl oracle@192.168.215.102:/opt/oracle/oradata/orcl scp control02.ctl oracle@192.168.215.102:/opt/oracle/flash_recovery_area/orcl/

5.db_name和db_unique_name

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4