linux下Oracle Dataguard的安装和管理

DataGuard是一种数据库级别的HA方案,最主要功能是冗灾、数据保护、故障恢复等。DataGuard是生产数据库的”事务一致性copy”,创建时,使用生产库的物理copy.创建完成后,备库会通过生产库传输过来的归档日志(或重做条目)自动维护备用数据库。将重做数据应用到备用库。
  DataGuard分为”物理standby”和”逻辑standby”
物理standby:主备库之间物理结构,逻辑结构保护一致。通常情况下备用库通过主库传输过来的归档日志做恢复。基于”块对块”方式。与主数据库相同。物理standby等同于生产库。物理standby能以read only方式打开(或者在flashback数据库下以”读写方式打开”)。物理standby一旦以”读写”方式打开,备用库将不会从主数据库接受重做数据。只有当备库flashback到过去的点,当备用库flashback到”读写”打开时间点前的状态时,DataGuard会自动同步备库与主库。才能回复standby角色。
逻辑standby:只保证逻辑结构与主库一致。备用库要处于打开状态,通过从主库归档日志文件中提取出来的SQL语句做恢复。创建时,与物理standby一样,使用主库copy. 逻辑备库通过执行SQL语句来更新。DataGuard转换日志文件中的数据为SQL语句,然后在逻辑standby上执行SQL语句.因为逻辑standby是通过SQL语句来实现数据同步,那么在同步期间其必须保持打开状态。
1.重做传输服务,控制重做数据从生产机传输到一个或多个备用库。
2.日志应用服务
2.1 生产库上通过ARCH进程生成归档日志文件,然后传输到备用库,备用库再从归档日志中恢复数据
2.2 实时模式时,生产库上的操作通过LGWR进程实时反映在备用库的备用日志文件中,备用库从备用日志文件实时恢复数据。
3.角色切换,主备库用户角色的切换。
三种保护模式
1.最大保护,这种模式主备库之间数据是同步的。即主库提交的同时,备库会做相应的恢复。最大限度的保证了数据完整性。不允许数据的丢失。如果主备库之间网络,或者备库出现问题会直接影响主库操作。导致主库当机。
2.最大可用性,这种模式和”最大保护”基本上差不多。正常情况下,主备库之间是同步的。当网络或者备库出现问题时,不会影响到主库的当机,主库会自动转换库”最大性能”模式,等待备库可用时,将归档传输到备库做恢复。可以把这种模式理解为”最大保护”和”最大性能”两种模式的中间体。
3.最大性能,这种模式保证主库性能最大化,主备库之间数据是异步传输的。即,主备日志归档以后才会传输到备用库,在备库上使用归档日志文件做恢复操作。
Dataguard的安装还是很容易的,不像rac那么复杂。下面就开始dataguard的安装和配置
?? 第一步:首先要安装两个linux的操作系统,这里使用RedHat Linux,使用虚拟机操作
?? 第二步:安装oracle。没有什么特别的,都是分两步,安装和建库。注意,只是在第一个节点建库,而在第二个节点不建库,只是安装软件
第三步:dataguard的配置
??? 环境???????????
??? host??? databasetype??????????????? db_unique_name???
??? primary????? primary??????????????????????? primary????????????????????
??? standby??? physical standby?????????? standby
1:配置主库
??? sql>alter database force logging;
2:配置主库的参数文件
??? sql>creata pfile=’/u01/inittest.ora’ from spfile;
??? db_unique_name=primary
??? log_archive_config=’DG_CONFIG=(primary,standby)’
??? log_archive_dest_1=’Location=/u01/arch
??????????????? VALID_FOR=(ALL_LOGFILES,ALL_ROLES)
??????????????? DB_UNIQUE_NAME=primary’
??? log_archive_dest_2=’SERVICE=standby
??????????????? VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
??????????????? DB_UNIQUE_NAME=standby’
??? log_archive_dest_state_1=enable
??? log_archive_dest_state_2=enable
??? fal_server=standby
??? fal_client=primary
3:create standby controlfile
??? sql>alter database create standby controlfile as ‘/u01/standby/standby.ctl’
4:create standby pfile from spfile
??? sql>create pfile=’/u01/standby/inittest.ora’ from spfile;
编辑备库的参数文件
??? 配置备库的参数文件
??? control_files=
??? db_unique_name=standby
??? service_names=standby
??? log_archive_config=’DG_CONFIG=(primary,standby)’
??? log_archive_dest_1=’LOCATION=/u01/arch’
?????????????? VALIDLL_FOR=(ALL_LOGFILES,ALL_ROLES)
?????????????? DB_UNIQUE_NAME=standby’
??? log_archive_dest_2=’SERVICE=Orlando_hasun1
??????????????? VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
??????????????? DB_UNIQUE_NAME=primary’
??? log_archive_dest_state_1=enable
??? log_archive_dest_state_2=enable;
? 参数文件的配置很重要,关系dataguard是否能成功的配置。一定要仔细啊
5:将主库的数据文件传到备库
6:创建密码文件,直接拷贝主库的口令文件好像不行,重新创建了一下就好
7:配置监听
??? 主库和备库运行监听器
??? 主库指向备库net别名
??? 备库指向主库net别名
我使用的静态注册
8:启动备库
?? sql>startup pfile=’/u01/db_1/dbs/inittest.ora’ mount(如果是9i,需要使用alter database mount standby database)
9:验证datagard的配置是否正确
?? 在主库上:sql>alter system switch logfile;(多切换几次)
?? 创建个表,插入几行数据,再切换
在备库上:SELECT SEQUENCE#,APPLIED FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;
(检查日志是否应用)
SELECT PROCESS, CLIENT_PROCESS, SEQUENCE#, STATUS FROM V$MANAGED_STANDBY;
(监控恢复过程,以及日志文件传送了多少)
SELECT ARCHIVED_THREAD#, ARCHIVED_SEQ#, APPLIED_THREAD#, APPLIED_SEQ# FROM V$ARCHIVE_DEST_STATUS;
(确定重做应用过程)
如果日志可以传过来的化,就说明一切顺利,dataguard可以正常运行了

ORACLE-DG部署管理手册.docx

“linux下Oracle Dataguard的安装和管理”有1条评论

commenter

2012-02-23增加《ORACLE-DG部署管理手册》下载