oracle11gdataguard完全手册.docx
《oracle11gdataguard完全手册.docx》由会员分享,可在线阅读,更多相关《oracle11gdataguard完全手册.docx(14页珍藏版)》请在冰豆网上搜索。
oracle11gdataguard完全手册
一、前言:
网络上关于dataguard的配置文章很多,但是很多打着oracle11g的文章实际都是只能在910上运行,比如FAL_CLIENT在11g中已经废弃,但是现在网络上的文章都是没有标注这一点。
而且对于具体含义语焉不详对于新手只能知其然而不知其所以然。
这篇文章我就想让像我这样的人对于dataguard配置不仅仅知道怎么配置,还要知道为什么需要这样配置,这样的效果才是最好的。
这篇文章不仅仅是记录如何配置,还介绍了为什么是这样,以及注意要点,我希望这个文章可以作为进行dataguard配置的一个参考手册。
二、前提
1.主库是归档模式:
如果我们不清楚为什么是归档模式,那我们就应该也不会清楚dataguard是用来做什么的。
透过很多修饰的官方语言,我们需要明确DG(dataguard简称,后同)实际上的作用就是用来高可用。
而实现原理就是从主库获取数据到从库,在主库发生异常的时候,从库接管主库,完成身份的变化。
可以一个主库,最多9个从库。
同时分为逻辑standby和物理standby这里我们讨论的是物理standby.
一旦创建并配置成standby后,dg负责传输primary数据库redodata到standby数据库,standby数据库通过应用接收到的redodata保持与primary数据库的事务一致。
这下清楚了吧,需要保证主从库一致,需要传输archivelog和redolog到从库,如果不是归档模式无法保证主从库的数据一致。
2.从库只需要安装数据库软件,数据从主库传输后完成。
3.很多人说11g有了activedataguard(ADG),逻辑standby实际上已经没什么用处了。
4.主从库硬件最好一致。
oracle数据库版本需要一致。
(1)内存检查项:
#grepMemTotal/proc/meminfo
交换分区检查项:
如果内存在1-2G,swap是1.5倍;2-16G,1倍;超过16G,设置为16G即可。
#grepSwapTotal/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*fromv$optionwhereparameter='OracleDataGuard';
如果是true表示已经安装可以配置,否则需要安装相应组件。
2.设置主库为强制记录日志。
默认情况下数据库操作会记录redolog,但是在一些特定的情况下可以使用nologging来不生成redo信息
(1)表的批量INSERT(通过/*+APPEND*/提示使用“直接路径插入“。
或采用SQL*Loader直接路径加载)。
表数据不生成redo,但是
所有索引修改会生成redo,但是所有索引修改会生成redo(尽管表不生成日志,但这个表上的索引却会生成redo!
)。
(2)LOB操作(对大对象的更新不必生成日志)。
(3)通过CREATETABLEASSELECT创建表
(4)各种ALTERTABLE操作,如MOVE和SPLIT
(5)在一些表迁移和表空间迁移中,可以使用altertableanologging;或者altertablespacesnknologging;在操作完成后再修改回logging状态。
这里需要多说一句,如果你使用nologging导入大批量数据,以后对这些数据的修改会在redo或者archivelog中,但是基准的数据是没有的,所以一旦介质损坏是无法完全恢复的,必须在使用nologging完成切换回logging后,做一次全备或者0级备份。
(1)强制记录日志:
sql>alterdatabaseforcelogging;
(2)检查状态(YEs为强制):
sql>selectname,force_loggingfromv$database;
(3)如果需要在主库添加或者删除数据文件时,这些文件也会在备份添加或删除,使用如下:
sql>altersystemsetstandy_file_management='AUTO';
默认此参数是manual手工方式sql>showparameterstandby
3.创建standbylogfiles(备用日志文件)
从库使用standbylogfiles来保存从主库接收到的重做日志。
既然主要是从库在使用,那为什么需要在主库上也建立
standbylogfiles?
原因主要由两个:
一是主库可能转换为备库,而备库是需要有standbylogfiles的二是如果主库
建立了standbylogfiles那备库会自动建立。
建立standby如要注意以下几点:
<1>standbylogfiles的大小和redologfiles一样。
查询redologfiles文件大小(默认50M,3个):
selectgroup#,bytes/1024/1024asMfromv$log
<2>一般而言,standbyredo日志文件组数要比primary数据库的onlineredo日志文件组数至少多一个。
推荐standbyredo日志组数量基于primary数据库的线程数(这里的线程数可以理解为rac结构中的rac
节点数)。
有一个推荐的公式可以做参考:
(每线程的日志组数+1)*最大线程数
假设现在节点是1个,则=(3+1)*1=4
如果是双节点 则=(3+1)*2=8
这里我们创建4个standbylogfile:
另:
不建议组号group#紧挨着redo,因为后续redo有可能调整,这里我们从建立从11到14的standbylogfile
1
2
3
4
5
6
7
8
#cd$ORACLE_BASE/oradata/orcl/
#mkdirdg
#chownoracle:
dbadg
sql> alter database add standbylogfile group 11 '/opt/oracle/oradata/orcl/dg/standby11.log' size 50M;
sql> alter database add standbylogfile group 12 '/opt/oracle/oradata/orcl/dg/standby12.log' size 50M;
sql> alter database add standbylogfile group 13 '/opt/oracle/oradata/orcl/dg/standby13.log' size 50M;
sql> alter database add standbylogfile group 14 '/opt/oracle/oradata/orcl/dg/standby14.log' size 50M;
4.密码文件和控制文件的创建传输
(1)一般数据库默认就有密码文件,存放在$ORACLE_HOME/dbs/orapwSID 这里为orapworcl
如果没有sql>orapwdfile=$ORACLE_HOME/dbs/orapworclpassword=oracle
(2)检查REMOTE_LOGIN_PASSWORDFILE值是否为EXCLUSIVE
sql>showparameterREMOTE_LOGIN_PASSWORDFILE
如果值不是EXCLUSIVE,则:
altersystemsetremote_login_passwordfile=exclusivescope=spfile;
(3)密码文件需要scp到从库
#scporapworcl oracle@192.168.215.102:
/opt/oracle/11.2/dbs 提示输入yes
(4)控制文件:
11g的控制文件一共两份,内容一样,一份在$ORACLE_BASE/oradata/orcl/control01.ctl
一份在/opt/oracle/flash_recovery_area/orcl/control02.ctl
生成standby控制文件:
1
2
3
4
sql>shutdownimmediate
sql>startupmount
sql>alter database create standbycontrolfile as '/tmp/standby_control01.ctl';
sql>startup open;
然后在备库建立对应的目录,并授权
mkdirorcl---chownoracle:
oinstall(或dba)orcl
scpcontrol01.ctloracle@192.168.215.102:
/opt/oracle/oradata/orcl
scpcontrol02.ctloracle@192.168.215.102:
/opt/oracle/flash_recovery_area/orcl/
5.db_name和db_unique_name
默认db_name和db_unique_name和实例名是一致的,这里是orcl
需要注意在DG中主库和从库的db_unique_name是不能一致的,需要区分开的。
这里我们设置主库的db_unique_name为orcl,从库为orcldg
sql>showparameterdb_unique_name
设置:
altersystemsetdb_unique_name=orclscope=spfile;
--注意虽然默认db_unique_name和db_name是一致的,但是需要显式设置,否则在spfile中没有此参数
6.闪回数据库:
强烈建议开启数据库闪回功能。
闪回允许你将数据库还原到以前的某一时间点。
当发生故障转移时,这个功能非常有用,
它能让你将老的主库闪回到故障前,然后将其转换为备库。
如果没有启用闪回功能,你就必须重建备库,意味着要再复制一次数据文件。
除了这个好处,闪回还能在某些情况下让你避免从备份恢复数据。
(1)快速恢复区(F