failoverRAC环境的物理STANDBY的 FAILOVER切换切换
- 格式:pdf
- 大小:140.82 KB
- 文档页数:9
F5负载均衡器双机切换触发机制及配置1 F5双机的切换触发机制1.1 F5双机的通信机制F5负载均衡器的主备机之间的心跳信息可以通过以下两种方式进行交互:●通过F5 failover 串口线交换心跳信息(电压信号不断地由一方送到另外一方)处于Standby的系统不断监控Failover上的电平,一旦发现电平降低,Standby Unit会立即变成Active,会发生切换(Failover)。
通过串口监控电平信号引起的切换可以在一秒中以内完成(大概200~300ms)。
四层交换机在系统启动的时候也会监控Failover线缆的电平以决定系统是处于Active状态还是Standby状态。
在串口Failover线缆上不传输任何数据信息。
●Failover线缆也可以不采用串口线,而直接采用网络线。
(但F5不建议这样做,因为网络层故障就可能会两台负载均衡器都处于Active状态)。
如果采用网络层监控实现Failover, Bigip将通过1027与1028端口交换心跳信息。
经验证明:两台F5之间一定要用failover cable连接起来,不连接failover cable而直接采用网络线连接在一起不可靠,而且造成了网上事故。
F5双机之间的数据信息是通过网络来完成的。
因此运行于HA方式的两台F5设备在网络层必须是相通的。
(可以用网线将两台F5设备直接相连起来,也可以通过其它的二层设备将两台F5设备相连,使F5设备在网络上可以连通对端的Failover IP地址)。
两台运行于HA方式的四层交换机之间通过网络层交互的信息主要包括:●用于配置同步的信息:通过手工执行config sync会引起Active到Standby系统的配置信息传输。
●用于在发生Failover时连接维持的信息:如果设置了Connection Mirroring,处于Active的四层交换机会将连接表每十秒中发送一次到Standby的系统。
注:对于在多CONTEXT的环境中,如何实现故障切换,MAC地址如何工作的理解。
希望大家能够在实验环境中反复测试验证。
1.多个Context模式下:不考虑PIX FAILOVER的情形(网络中只有一个PIX的情形):1.1数据的分类:1)首先考虑数据的分类,也就是数据包如何进入ASA,数据保进入到ASA主机内部的时候又如何进入到每个Context,此时需要考虑到数据的分类。
2)如果数据是发起的流量,根据接口、数据包的目的MAC地址和在交换机上配置的VLAN来隔离。
如果数据是返回的流量,根据接口,MAC地址,NAT的翻译后的地址来确定流入哪个Context,具体顺序应该是接口优先、MAC地址、NAT匹配。
关于如何区分,上课已经讲过。
1.2缺省情况下:每个CONTEXT的MAC地址的分配1)当配置多CONTEXT的时候,如果同时配置了failover,每个CONTEXT的接口会自动产生一个虚拟的MAC地址,但是如果不配置failover,那么,将会使用物理的接口地址作为mac地址。
2)当配置单Context的时候,缺省都是使用物理接口的MAC地址。
3)一个接口或者一个子接口可以分配给多个Context,但是只能在router模式下进行,桥接的模式下不可以。
道理上课已经讲过。
1.3如何修改缺省的mac地址:4)在单个context的模式下:手工在接口上指定,配置mac atuto,failover 命令指定。
5)在多个context的模式下:配置mac atuto,failover 命令指定。
1.4根据实际情况,当不考虑failover的时候,如果在router模式下,没有配置NAT,而且又将同一个接口(包含子接口)分配给不同的context的时候,必须要修改mac地址。
2.多个Context模式下:考虑PIX FAILOVER的情形2.1Faiover的切换顺序:、1)必须在两个设备上做好Failover的基本配置,具体包括:配置两个failover的主从单元;Failover的接口;ip地址;Failover LAN启用。
ASA Active/Acitve FO注:以下理论部分摘自百度文库:ASA状态化的FO配置,要在物理设备起用多模式,必须创建子防火墙。
在每个物理设备上配置两个Failover组(failover group),且最多配置两个。
Failover特性是Cisco安全产品高可用性的一个解决方案,目的是为了提供不间断的服务,当主设备down掉的时候,备用设备能够马上接管主设备的工作,进而保持通信的连通性;Failover配置要求两个进行Failover的设备通过专用的failover线缆和可选的Stateful Failover线缆互相连接;活动设备的接口被monitor,用于发现是否要进行Failover切换Failover分为failover和Stateful Failover,即故障切换和带状态的故障切换。
不带状态的failover在进行切换的时候,所有活动的连接信息都会丢失,所有Client都需要重新建立连接信息,那么这会导致流量的间断。
带状态的failover,主设备将配置信息拷贝给备用设备的同时,也会把自己的连接状态信息拷贝给备用设备,那么当主的设备down的时候,由于备用设备上保存有连接信息,因此Client不需要重新建立连接,那么也就不会导致流量的中断。
Failover link两个failover设备频繁的在failover link上进行通信,进而检测对等体的状态。
以下信息是通过failover link通信的信息:●设备状态(active or standby);●电源状态(只用于基于线缆的failover;)●Hello messages (keep-alives);●Network link 状态;●MAC地址交换;●配置的复制和同步;(Note :所有通过failover 和stateful failover线缆的信息都是以明文传送的,除非你使用failover key来对信息进行加密;)Stateful link在stateful link上,拷贝给备用设备的连接状态信息有:●NAT 转换表;●TCP连接状态;●UDP连接状态;●ARP表●2层转发表(运行在透明模式的时候)●HTTP连接状态信息(如果启用了HTTP复制)●ISAKMP和IPSec SA表●GTP PDP连接数据库以下信息不会拷贝给备用设备:●HTTP连接状态信息(除非启用了HTTP复制)●用户认证表(uauth)●路由表●DHCP服务器地址租期Failover包括LAN-Based Failover和Cable-Based Failover;对于PIX设备,只支持基于线缆(Cable-Based)的Failover;Failover linkLAN-Based Failover link 可以使用未使用的接口来作为failover link。
rac failover的实现方式RAC(Real Application Clusters)是一种实现高可用性和容错性的数据库架构。
在RAC中,Failover是指在主节点(Primary)发生故障或不可用时,自动将主节点的功能切换到备用节点(Standby)上,确保系统的持续运行。
本文将介绍RAC Failover的实现方式及其原理。
一、故障检测与切换机制RAC Failover的实现依赖于故障检测与切换机制。
当主节点发生故障时,备用节点会检测到主节点的不可用性,并触发切换操作。
故障检测可以通过心跳检测、网络探测等方式实现。
当检测到主节点故障后,备用节点会接管主节点的功能,并成为新的主节点。
二、自动切换与手动切换RAC Failover可以分为自动切换和手动切换两种方式。
自动切换是指在主节点故障后,备用节点自动接管主节点的功能,不需要人工干预。
手动切换是指需要管理员手动触发切换操作,将备用节点切换为新的主节点。
三、冷备与热备RAC Failover的实现方式还可以根据备用节点的状态分为冷备和热备。
冷备是指备用节点处于关闭状态,当主节点故障时,需要启动备用节点并接管主节点的功能。
热备是指备用节点处于运行状态,可以即时接管主节点的功能。
四、故障恢复与数据同步RAC Failover的实现还需要考虑故障恢复和数据同步的问题。
故障恢复是指在主节点故障后,系统能够迅速恢复到正常运行状态。
数据同步是指在主节点故障前后,数据的一致性和完整性得到保证。
为了实现故障恢复和数据同步,可以使用数据复制、日志传输等技术手段。
五、负载均衡与高可用性RAC Failover的实现不仅可以提供高可用性,还可以实现负载均衡。
在RAC架构中,多个节点可以同时提供数据库服务,分担系统负载。
当主节点故障时,备用节点能够接管主节点的功能,保证系统的连续运行,同时还能够继续处理用户的请求,实现负载均衡。
六、故障切换的影响与性能优化RAC Failover的实现会对系统的性能产生一定的影响。
Oracle DataGuard简介Oracle DataGuard是Oracle自带的数据同步功能,基本原理是将日志文件从原数据库传输到目标数据库,然后在目标数据库上应用这些日志文件,从而使目标数据库与源数据库保持同步,是一种数据库级别的高可用性方案。
DataGuard可以提供Oracle数据库的冗灾、数据保护、故障恢复等,实现数据库快速切换与灾难性恢复。
在生产数据库的保证"事务一致性"时,使用生产库的物理全备份创建备库,备库会通过生产库传输过来的归档日志或重做条目自动维护备用数据库。
DataGuard数据同步技术有以下优势:1)Oracle数据库自身内置的功能,与每个Oracle新版本的新特性都完全兼容,且不需要另外付费。
2)配置管理较简单,不需要熟悉其他第三方的软件产品。
3)物理Standby数据库支持任何类型的数据对象和数据类型;4)逻辑Standby数据库处于打开状态,可以在保持数据同步的同时执行查询等操作。
5)在最大保护模式下,可确保数据的零丢失。
一、架构Oracle DataGuard由一个primary数据库(生产数据库)及一个或多个standby数据库(最多9个)组成。
组成Data Guard的数据库通过Oracle Net连接,并且有可以分布于不同地域。
只要各库之间可以相互通信,它们的物理位置并没有什么限制,不受操作系统的限制。
1.Primary 数据库DataGuard包含一个primary数据库即被大部分应用访问的生产数据库,该库既可以是单实例数据库,也可以是RAC。
2.Standby 数据库Standby数据库是primary数据库的复制(事务上一致)。
在同一个Data Guard中可以最多创建9个standby数据库。
一旦创建完成,Data Guard通过应用primary数据库的redo 自动维护每一个standby数据库。
Standby数据库同样即可以是单实例数据库,也可以是RAC结构。
防火墙故障切换一、实验拓扑二、知识了解第一个:Failover 线,又叫心跳线,是一条故障切换线;参与failover 的防火墙通过这条线决定本身的状态,即选举主备或在主设备发生故障时,次设备成为主设备继续提供安全服务;可以是一条专用Cable 或LAN 线;传递配置信息和检测信息,以及状态信息。
第二个;Statful failover 线,又叫状态线;时刻传递状态信息从主到次;接该线的接口必须大于等于用户数据接口的速率(inside 、outside 接口);可以使用一个专用以太接口或共享LAN-base 的Failover 线,也可以共享用户但不建议。
第三个;Failover 组网拓扑(方式):基于Cable 、基于LAN ;基于Cable :专用线缆,仅限于PIX ,ASA 不支持;专用的Cable 线能快速检测对等体电源失效;备份设备不用配置,不占有以太接口;防火墙内外口、DMZ 区各占用一个子网;主备关系由电缆决定;Primary 和Secondary ;限制,Cable 线只有6Feet ;拷贝速度慢,115Kb/s ;基于LAN :使用以太网互联传递Failover 信息;配置信息等;为了Failover 线是活动的,需要在防火墙间加交换机;禁用交换机的DTP 、PAGP 等协议,手工配置access 、portfast 等;切换时,Failover 线不交换IP 、MAC ;距离不受限制;但是交换机容易单点故障;第四个:Failover 工作模式 :A/S 主备、A/A 负载均衡;强制切换为主Failover activeA/S 主备特点:一台设备为主,另外一台为备份;同时只有一台防火墙处理用户数据;主设备发生故障时,次设备成为主设备并接管原主设备的所有接口Ip 地址和MAC 地址;对于用户来说,整个切换是透明的。
A/A 负载均衡:两台防火墙同时都处理用户数据,把每台防火墙划分为两个虚拟防火墙,分Fa0/0Fa0/1Fa0/3Fa0/0别挑选出一个Context组成failover 组,共两组;每个组挑出一个Active防火墙,Active设备,Active设备分别属于不同物理防火墙;standby设备成为Active 设备时接管原active设备的接口IP地址和MAC地址;对于用户来说,整个切换过程是透明的。
OracleRACfailover测试(连接时故障转移)Oracle RAC 集群最突出的表现就是高可用性,这些内容主要包括load balance以及failover,通过这些技术使得单点故障不影响客户端端应用程序对数据库的正常访问,以及通过创建service实现节点间负载均衡。
本文主要描述Oracle 10g rac环境下的Oracle failover测试。
下面是一些关于这方面的基础参考或相关链接:有关负监听配置,载均衡(load balance)以及Oracle service请参考ORACLE RAC 监听配置 (listener.ora tnsnames.ora)ORACLE RAC 下非缺省端口监听配置(listener.ora tnsnames.ora)Oracle RAC 客户端连接负载均衡(Load Balance)Oracle RAC 服务器端连接负载均衡(Load Balance)Oracle RAC 负载均衡测试(结合服务器端与客户端)Oracle RAC failover 测试(TAF方式)Oracle RAC failover 测试(Server TAF方式)1、Oracle failover的几种方式Oracle failover也叫故障转移,从Oracle 10g开始,分为3种方式:a. Client-Side Connect time Failover客户端连接failover模式,此方式较为简单,只要安装了rac集群,缺省情况下即被启用。
b. TAF透明故障转移,此方式同样基于客户端完成,需要配置客户端tnsnames.ora,连接故障发生时,无须重新连接c. Service-Side TAF服务器端透明故障转移,通过配置service来实现,客户端无须任何配置。
本文主要演示第一种情形,即客户端在发起连接请求时如何实现故障转移注意事项:不能在listener.ora 文件中设置GLOBAL_NAME该参数会禁用Connect-time Failover 和 Transparent Application Failover2、Client-Side Connect time Failover下面关于Client-Side Connect time Failover来自Oracle 的官方描述 ID 453293.1The connect-time failover enables clients to connect to another listener if the initial connection to the first listener fails. The number of listener protocol addresses determines how many listeners are tried. Withoutconnect-time failover, Oracle Net attempts a connection with only one listener. The default is on.Tnsnames Parameter: FAILOVER(failover=on) is default for ADDRESS_LISTs, DESCRIPTION_LISTs, and a set ofDESCRIPTIONs., therefore, you do not have to specify it explicitly.基于客户端的failover比较好理解。
F5负载均衡器双机切换触发机制及配置1 F5双机的切换触发机制1.1 F5双机的通信机制F5负载均衡器的主备机之间的心跳信息可以通过以下两种方式进行交互:●通过F5 failover 串口线交换心跳信息(电压信号不断地由一方送到另外一方)处于Standby的系统不断监控Failover上的电平,一旦发现电平降低,Standby Unit会立即变成Active,会发生切换(Failover)。
通过串口监控电平信号引起的切换可以在一秒中以内完成(大概200~300ms)。
四层交换机在系统启动的时候也会监控Failover线缆的电平以决定系统是处于Active状态还是Standby状态。
在串口Failover线缆上不传输任何数据信息。
●Failover线缆也可以不采用串口线,而直接采用网络线。
(但F5不建议这样做,因为网络层故障就可能会两台负载均衡器都处于Active状态)。
如果采用网络层监控实现Failover, Bigip将通过1027与1028端口交换心跳信息。
经验证明:两台F5之间一定要用failover cable连接起来,不连接failover cable而直接采用网络线连接在一起不可靠,而且造成了网上事故。
F5双机之间的数据信息是通过网络来完成的。
因此运行于HA方式的两台F5设备在网络层必须是相通的。
(可以用网线将两台F5设备直接相连起来,也可以通过其它的二层设备将两台F5设备相连,使F5设备在网络上可以连通对端的Failover IP地址)。
两台运行于HA方式的四层交换机之间通过网络层交互的信息主要包括:●用于配置同步的信息:通过手工执行config sync会引起Active到Standby系统的配置信息传输。
●用于在发生Failover时连接维持的信息:如果设置了Connection Mirroring,处于Active的四层交换机会将连接表每十秒中发送一次到Standby的系统。
1.容灾设计需要迸行故障切换的场景容灾设计过程当中需要考虑的故障切换的场景有很多,数据中心内部的高可用切换不在本次讨论范围之内,我们讨论的是容灾恢复过程中的关犍跨数据中心级的故障切换场景,从网络层到存储层都会涉及到,其主要涉及如下几个方面:①网络层故障切换(路由、DNS,交换机、负载均衡)・②应用服务计算展故障切换(应用APP).③数据库服务实例层故障切换(数据库InStanCe).④数据副本层故障切换(数据副本)・2.网络层的故障切换策略2.1网络流■路径分析如图所示,来自客户端的流量访问会分为两个过程:1.客户端需要获取到业务系统的地址信息.通过路由交换机找到域名解析设备得到业务地址信息.2.客户端利用获取地址和应用服务端口与应用服务建立S。
Cket连接,然后交互2.2域名解析层主中心故障场景切换策Bg省略掉中间的交换机设备信息,我们将通常的AA容灾架构的网络层抽象为上图所示框架.客户端保存两个DNS地址,根据网络线路的健康状况,由客户端操作系统选择第一步地址请求的DNS服务器地址,每个数据中心的DNS服务器一般会通过HA方式来避免设备的单点故障.同时DNS服务能够实现智能动态解析,也就是说它可以根据负载均衡(1.B)层的健原检测信息来判断解析结果是主数据中心地址还是备数据中心地址.对于1.B 展与物理应用(APP)孱的交互来讲,一股是以数据中心为界划分为两个不同的1.B资源池,相互不能在1.2网络层交互。
这里大家可能有一个问题:为什么不把1.B层规划为一个大的资源池,增加资源选择的灵活性(如下图)?α∣alO<^L T⅝ -------- D9-1.2-UHOmwH-j(⅛r<hl)(⅛r⅛⅝)(⅛F⅛⅜)(⅛r<H)其实从容灾的角度来看,相互独立的小集群1.B资源池和鹿数据中心的大集群1.B在容灾切换功能都是合格的,APP节点故障无论是在大集群和小集群架构下,都可以合理切换。
F a i l o v e rFailover是思科防火墙一种高可用技术,能在防火墙发生故障时数秒内转移配置到另一台设备,使网络保持畅通,达到设备级冗余的目的。
原理前提需要两台设备型号一样(型号、内存、接口等),通过一条链路连接到对端(这个连接也叫)。
该技术用到的两台设备分为Active设备(Primary)和Stanby设备(Secondary),这种冗余也可以叫AS模式。
活跃机器处于在线工作状态,备用处于实时监控活跃设备是否正常。
当主用设备发生故障后(接口down,设备断电),备用设备可及时替换,替换为Avtive的角色。
Failover启用后,Primary 设备会同步配置文件文件到Secondary设备,这个时候也不能在Scondary添加配置,配置必须在Active进行。
远程管理Failover设备时,登录的始终是active设备这一点一定要注意,可以通过命令(show failover)查看当时所登录的物理机器。
目前启用failover技术不是所有状态化信息都可以同步,比如NAT转换需要再次建立。
配置Active设备:interface Ethernet0nameif outsidesecurity-level 0interface Ethernet1nameif insidesecurity-level 100ASA1(config)# failover lan unit primary //指定设备的角色主ASA1(config)# failover lan interface failover Ethernet2 //Failover接口名,可自定义ASA1(config)# failover link Fover Ethernet2//状态信息同步接口ASA1(config)# f //配置Failover IP地址,该网段可使用私网地址ASA1(config)# failover lan key xxxx //配置Failover 认证对端ASA1(config)# failover //启用Failover;注意,此命令一定要先在Active上输入,否则会引起配置拷错;将一个接口指定为failover 接口后,再show inter 的时候,该接口就显示为:interface Ethernet3description LAN Failover Interface //确保接口up配置standby设备:ASA2(config)# inte Ethernet3ASA2(configif)# no shutdownASA2(configif)# exitASA2(config)# failover lan unit secondaryASA2(config)# failover lan interface failover Ethernet03ASA1(config)# failover link Fover Ethernet2ASA2(config)#byASA2(config)# failover key xxxxASA2(config)# failover //先在Active设备运行此命令两台设备同步信息后,配置只能在Active进行,备份设备hostname会和主设备相同。
failover:RAC环境的物理STANDBY的FAILOVER切换切换疯狂代码 / ĵ:http://DataBase/Article20602.html物理STANDBYFAILOVER般发生在主库出现故障且短时间内无法恢复情况这是STANDBY数据库真正发挥作用时候切换后物理STANDBY切换为PRIMARY数据库原来PRIMARY数据库即使恢复的后也和新PRIMARY数据库没有关系这篇描述RAC环境数据库FAILOVER切换到个单例子数据库DATA GUARD物理STANDBY FAILOVER切换:/post/468/423789这个RAC环境到单例子STANDBY配置已经运行了段时间了但是今天由于RAC环境添加了新表空间而单例子STANDBY数据库所在服务器上已经没有足够空间来存放新数据文件了导致应用归档日志时出现了信息为1111 SQL> startup mountORACLE 例程已经启动Total Global Area 2147483648 sFixed Size 2031480 sVariable Size 520093832 sDatabase Buffers 1610612736 sRedo Buffers 14745600 s数据库装载完毕SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION; 数据库已更改SQL> SELECT ERROR_CODE, MESSAGE FROM V$DATAGUARD_STATUS2 ORDER BY TIMESTAMP;ERROR_CODE MESSAGE---------- ----------------------------------------------------------------------0 ARC0: Archival started0 ARC1: Archival started0 ARC0: Becoming the 'no FAL' ARCH0 ARC0: Becoming the 'no SRL' ARCH0 ARC1: Becoming the heartbeat ARCH0 Attempt to start background Managed Standby Recovery process0 MRP0: Background Managed Standby Recovery process started0 Managed Standby Recovery not using Real Time Apply1111 MRP0: Background Media Recovery terminated with error 11110 MRP0: Background Media Recovery process shutdown已选择10行检查alert文件可以看到下面:Attempt to start background Managed Standby Recovery process (testrac_standby)MRP0 started with pid=18, OS id=27195Fri Sep 26 14:47:54 2008MRP0: Background Managed Standby Recovery process started (testrac_standby)Managed Standby Recovery not using Real Time ApplyMRP0: Background Media Recovery terminated with error 1111Fri Sep 26 14:47:59 2008Errors in file /data/oracle/admin/testrac/bdump/testrac_standby_mrp0_27195.trc:ORA-01111: name for data file 16 is unknown - rename to correct fileORA-01110: data file 16: '/data/oracle/product/10.2/database/dbs/UNNAMED00016'ORA-01157: cannot identy/lock data file 16 - see DBWR trace fileORA-01111: name for data file 16 is unknown - rename to correct fileORA-01110: data file 16: '/data/oracle/product/10.2/database/dbs/UNNAMED00016'Fri Sep 26 14:47:59 2008Errors in file /data/oracle/admin/testrac/bdump/testrac_standby_mrp0_27195.trc:ORA-01111: name for data file 16 is unknown - rename to correct fileORA-01110: data file 16: '/data/oracle/product/10.2/database/dbs/UNNAMED00016'ORA-01157: cannot identy/lock data file 16 - see DBWR trace fileORA-01111: name for data file 16 is unknown - rename to correct fileORA-01110: data file 16: '/data/oracle/product/10.2/database/dbs/UNNAMED00016'Fri Sep 26 14:47:59 2008MRP0: Background Media Recovery process shutdown (testrac_standby)虽然当前问题很容易解决但是随后添加大量数据文件在当前服务器上是无法存放因此直接将STANDBY数据库执行FAILOVER操作使得当前数据库脱离PRIMARY数据库成为独立数据库般进行FAILOVER时候应该尽可能应用日志不过当前不需要这个操作可以直接对数据库进行FAILOVER切换: SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH;ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH*第 1 行出现:ORA-00283: 恢复会话因而取消ORA-01111: 数据文件 16 名称未知 - 请重命名以更正文件ORA-01110: 数据文件 16: '/data/oracle/product/10.2/database/dbs/UNNAMED00016'ORA-01157: 无法标识/锁定数据文件 16 - 请参阅 DBWR 跟踪文件ORA-01111: 数据文件 16 名称未知 - 请重命名以更正文件ORA-01110: 数据文件 16: '/data/oracle/product/10.2/database/dbs/UNNAMED00016'看来alert文件中出现还是要解决:SQL> SELECT TABLESPACE_NAME, FILE_NAME FROM DBA_DATA_FILES2 WHERE FILE_ID = 16;TABLESPACE_NAME FILE_NAME------------------------------ ------------------------------------------------------------CENTER +DISK/testrac/datafile/center01.dbf在PRIMARY数据库查询FILE_ID为16数据文件名称在本地找到对应数据文件名称后:SQL> SHOW PARAMETER STANDBY_FILENAME TYPE VALUE------------------------------------ ----------- ------------------------------standby_file_management AUTOSQL> ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT = 'MANUAL';系统已更改SQL> ALTER DATABASE RENAME FILE '/data/oracle/product/10.2/database/dbs/UNNAMED00016' 2 TO '/data1/oradata/testrac/TESTRAC_STANDBY/datafile/o1_mf_center_4fq77tnx_.dbf';数据库已更改SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH;ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH*第 1 行出现:ORA-00283: 恢复会话因而取消ORA-01110: 数据文件 16:'/data1/oradata/testrac/TESTRAC_STANDBY/datafile/o1_mf_center_4fq77tnx_.dbf'ORA-01122: 数据库文件 16 验证失败ORA-01110: 数据文件 16:'/data1/oradata/testrac/TESTRAC_STANDBY/datafile/o1_mf_center_4fq77tnx_.dbf'ORA-01205: 不是数据文件 - 头部类型编号是 0看来虽然操作系统中包含了这个文件但是文件创建还是有问题需要通过CREATE DATAFILE方式重建下: SQL> ALTER DATABASE CREATE DATAFILE'/data1/oradata/testrac/TESTRAC_STANDBY/datafile/o1_mf_center_4fq77tnx_.dbf';数据库已更改下面再次执行FINISH命令:SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH;ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH*第 1 行出现:ORA-00283: 恢复会话因而取消ORA-01274: 无法添加数据文件 '+DISK/testrac/datafile/center02.dbf' - 无法创建文件SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH NOWAIT;ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH NOWAIT*第 1 行出现:ORA-00283: 恢复会话因而取消ORA-01111: 数据文件 18 名称未知 - 请重命名以更正文件ORA-01110: 数据文件 18: '/data/oracle/product/10.2/database/dbs/UNNAMED00018'ORA-01157: 无法标识/锁定数据文件 18 - 请参阅 DBWR 跟踪文件ORA-01111: 数据文件 18 名称未知 - 请重命名以更正文件ORA-01110: 数据文件 18: '/data/oracle/product/10.2/database/dbs/UNNAMED00018'由于开始没有指定NOWAIT导致STANDBY应用日志时候又创建出个数据文件而且针对这个数据文件在本地上还没有创建出对应操作系统文件所以无论是RENAME还是CREATE DATAFILE都会报错:SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH;ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH*第 1 行出现:ORA-00283: 恢复会话因而取消ORA-01274: 无法添加数据文件 '+DISK/testrac/datafile/center02.dbf' - 无法创建文件SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH NOWAIT;ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH NOWAIT*第 1 行出现:ORA-00283: 恢复会话因而取消ORA-01111: 数据文件 18 名称未知 - 请重命名以更正文件ORA-01110: 数据文件 18: '/data/oracle/product/10.2/database/dbs/UNNAMED00018'ORA-01157: 无法标识/锁定数据文件 18 - 请参阅 DBWR 跟踪文件ORA-01111: 数据文件 18 名称未知 - 请重命名以更正文件ORA-01110: 数据文件 18: '/data/oracle/product/10.2/database/dbs/UNNAMED00018'在操作系统执行拷贝操作创建出个合适大小文件:bash-2.03$ cp o1_mf_center_4fq77tnx_.dbf /data1/oradata/testrac/center02.dbf下面再次进行RENAME操作:SQL> ALTER DATABASE RENAME FILE '/data/oracle/product/10.2/database/dbs/UNNAMED00018'2 TO '/data1/oradata/testrac/center02.dbf';数据库已更改SQL> ALTER DATABASE CREATE DATAFILE '/data1/oradata/testrac/center02.dbf';数据库已更改SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH NOWAIT;ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH NOWAIT*第 1 行出现:ORA-00283: 恢复会话因而取消ORA-16171: 由于线程 1, 序列 721-721 间隔, 因此不允许使用 RECOVER...FINISH这个是由于怕Oracle继续在STANDBY上添加表空间而将所有日志转移到其他位置下面将所需日志拷贝到所需位置SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH NOWAIT;ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH NOWAIT*第 1 行出现:ORA-00283: 恢复会话因而取消ORA-16173: 活动归档网络连接不兼容这个是由于主库到本地归档仍然在继续在主库取消LOG_ARCHIVE_DEST设置:SQL> alter system log_archive_dest_2 = '';系统已更改再次出现该死添加数据文件:SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH NOWAIT;ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH NOWAIT*第 1 行出现:ORA-00283: 恢复会话因而取消ORA-01274: 无法添加数据文件 '+DISK/testrac/datafile/center03.dbf' - 无法创建文件由于空间实在不足只好拷贝个控制文件作为假数据文件然后RENAME FILE删除这个新增文件:SQL> ALTER DATABASE RENAME FILE '/data/oracle/product/10.2/database/dbs/UNNAMED00019' 2* TO '/data1/oradata/testrac/center03.dbf';数据库已更改SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH NOWAIT;ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH NOWAIT*第 1 行出现:ORA-00283: 恢复会话因而取消ORA-01110: 数据文件 19: '/data1/oradata/testrac/center03.dbf'ORA-01122: 数据库文件 19 验证失败ORA-01110: 数据文件 19: '/data1/oradata/testrac/center03.dbf'ORA-01251: 读取了文件号 19 未知文件头部版本SQL> alter database datafile '/data1/oradata/testrac/center03.dbf' offline;alter database datafile '/data1/oradata/testrac/center03.dbf' offline*第 1 行出现:ORA-01668: 对于数据文件脱机, 备用数据库要求使用 DROP 选项SQL> alter database datafile '/data1/oradata/testrac/center03.dbf' offline drop;数据库已更改依次处理后续所有新增数据文件SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH FORCE;ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH FORCE*第 1 行出现:ORA-00283: 恢复会话因而取消ORA-16171: 由于线程 1, 序列 724-724 间隔, 因此不允许使用 RECOVER...FINISH查询了METALINK没有发现有关ORA-16171有价值描述如果FAILOVER应为存在GAP就无法执行切换那么FAILOVER价值何在呢假如主库数据库出现了损毁STANDBY数据库难道就没有办法直接打开吗Oracle在这里实现看来有还定问题看来常规办法是不能解决了下面尝试通过重建控制文件方式将当前数据库直接做为PRIMARY数据库打开 SQL> SELECT DATABASE_ROLE FROM V$DATABASE;DATABASE_ROLE----------------PHYSICAL STANDBY备份控制文件到trace:SQL> ALTER DATABASE BACKUP CONTROLFILE TO TRACE;数据库已更改通过备份控制文件脚本重建控制文件:SQL> SHUTDOWN IMMEDIATEORA-01109: 数据库未打开已经卸载数据库ORACLE 例程已经关闭SQL> STARTUP NOMOUNTORACLE 例程已经启动Total Global Area 2147483648 sFixed Size 2031480 sVariable Size 520093832 sDatabase Buffers 1610612736 sRedo Buffers 14745600 sSQL> CREATE CONTROLFILE REUSE DATABASE "TESTRAC" RESETLOGS FORCE LOGGING ARCHIVELOG2 MAXLOGFILES 1923 MAXLOGMEMBERS 34 MAXDATAFILES 10245 MAXINSTANCES 326 MAXLOGHISTORY 29207 LOGFILE8 GROUP 1 '/export/home/oracle/oradata/testrac/group_1.258.618591139' SIZE 512M,9 GROUP 2 '/export/home/oracle/oradata/testrac/group_2.260.618591151' SIZE 512M10 -- STANDBY LOGFILE11 DATAFILE12 '/data1/oradata/testrac/system.262.618591167',13 '/data1/oradata/testrac/undotbs1.263.618591197',14 '/data1/oradata/testrac/sysaux.264.618591225',15 '/data1/oradata/testrac/undotbs2.266.618591249',16 '/data1/oradata/testrac/users.267.618591279',17 '/export/home/oracle/oradata/testrac/zhejiang01.dbf',18 '/export/home/oracle/oradata/testrac/zhejiang02.dbf',19 '/data1/oradata/testrac/nd01.dbf',20 '/export/home/oracle/oradata/testrac/zhejiang03.dbf',21 '/data1/oradata/testrac/ndindex01.dbf',22 '/export/home/oracle/oradata/testrac/zhejiang04.dbf',23 '/data1/oradata/testrac/zhejiang05.dbf',24 '/data/oradata/testrac/lt_index_ts01.dbf',25 '/opt/oracle/oradata/testrac/zhejiang06.dbf',26 '/data1/oradata/testrac/gpo.367.624623443',27 '/data1/oradata/testrac/TESTRAC_STANDBY/datafile/o1_mf_center_4fq77tnx_.dbf',28 '/data1/oradata/testrac/center02.dbf',29 '/data1/oradata/testrac/center03.dbf',30 '/data1/oradata/testrac/center04.dbf',31 '/data1/oradata/testrac/center05.dbf',32 '/data1/oradata/testrac/center06.dbf',33 '/data1/oradata/testrac/center07.dbf',34 '/data1/oradata/testrac/center08.dbf',35 '/data1/oradata/testrac/center09.dbf',36 '/data1/oradata/testrac/center10.dbf',37 '/data1/oradata/testrac/center11.dbf'38 CHARACTER SET ZHS16GBK39 ;CREATE CONTROLFILE REUSE DATABASE "TESTRAC" RESETLOGS FORCE LOGGING ARCHIVELOG *第 1 行出现:ORA-01503: CREATE CONTROLFILE ??ORA-01160: ???? data fileORA-01110: ???? : '/data1/oradata/testrac/center03.dbf'SQL> CREATE CONTROLFILE REUSE DATABASE "TESTRAC" RESETLOGS FORCE LOGGING ARCHIVELOG2 MAXLOGFILES 1923 MAXLOGMEMBERS 34 MAXDATAFILES 10245 MAXINSTANCES 326 MAXLOGHISTORY 29207 LOGFILE8 GROUP 1 '/export/home/oracle/oradata/testrac/group_1.258.618591139' SIZE 512M,9 GROUP 2 '/export/home/oracle/oradata/testrac/group_2.260.618591151' SIZE 512M10 -- STANDBY LOGFILE11 DATAFILE12 '/data1/oradata/testrac/system.262.618591167',13 '/data1/oradata/testrac/undotbs1.263.618591197',14 '/data1/oradata/testrac/sysaux.264.618591225',15 '/data1/oradata/testrac/undotbs2.266.618591249',16 '/data1/oradata/testrac/users.267.618591279',17 '/export/home/oracle/oradata/testrac/zhejiang01.dbf',18 '/export/home/oracle/oradata/testrac/zhejiang02.dbf',19 '/data1/oradata/testrac/nd01.dbf',20 '/export/home/oracle/oradata/testrac/zhejiang03.dbf',21 '/data1/oradata/testrac/ndindex01.dbf',22 '/export/home/oracle/oradata/testrac/zhejiang04.dbf',23 '/data1/oradata/testrac/zhejiang05.dbf',24 '/data/oradata/testrac/lt_index_ts01.dbf',25 '/opt/oracle/oradata/testrac/zhejiang06.dbf',26 '/data1/oradata/testrac/gpo.367.624623443',27 '/data1/oradata/testrac/TESTRAC_STANDBY/datafile/o1_mf_center_4fq77tnx_.dbf',28 '/data1/oradata/testrac/center02.dbf'29 CHARACTER SET ZHS16GBK30 ;控制文件已创建SQL> RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL CANCELORA-00279: ?? 7947644359 (? 07/27/2008 06:23:00 ??) ???? 1 ????ORA-00289: ??: /data1/archivelog1_724_626291662.dbfORA-00280: ?? 7947644359 (???? 1) ??? #724 ?指定日志: {<RET>=suggested | filename | AUTO | CANCEL}CANCEL介质恢复已取消SQL> ALTER DATABASE ADD LOGFILE THREAD 22 GROUP3 '/export/home/oracle/oradata/testrac/group_3.268.618595573' SIZE 512M REUSE,3 GROUP4 '/export/home/oracle/oradata/testrac/group_4.270.618595587' SIZE 512M REUSE;数据库已更改SQL> ALTER DATABASE OPEN RESETLOGS;数据库已更改SQL> ALTER TABLESPACE TEMP ADD TEMPFILE'/data1/oradata/testrac/TESTRAC_STANDBY/datafile/o1_mf_temp_3mtmrs33_.tmp' REUSE;表空间已更改SQL> SELECT NAME, DATABASE_ROLE FROM V$DATABASE;NAME DATABASE_ROLE--------- ----------------TESTRAC PRIMARY既然center03.dbf开始数据文件都有问题导致控制文件无法创建干脆直接从控制文件中去掉反正这些文件也是被OFFLINE DROP执行RECOVER后OPEN RESETLOGS打开这样STANDBY数据库就人为被切换为PRIMARY模式了 2009-2-12 3:32:30疯狂代码 /。