FCF和TAF是Oracle实现高可用的两种方式。请问他们的具体区别是什么?应用场景各是什么?
先谢谢各位!
先谢谢各位!
解决方案 »
- 求一条sql语句,按条件查询过期的客户信息
- oracle SQL遍历问题
- 专家级问题! Oracle中有没有象SQLSERVER那样的聚集索引?
- ORACLE是开源的么?
- 如何将本地的EXCEL导入到已经建好的表中呢?
- 这种查询怎么分类啊??
- 用pl/sql developer工具使用问题
- 一个简单的PL/SQL菜鸟问题
- 高分相送!如何用ASP取得存在BLOB字段中的图片,最好提供源码。
- 本地oracle, cmd命令行可以登录,可以写生sql查询,plsql无法登录,连接超时
- Exception in thread "main" java.sql.SQLException: ORA-00923: FROM keyword not fo
- 很纠结的问题
google 结果:
http://www.easyora.net/blog/rac_10g_study_catalog_4.html
RAC为应用提供了高性能和高可用的服务,对用户来讲,核心的功能便是failover与load banance.
(1)Failover
在10gR2版本里,Failover的实现方式有两种,一种是TAF(Transparent Application Failover), 一种是FCF(Fast Connection Failover).
TAF以及实现:
TAF是net层透明故障转移,是一种被动的故障转移方式, 依赖于VIP.可以通过客户端和服务器端配置taf的策略.
<1> client端taf配置
以下是一个简单的具有taf功能的tnsnames.ora 内容demo =
(DESCRIPTION =
(FAILOVER=ON)
(ADDRESS=(PROTOCOL=TCP)(HOST=10.194.129.145)(PORT=1521))
(ADDRESS=(PROTOCOL=TCP)(HOST=10.194.129.146)(PORT=1521))
(CONNECT_DATA =
(SERVICE_NAME = demo)
(SERVER=DEDICATED)
(FAILOVER_MODE=(TYPE=SELECT)
(METHOD=BASIC)
(RETRIES=50)
(DELAY=5)
)
))
控制TAF策略的参数说明:参数
描述
FAILOVER
Failover控制开关(on/off),如果为off,不提供故障切换功能,但连接时会对address列表进行依次尝试,直到找到可用为止
TYPE
两种类型:session /selectSession: 提供session级别的故障切换。Select:提供select级别的故障切换,切换过程对查询语句透明,但事物类处理需要回滚操作
METHOD
两种类型:basic/preconnectBasic:client同时只连接一个节点,故障切换时跳转到另外节点Preconnect:需要与backup同时使用,client同时连接到主节点和backup节点
BACKUP
采用Preconnect模式的备用连接配置
RETRIES
故障切换时重试次数
DELAY
故障切换时重试间隔时间
<2> Server端TAF配置
10gR2提供Server端的TAF配置,需要调用dbms_service包来在实例上进行修改。SQL> exec dbms_service.modify_service(service_name => ‘DEMO’,failover_method => ‘BASIC’,failover_type => ‘SELECT’,failover_retries => 180,failover_delay => 5); 客户端连接字符串修改成如下即可:demo =
(DESCRIPTION =
(ADDRESS=(PROTOCOL=TCP)(HOST=10.194.129.145)(PORT=1521))
(ADDRESS=(PROTOCOL=TCP)(HOST=10.194.129.146)(PORT=1521))
(CONNECT_DATA =
(SERVICE_NAME = demo)
(SERVER=DEDICATED)
)
) FCF及实现
FCF是10g引进的一种新的failover机制,它依靠各节点的ons进程,通过广播FAN事件来获得各节点的运行情况,是一种前摄性的判断,支持JDBC/OCI/ODP.NET
(1).ons配置
onsctl工具配置各节点的local /remote节点以及端口.配置文件路径:$ORACLE_HOME/opmn/ons.config.
使用 onsctl debug 跟踪ons进程是否正常运行。
(2).配置连接池(以jdbc为例)
需要连接池支持Implicit Connection Cache,设置FastConnectionFailoverEnabled=true.
将ojdbc14.jar / ons.jar等加入CLASSPATH.具体代码可以参见联机文档或metalink相关文档.
------------------------------------------------------------------------------
Blog: http://blog.csdn.net/tianlesoftware
网上资源: http://tianlesoftware.download.csdn.net
相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx
Q Q 群:62697716
看了搜索的结果以后有什么具体的疑问在来论坛上问
这样效果会好很多
基本原理不说了, 各位都了解了。
可以从ORACLE的版本看出,10G前的RAC只有client-side time failover和TAF以及Server TAF, 那Server TAF是SERVER端的,先不考虑。
TAF的想法当然这个愿景很完美, 但是只能支持select 情况下的cursor续传, 这样的话只能对read-only application有左右了. 这还不是最糟糕的。最关键的是切玩以后, 如果使用JAVA的话PrepareStatement会被kill, 原来的ResultSet也无法保证仍然是可用并且存在的. 个人认为这才是最关键的。 如果, 透明切换以后产生的数据和原来仍旧完全一样那还没问题,如果会带来新的问题, 情愿提示给用户ORA-17008错误然后快速重连.
这样至少保证了结果的完整和一致性.
而且FCF是 driver indepentent的.ORACLE 交流群: 30182689