Oracle Data Guard(数据卫士)环境搭建项目 .doc_第1页
Oracle Data Guard(数据卫士)环境搭建项目 .doc_第2页
Oracle Data Guard(数据卫士)环境搭建项目 .doc_第3页
Oracle Data Guard(数据卫士)环境搭建项目 .doc_第4页
Oracle Data Guard(数据卫士)环境搭建项目 .doc_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

沈阳工程学院信息学院工程项目实训论文实习报告 *学院实 习 报 告(课程置换:*实训)姓 名: 学 号: 专 业: 班 级: 实习单位指导教师: 校内指导教师: 实习项目: Oracle Data Guard(数据卫士)环境搭建项目 实习单位名称: 实习起止时间: 自 年 月 日 至 年 月 日第2页目 录第一部分 实习报告11.项目描述11.1 DG的整体配置11.2 DG的相关服务11.3 DG的数据保护模式21.4 DG当中涉及的日志分类32.项目实习环境介绍32.1 硬件环境32.2 软件环境32.3 基础要求33.搭建Data Guard33.1将数据库改为强制日志模式33.2创建密码文件43.3创建standby redolog日志组43.4修改主库的pfile参数文件63.5创建spfile73.6对主库进行RMAN全库备份83.7修改监听文件93.8在备库上恢复主库之前的准备工作123.9利用RMAN在备库上恢复主库133.10开启备库133.11备库启动日志应用134.Oracle Data Guard 主备切换154.1 switchover154.2 failover16第二部分 实习总结18第三部分 实习日志19沈阳工程学院信息学院工程项目实训论文实习报告 第一部分 实习报告1.项目描述1.1 DG的整体配置DG是一个整体的配置环境,包含一个生产库和一个或者多个备库;在整个DG环境中,众多应用访问的生产库,也称之为primary database即主库;primary database可以个单实例的数据库,也可以是一个RAC环境;备库是一种主库事务级别的一致性副本;备库的类型有物理备库、逻辑备库和快照备库。图1.1 DG拓扑图1.2 DG的相关服务1.2.1 Redo Transport Services(日志传输服务)负责自动将主库的redo data传输到备库上去的服务;职责:A.传输日志到备库;B.管理有可能发生的日志gap;C.自动获取missing的redo数据;1.2.2 Apply Services(应用服务)物理备库采用的是redo apply;图1.2 物理备库拓扑图逻辑备库采用的是sql apply即将日志转化成SQL;图1.3 逻辑备库拓扑图1.2.3 Role Transitions(角色转换服务)Switchover:转换primary数据库与standby数据库,switchover可以确保不会丢失数据。Failover:当primary 数据库出现故障并且不能被及时恢复时,会调用failover 将一个standby 数据库转换为新的primary 数据库。在最大保护模式或最高可用性模式下,failover 可以保证不会丢失数据。1.3 DG的数据保护模式(1)MAXIMIZE PERFORMANCE(最大性能模式):这种模式应当可以说是从8i继承过来的备用服务器模式,异步传送,无数据同步检查,可能丢失数据,但是能获得主节点的最大性能,在不影响主库性能的情况下,提供最高级别的数据保护模式。(2)MAXIMIZE AVAILABILITY(最大可用模式): 无数据丢失模式,允许数据分歧,允许异步传送。正常情况下运行在最大保护模式,在主节点与备用节点的网络断开或连接不正常时,自动切换到最大性能模式,主节点的操作还是可以继续的。在网络不好的情况下有较大的性能影响。(3)MAXIMIZE PROTECTION(最大保护模式):最大数据保护与无数据分歧,LGWR将同时传送到备用节点,在主节点事务确认之前,备用节点也必须完全收到日志数据。如果网络不好,引起LGWR不能传送数据,将引起严重的性能问题,导致主节点DOWN机。最大保护最高可用最高性能REDO 写进程LGWR LGWR LGWR 或 ARCH网络传输模式SYNC SYNC LGWR 进程时 SYNC 或 ASYNC , ARCH 进程时 SYNC磁盘写操作AFFIRMAFFIRMAFFIRM 或 NOAFFIRM是否需要standby redologs YES YES 可没有但推荐有1.4 DG当中涉及的日志分类online redo log: -在线重做日志(主库生成在线重做日志,需要传递给备库)archived log: -归档日志(在线重做日志的归档)standby redo log:-备库的重做日志(和日志传输模式与DG保护模式有关)2.项目实习环境介绍2.1 硬件环境 服务器:惠普ProLiant DL160 Gen9(783366-AA5)-1U-机架式服务器 CPU:INTEL Xeon E5-2603 v3 AMD:4核心CPU或以上 内存:16GB 系统:WIN7 64位 硬盘:内置固态硬盘空间200G2.2 软件环境 生产环境均采用64位系统和数据库软件; 采用vmware workstation 10虚拟机软件作为安装平台; 虚拟机系统:Oracle Enterpridbse Linux 6(64位); 数据库版本:Oracle11g_11204_x86_64 (64位);2.3 基础要求 2.3.1 基本配置:系统要求最低配置内存2G,swap分区4G,根分区40G,装好系统后先配置好yum,IP地址,/etc/sysconfig/network文件中的主机名,以及/etc/hosts文件中的IP地址和主机名的对应关系。主库IP:53主库主机名:pridb 备库IP:54备库主机名:stddb3.搭建Data Guard3.1将数据库改为强制日志模式 3.1.1 查看当前是否强制日志模式:SYS select name,log_mode,force_logging from v$database;SYS alter database force logging;Database altered.SYS select name,log_mode,force_logging from v$database;3.2创建密码文件将主库的密码文件直接copy到备库,重命名后使用,备库的密码文件需要跟主库一致,否则导致日志传输不到备库。oracle dbs$ scp orapwpridb 54:$ORACLE_HOME/dbs/orapwstddb 3.3创建standby redolog日志组原则:A.standby redo log的文件大小与primary 数据库online redo log 文件大小相同B.standby redo log日志文件组的个数依照下面的原则进行计算:standby redo log组数公式=(每个instance日志组个数+1)*instance个数3.3.1 查看主库当前线程与日志组的对应关系及日志组的大小:SYS select thread#,group#,bytes/1024/1024,status from v$log;如上图所示,现在的环境有三组redolog,每个日志组的大小都是100M,所以Standby redo log组数=(4+1)*1= 5所以至少需要创建5组Standby redo log,大小均为100M3.3.2 查看主库当前有哪些日志组及其成员:SYS col member for a50SYS select group#,member from v$logfile;GROUP# MEMBER- -4 /u01/app/oracle/oradata/pridb/redo04.log3 /u01/app/oracle/oradata/pridb/redo03.log2 /u01/app/oracle/oradata/pridb/redo02.log1 /u01/app/oracle/oradata/pridb/redo01.log3.3.3 手动创建standby log日志组所需的目录:由于已经存在group1-4,所以group号只能从5开始SYS alter database add standby logfile group 5 2 /u01/app/oracle/oradata/standbylog/stddb_redo05.log 3 size 100m;Database altered.SYS alter database add standby logfile group 6 2 /u01/app/oracle/oradata/standbylog/stddb_redo06.log 3 size 100m;Database altered.SYS alter database add standby logfile group 7 2 /u01/app/oracle/oradata/standbylog/stddb_redo07.log 3 size 100m;Database altered.SYS alter database add standby logfile group 8 2 /u01/app/oracle/oradata/standbylog/stddb_redo08.log 3 size 100m;Database altered.SYS alter database add standby logfile group 9 2 /u01/app/oracle/oradata/standbylog/stddb_redo09.log 3 size 100m;Database altered.3.3.4 查看standby 日志组的信息:SYS select group#,sequence#,status, bytes/1024/1024 from v$standby_log;3.3.5 查看当前有哪些日志组及其成员:SYS set pagesize 100 SYS col member for a60SYS select group#,member from v$logfile order by group#; GROUP# MEMBER - 1 /u01/app/oracle/oradata/pridb/redo01.log 2 /u01/app/oracle/oradata/pridb/redo02.log 3 /u01/app/oracle/oradata/pridb/redo03.log 4 /u01/app/oracle/oradata/pridb/redo04.log 5 /u01/app/oracle/oradata/standbylog/stddb_redo05.log 6 /u01/app/oracle/oradata/standbylog/stddb_redo06.log 7 /u01/app/oracle/oradata/standbylog/stddb_redo07.log 8 /u01/app/oracle/oradata/standbylog/stddb_redo08.log 9 /u01/app/oracle/oradata/standbylog/stddb_redo09.log3.4修改主库的pfile参数文件3.4.1 查看spfile的路径:SYS show parameter spfile;3.4.2 用spfile创建一个pfile,用于修改:SYS create pfile from spfile; 3.4.3 修改主库的pfile:oracle $ cd $ORACLE_HOME/dbsoracle dbs$ vim initpridb.orapridb._db_cache_size=125829120pridb._java_pool_size=4194304pridb._large_pool_size=4194304pridb._oracle_base=/u01/app/oracle#ORACLE_BASE set from environmentpridb._pga_aggregate_target=146800640pridb._sga_target=272629760pridb._shared_io_pool_size=0pridb._shared_pool_size=125829120pridb._streams_pool_size=4194304*.audit_file_dest=/u01/app/oracle/admin/pridb/adump*.audit_trail=db*.compatible=.0*.control_files=/u01/app/oracle/oradata/pridb/control01.ctl,/u01/app/oracle/fast_recovery_area/pridb/control02.ctl*.db_block_size=8192*.db_domain=*.db_name=pridb*.db_recovery_file_dest=/u01/app/oracle/fast_recovery_area*.db_recovery_file_dest_size=4227858432*.diagnostic_dest=/u01/app/oracle*.dispatchers=(PROTOCOL=TCP) (SERVICE=pridbXDB)*.memory_target=419430400*.open_cursors=300*.processes=150*.remote_login_passwordfile=EXCLUSIVE*.undo_tablespace=UNDOTBS1手动添加如下行:*.db_unique_name=pridb*.log_archive_config=dg_config=(pridb,stddb)*.log_archive_dest_1=location=/u01/app/arch/pridb valid_for=(all_logfiles,all_roles) db_unique_name=pridb*.log_archive_dest_2=service=stddb valid_for=(online_logfiles,primary_role) db_unique_name=stddb*.log_archive_dest_state_1=enable*.log_archive_dest_state_2=enable*.log_archive_max_processes=4*.fal_server=stddb*.fal_client=pridb*.db_file_name_convert=/u01/app/oracle/oradata/stddb,/u01/app/oracle/oradata/pridb*.log_file_name_convert=/u01/app/oracle/oradata/stddb,/u01/app/oracle/oradata/pridb*.standby_file_management=auto修改完毕,保存退出3.4.4 手工创建/u01/app/arch/pridb目录:oracle dbs$ mkdir /u01/app/arch/pridb -pvmkdir: created directory /u01/app/archmkdir: created directory /u01/app/arch/pridb3.5创建spfile3.5.1 一致性关闭数据库:SYS shutdown immediate;Database closed.Database dismounted.ORACLE instance shut down.3.5.2 生成动态参数文件spfile:SYS create spfile from pfile;3.5.3 把数据库改为归档模式:首先需要把数据库启动到mount状态SYS startup mount;ORACLE instance started.Database mounted.SYS alter database archivelog;启用归档模式Database altered.SYS alter database open;OPEN数据库Database altered.SYS archive log list;查看是否启用归档模式如上图,归档路径已经改为/u01/app/arch/pridb,证明对pfile的修改已生效3.5.4 查看当前数据库是否使用spfile启动:SYS show parameter spfile;如上图,若能看到spfile的路径,则证明数据库是使用spfile启动的,若没有值,则说明是用pfile启动的。3.6对主库进行RMAN全库备份3.6.1 创建备份所需的目录:oracle # mkdir /dgback3.6.2 进入RMAN进行全库备份:oracle # rman target /RMAN configure channel device type disk format /home/oracle/dgback/%d_%I_%s_%p.bkp;RMAN backup as compressed backupset database include current controlfile for standby plus archivelog;Starting backup at 05-NOV-16using target database control file instead of recovery catalogallocated channel: ORA_DISK_1channel ORA_DISK_1: SID=41 device type=DISKchannel ORA_DISK_1: starting full datafile backup setchannel ORA_DISK_1: specifying datafile(s) in backup setinput datafile file number=00001 name=/u01/app/oracle/oradata/pridb/system01.dbfinput datafile file number=00002 name=/u01/app/oracle/oradata/pridb/sysaux01.dbfinput datafile file number=00005 name=/u01/app/oracle/oradata/pridb/example01.dbfinput datafile file number=00003 name=/u01/app/oracle/oradata/pridb/undotbs01.dbfinput datafile file number=00004 name=/u01/app/oracle/oradata/pridb/users01.dbfchannel ORA_DISK_1: starting piece 1 at 05-NOV-16channel ORA_DISK_1: finished piece 1 at 05-NOV-16piece handle=/rman_backup/Full_20161105_01ou2791_1_1.bak tag=TAG20161105T143721 comment=NONEchannel ORA_DISK_1: backup set complete, elapsed time: 00:00:45channel ORA_DISK_1: starting full datafile backup setchannel ORA_DISK_1: specifying datafile(s) in backup setincluding current control file in backup setincluding current SPFILE in backup setchannel ORA_DISK_1: starting piece 1 at 05-NOV-16channel ORA_DISK_1: finished piece 1 at 05-NOV-16piece handle=/rman_backup/Full_20161105_02ou27ae_1_1.bak tag=TAG20161105T143721 comment=NONEchannel ORA_DISK_1: backup set complete, elapsed time: 00:00:01Finished backup at 05-NOV-163.6.3 查看备份的归档日志:RMAN list archivelog all;3.6.4 查看备份文件RMAN list backup;3.7修改监听文件3.7.1 添加静态注册信息主库:oracle $ cd $ORACLE_HOME/network/adminoracle admin$ vim listener.ora 添加如下内容:SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = pridb) (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_home1) (SID_NAME = pridb) ) )主库修改后最终效果如下图:图3.1 主库配置静态注册信息备库:oracle $ cd $ORACLE_HOME/network/adminoracle admin$ vim listener.ora 添加如下内容:SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = stddb) (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_home1) (SID_NAME = stddb) ) (SID_DESC = (GLOBAL_DBNAME = pridb) (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_home1) (SID_NAME = pridb) ) )备库修改后最终效果如下图:图3.2 备库配置静态注册信息3.7.2 使新增加的监听生效:oracle admin$ lsnrctl reload3.7.3 确认新增加的静态监听有效:主库:oracle $ lsnrctl statusService pridb has 2 instance(s). Instance pridb, status UNKNOWN, has 1 handler(s) for this service. Instance pridb, status READY, has 1 handler(s) for this service.The command completed successfully备库:oraclestddb $ lsnrctl statusService pridb has 2 instance(s). Instance pridb, status UNKNOWN, has 1 handler(s) for this service. Instance pridb, status READY, has 1 handler(s) for this service.Service stddb has 2 instance(s). Instance stddb, status UNKNOWN, has 1 handler(s) for this service. Instance stddb, status BLOCKED, has 1 handler(s) for this service.The command completed successfully3.7.4 编辑本地服务名配置文件tnsnames.ora:oracle admin$ cd $ORACLE_HOME/network/adminoracle admin$ vim tnsnames.ora编辑结果如下图:图3.3 本地服务名配置配置完后,确保在任意一端上都能tnsping通对方:oracle admin$ tnsping stddboraclestddb admin$ tnsping pridb3.8在备库上恢复主库之前的准备工作3.8.1 备库修改pfile静态参数文件:oraclestddb dbs$ pwd/u01/app/oracle/product/11.2.0/db_1/dbsoraclestddb dbs$ vim initstddb.ora stddb._db_cache_size=125829120stddb._java_pool_size=4194304stddb._large_pool_size=4194304stddb._oracle_base=/u01/app/oracle#ORACLE_BASE set from environmentstddb._pga_aggregate_target=146800640stddb._sga_target=272629760stddb._shared_io_pool_size=0stddb._shared_pool_size=125829120stddb._streams_pool_size=4194304*.audit_file_dest=/u01/app/oracle/admin/stddb/adump*.audit_trail=db*.compatible=.0*.control_files=/u01/app/oracle/oradata/stddb/stddb_con.ctl*.db_block_size=8192*.db_domain=*.db_name=pridb*.db_recovery_file_dest=/u01/app/oracle/fast_recovery_area*.db_recovery_file_dest_size=4227858432*.diagnostic_dest=/u01/app/oracle*.dispatchers=(PROTOCOL=TCP) (SERVICE=stddbXDB)*.memory_target=419430400*.open_cursors=300*.processes=150*.remote_login_passwordfile=EXCLUSIVE*.undo_tablespace=UNDOTBS1下面几行是需要手动添加的:*.db_unique_name=stddb*.log_archive_config=dg_config=(pridb,stddb)*.log_archive_dest_1=location=/u01/app/arch/stddb valid_for=(all_logfiles,all_roles) db_unique_name=stddb*.log_archive_dest_2=service=pridb valid_for=(online_logfiles,primary_role) db_unique_name=pridb*.log_archive_dest_state_1=enable*.log_archive_dest_state_2=enable*.log_archive_max_processes=4*.fal_server=pridb*.db_file_name_convert=/u01/app/oracle/oradata/pridb,/u01/app/oracle/oradata/stddb*.log_file_name_convert=/u01/app/oracle/oradata/pridb,/u01/app/oracle/oradata/stddb*.standby_file_management=auto3.8.2 在备库端手工创建所需的目录:mkdir /u01/app/oracle/admin/stddb/adumpmkdir /u01/app/oracle/diag/rdbms/stddb/stddb/tracemkdir /u01/app/arch/stddbmkdir /u01/app/oracle/oradata/stddbmkdir /u01/app/oracle/oradata/standbylog3.8.3 用修改后的pfile创建一个spfile,用于启动数据库:oraclestddb $ sqlplus / as sysdbaSYSstddb create spfile from pfile;将数据库启动到nomount状态:SYS startup nomount;3.9利用RMAN在备库上恢复主库oraclestddb $ rman target sys/oraclepridb auxiliary sys/oraclestddbconnected to target database: pridb (DBID=767417863)connected to auxiliary database: pridb (not mounted)通过此命令可以直接恢复数据文件,standby控制文件和standby日志组RMAN duplicate target database for standby from active database;恢复数据库结束3.10开启备库登陆并查看数据库当前状态:oraclestddb $ sqlplus / as sysdbaSYSstddb select status from v$instance;STATUS-MOUNTED(RMAN恢复完直接进入mount状态)3.11备库启动日志应用SYSstddb alter database recover managed standby database disconnect from session;Database altered.3.11.1 查看日志应用情况:SYSstddb set pagesize 100SYSstddb select sequence#,applied from v$archived_log order by 1;如上,如果发现有NO,说明该日志在主库上还没有归档,可以在主库上运行alter system switch logfile;命令来进行日志切换,再到备库查看日志应用情况;3.11.2 分别查看主库和备库的归档序列号是否一致:在主库手动切换一下日志:SYS alter system switch logfile;主库:SYS archive log list;备库:SYSstddb archive log list;结果完全一致,至此,DataGuard的搭建成功4.Oracle Data Guard 主备切换4.1 Switchover 一般SWITCHOVER切换都是计划中的切换,特点是在切换后,不会丢失任何的数据,而且这个过程是可逆的,整个DATA GUARD环境不会被破坏,原来DATA GUARD环境中的所有物理和逻辑STANDBY都可以继续工作。 在进行DATA GUARD的物理STANDBY切换前需要注意: 1)确认主库和从库间网络连接通畅; 2)确认没有活动的会话连接在数据库中; 3)primary数据库处于打开的状态,STANDBY数据库处于MOUNT状态;4)确保STANDBY数据库处于ARCHIVELOG模式; 5)如果设置了REDO应用的延迟,那么将这个设置去掉; 6)确保配置了主库和从库的初始化参数,使得切换完成后,DATA GUARD机制可以顺利的运行。 4.1.1主库:(1)查看主库switchover状态 SYS select name,database_role,switchover_status from v$database;NAME DATABASE_ROLE SWITCHOVER_STATUS- - -PRIDB PRIMARY TO STANDBY 附:A:switchover_status出现session active/not allowed 当出现session active的时候表示还有活动的session,则运行 Alter database commit to switchover to physical standby with session shutdown; 当出现not allowed时,说明切换标记还没收到,此时不能执行转换。 当主库备库状态都正常,并且没有进行主备切换的操作时,备库的switchover_status就是not allowed。当主库执行了切换成备库的操作后,备库的switchover_status才是to primary。 B:ora- 01153: an incompatible media recovery is active 运行下面代码 alter database recover managed standby database finish; 或者Alter database recover managed standby database finish force; alter database recover managed standby database disconnect from session; (2)切换成备库 SYS alter database commit to switchover to physical standby with session shutdown;或者SYS alter database commit to switchover to physical standby; Database altered. (3)启动到mount和应用日志状态 SYS shutdown immediate; SYS startup nomount; SYS alter database mount standby database; SYS alter database recover managed standby database disconnect from session; (4)查看数据库模式 SYS select name,database_role,switchover_status from v$database;NAME DATABASE_ROLE SWITCHOVER_STATUS- - -PRIDB PHYSICAL STANDBY TO PRIMARY此时主库已经切换为物理备库;4.1.2 备库: (1)查看switchover状态 SYSstddb select name,database_role,switchover_status from v$database;NAME DATABASE_ROLE SWITCHOVER_STATUS- - -PRIDB PHYSICAL STANDBY TO PRIMARY (2)切换成主库 SYSstddb alter database commit to switchover to primary;Database altered. SYSstddb shutdown immediate; SYSstddb startup; SYSstddb alter system switch logfile; (3)查看数据库模式 SYSstddb select name,database_role,switchover_status from v$database;NAME DATABASE_ROLE SWITCHOVER_STATUS- - -PRIDB PRIMARY TO STANDBY如上所示,物理备库已成功切换为主库 4.2 Failover FAILOVER切换一般是primary数据库发生故障后的切换,这种情况是STANDBY数据

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论