Oracle 10g dataguard配置规范文档北京深思天成科技有限公司Version:0.1编写人:张一Last Update:2012/11/08目录1.部署前的准备工作 (3)1.1操作系统平台的检查 (3)1.2网络的测试 (3)1.3.oracle的介质及相关补丁 (3)2.规划方案 (3)2.1 体系结构图dataguard日志传输分为三种 (3)2.1.1 归档日志传输体系结构图为 (4)2.1.2 在线日志异步传输体系结构图为 (4)2.1.3 在线日志同步传输体系结构图为 (5)2.2 Oracle dataguard 数据库的保护模式 (6)最大保护(maximum protection) (6)最大可用(maximum availability) (6)最大性能(maximum performance) (6)3.安装配置过程 (6)3.1 软件安装 (6)3.1.1 在备机上安装数据库软件 (6)3.1.2 升级oracle为10.2.4 ,保持主备库数据库小版本一致 (11)3.2 初始化配置 (14)3.2.1 修改主库为归档模式 (14)3.2.2 修改主库的参数 (15)3.2.3备库参数文件修改后为: (16)3.2.4 配置密码文件 (16)3.2.5 在oracle用户下创建相关目录 (17)3.2.6配置相关监听 (17)3.2.7 查看主库的监听并修改 (19)3.2.8 备份主库并将备份传到备库所在的主机 (19)3.2.9 创建控制文件并传送到备库参数control_files所指定的路径和命名 (20)3.2.10 启动数据库到mount状态 (21)3.2.11 在备库进行数据库的恢复 (21)3.2.12 备库启动介质恢复进程mrp (21)3.3 功能性配置 (21)4.检查项 (22)5. 测试方法 (23)6.日常维护命令 (24)6.1启动备库至mount状态,并启动mrp进程 (24)6.2 取消日志应用进程,并启动到open read only状态 (25)6.3 关闭备库 (25)6.4 备库归档日志gap问题的解决 (25)6.5 修改为最大保护模式 (26)6.6修改为最大可用模式 (27)6.7 dataguard切换临时表空间 (28)7.技术资料来源 (30)1.部署前的准备工作1.1操作系统平台的检查Dataguard要求主备库的操作系统一致,当然操作系统可以由小版本的差异.但是操作系统的位数还是要求一致的, 64位操作系统必须和64位的做主备.命令: oslevel –sbootinfo -y1.2网络的测试确保主机和备机的网络是相通的利用ping 命令来测试是否有丢包现象主库主机添加备库的信息vi /etc/hosts备库主机名备库的ip地址备库主机添加主库的信息Vi /etc/hosts主库的主机名主库的ip地址1.3.oracle的介质及相关补丁Oracle 10g for aix 的安装包Oracle 10g 10.2.4 for aix的补丁2.规划方案2.1 体系结构图dataguard日志传输分为三种第一种为归档日志传输第二种是在线日志异步传输第三种为在线日志同步传输2.1.1 归档日志传输体系结构图为这种方式最大的问题是:Primary Database只有在发生归档时才会发送日志到Standby Database,如果Primary Database 异常宕机,联机日志中的Redo内容会丢失,因此这种方式没法避免数据丢失的问题。
要想避免数据丢失,就必须使用LGWR,而使用LGWR又有SYNC和ASYNC两种方式。
缺省Primary Database使用的就是ARCH进程2.1.2 在线日志异步传输体系结构图为2.1.3 在线日志同步传输体系结构图为使用LGWR SYNC方式时,可以同时使用NET_TIMEOUT参数,这个参数单位是秒,代表如果多长时间内网络发送没有响应,LGWR进程就会抛出错误。
LOG_ARCHIVE_DEST_2=‘SERVICE=testbak LGWR SYNC NET_TIMEOUT=30’2.2 Oracle dataguard 数据库的保护模式最大保护(maximum protection)最大保护和最大可用模式需要用到备库的在线日志传输,当主库产生事务时,需要同时向主库的redoh和备库的standby log写日志,当由于故障日志写不到备库的standby log里时,主库会自动宕机,因而对网路要求非常高这种方式要求Standby Database必须配置Standby Redo log,而Primary Database必须使用LGWR、SYNC、AFFIRM方式归档到Standby Database。
最大可用(maximum availability)最大可用模式跟最大保护模式相类似,不同的是当由于故障日志写不到备库的standby log时,会自动转变为最大性能模式,等数据库恢复正常后再转变为为最大可用模式这种模式要求Standby Database必须配置Standby Redo log,而Primary Database必须配置为LGWR、SYNC、AFFIRM方式归档。
最大性能(maximum performance)最大性能模式在传输归档日志的情况下可以不需要备库的standby log, 即便是需要备库的standby log 也可以不同步这种模式通过LGWR ASYNC或者ARCH实现,Standby Database也不强求使用Standby Redo Log。
本文中主要针对dataguard 的单向传输和最大性能模式,也是生产中常用的3.安装配置过程3.1 软件安装创建数据库用户、组、环境变量就省过了3.1.1 在备机上安装数据库软件3.1.2 升级oracle为10.2.4 ,保持主备库数据库小版本一致3.2 初始化配置3.2.1 修改主库为归档模式3.2.2 修改主库的参数主库主要修改下文中的log_archive_dest_23.2.3备库参数文件修改后为:1.参数fal_client和fal_server 的作用自动裂隙检测Fal_client是指standby database 本身的所对应的监听的网络服务名Fal_server是指primary database在standby database 所体现的网络服务名2.log_file_name_convert和db_file_name_convert 参数的作用是主库到备库日志文件和数据文件的转换,可以指数据文件,也可以指目录, 最长可以为65536个字节.表现为‘主库文件或者目录’,’备库文件或者目录’, ‘主库文件或者目录’,’备库文件或者目录’….. 如果主库和备库所对应的目录和文件与备库的相通可以不用配置这两个参数3.standby_file_management这个参数必须为auto 模式,避免手工干预4.remote_login_passwordfile=’EXCLUSIVE’5.db_unique_name 为standby database的实例名6.db_name必须和primary database相同7.background_dump_dest,audit_file_dest,core_dump_dest,user_dump_dest,db_recovery_file_d est,control_files参数所以对应目录的存在,并且属主为oracle3.2.4 配置密码文件要求备库的密码文件的密码需要跟主库的密码文件密码完全一致密码文件默认在$ORACLE_HOME/dbs/命令为orapwd file=orapw$ORACLE_SID password=主库的密码3.2.5 在oracle用户下创建相关目录3.2.6配置相关监听备库的监听为:备库监听为:Listener.oraSID_NAME 数据库的实例名Global_dbname 是指数据库的service_names这个参数,即服务名,默认一般与数据库的实例名相通,可以动态修改ORACLE_HOME 即为环境变量的$ORACLE_HOME 注意最后没有’/’HOST 是指数据库所在的主机名或者主机的ip地址,如果是主机名需要/etc/hosts中添加Port 默认为1521端口,可以通过local_listener修改Tnsnames.oraTestbb,testdg只是网络服务名,可以随意修改Server 分为shared(共享模式)、delicated(专用模式),当然这两种模式在数据库中可以共存默认为delicatedService_name 是指oracle的参数service_names3.2.7 查看主库的监听并修改3.2.8 备份主库并将备份传到备库所在的主机注意: 如果不用带库的话,存放到备库的备份所在路径要跟主库备份路径相同10g中有rman catalog 可以自动注册,9i的话可以通过操作系统创建link来达到目的3.2.9 创建控制文件并传送到备库参数control_files所指定的路径和命名主库:Alter database create standby controlfile as ‘/home/oracle/control.ctl’;主库:主库传输standby 控制文件到备库control_files所指定的备库:3.2.10 启动数据库到mount状态3.2.11 在备库进行数据库的恢复rman target sys/qwe123@testbakrun{allocate channel c1 type disk;allocate channel c2 type disk;restore database;};3.2.12 备库启动介质恢复进程mrp3.3 功能性配置配置定期删除备库归档日志的脚本cd /home/oraclevi archived.sqlselect name from v\$archived_log where applied='YES' and deleted='NO';vi rmandelarch.shexport ORACLE_SID=testbakexport ORACLE_BASE=/u01/app/oracleexport ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1export NLS_LANG=AMERICAN_AMERICA.AL32UTF8exportPATH=$ORACLE_HOME/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:$PATH cd /home/oracle/cat /dev/null > archived.txtsqlplus sys/qwe123@testbak as sysdba <<EOFset echo offset pagesize 0set heading offset feedback offset lines 50spool /home/oracle/archived.txt@archived.sqlspool offEOFcat archived.txt |xargs rm -rf -rman target sys/qwe123@testbak <<EOFrun{crosscheck copy;delete noprompt expired copy;}EOFexit赋予rmandelarch.sh脚本执行的权限并加入到crontab 中Oracle 用户下chmod u+x rmandelarch.sh4.检查项备库:检查归档日志接收和日志应用的具体情况select process,status,sequence#,blocks,block# from v$managed_standby;PROCESS STATUS SEQUENCE# BLOCKS BLOCK# ------------------ ------------------------ ---------- ---------- ----------MRP0 WAIT_FOR_LOG 568 0 0 RFS RECEIVING 0 0 0 RFS ATTACHED 567 17963 17963注:如果sequenc#与主数据库归档日志号一致则Dataguard工作正常如果status状态为WAIT_FOR_GAP则dataguard与主数据库不同步,Dataguard工作不正常备库:检查备库备库应用日志跟接受日志的差距Select,dest_name,database_mode ,archived_thread#,archived_seq#,applied_thread#,applied_se q#,db_unique_name from v$archive_dest_status;主库:检查主库正在正在传送那个日志select process,status,thread#,sequence# ,group# from v$managed_standby;5. 测试方法无论oracle dataguard, stream replication还是advanced replication 只是复制ddl,dml的操作主库:备库:6.日常维护命令6.1启动备库至mount状态,并启动mrp进程6.2 取消日志应用进程,并启动到open read only状态6.3 关闭备库6.4 备库归档日志gap问题的解决备库在mount状态下执行从主库物理复制到原库的归档目录下然后进行注册alter database register physical logfile '/back/arch2/1_61_798203094.arc' 6.5 修改为最大保护模式备库操作:创建standby log注意备库中的standby log要比redo 至少要多一组主库操作修改log_archive_dest_2 为lgwr sync模式主库修改为最大保护模式备库:6.6修改为最大可用模式在上述最大保护模式下主库:主库修改为最大可用模式备库显示为:6.7 dataguard切换临时表空间Dataguard主库在切换临时表空间,会造成备库的临时表空间无临时文件主库操作:备库操作:7.技术资料来源Oracle 10g 官方文档Oracle 官方技术支持网站。