oraclefaq(oracletaf的配置)

如需转载,请注明出处!(刁馋在此先谢过了……) oracle taf的配置 taf为transparent application failover的缩写,一般应用taf都是在ops/rac环境中。从8i开始有的这一功能,目的和想法都是很好的,但目前应用还很有限,本文将针对taf相关问题作个详细探讨。 本文的测试环境是tru64 v5.1+ oracle9.2.0.1 rac。 一、相关参数的说明 说实话oracle关于网络的几个配置参数真的是太乱了,很多人都弄不清到底是怎么回事,常见的错误为: “ora-12514 :tns:listener could not resolve service_name given in connect descriptor” 和 “ora-12154 :tns: could not resolve service name” 实质都是一样的,要解决这样的问题需要我们弄情几个参数: initsid.ora中的几个参数: db_name — database name,即建数据库时所提供的名称。 global_names — true/false,设定是否使用数据库域名。 db_domain — 数据库域名,如果global_names=true则要求提供这个参数。 service_names — service names list,服务名称,可以有多个。 instance_name — instance name,和service_names一样从817开始支持,即从817开始可以将数据库、实例和服务名称分开。默认instance_name的值为instance的sid,即环境变量oracle_sid所对应的值。在817以前没有instance_name参数时,不同的instance是以sid来区分的。按照oracle817以后的文档解释:sid是为了区别同一主机上各instance的共享内存,并不是instance的唯一区别标示,而instance_name则是区别各个instance的。 环境变量: oracle_sid — 在817以前没有instance_name参数时,不同的instance是以sid来区分的(详细说明见上面的initsid.ora参数解释)。 listener.ora中的几个参数: global_dbname — 全局数据库名称,在分布式环境中唯一确定不同的数据库。它的值为initsid.ora中db_name和db_domain的组合,即global_dbname=db_name.db_domain,其中db_domain如果没有设此处也就不需要了。这个参数在分布式环境中建议明确指定。 service_name — 服务名称,取initsid.ora中service_names list至一即可。 sid_name — 对应环境变量oracle_sid的值。 instance_name —对应初始化参数instance_name。 tnsnames.ora中的几个参数: service_name — 服务名称,取initsid.ora中service_names list至一即可。 sid_name — 可以简写成:sid,对应oracle_sid,也可以是初始化参数instance_name,当等于instance_name且instance_name不等于oracle_sid时,oracle会自动注册一个监听进程,此用以区分不同的instance。 instance_name — 从817开始有了这个新的参数可以使用,对应初始化参数instance_name。 这样一来,参数就很复杂了,不过我们实际使用并不会用当然十月简单越好了。 二、相关参数设置 下面我将举例说明相关参数的设置: 1、环境变量:oracle_s” 3、listener.ora: sid_list_rac1 = (sid_list = (sid_desc = (global_dbname = ora92) (oracle_home = /oracle/oracle9/app/oracle/product/9.2.0) (service_name=ora92)(sid_name = rac1) ) ) sid_list_rac2 = (sid_list = (sid_desc = (global_dbname = ora92) (oracle_home = /oracle/oracle9/app/oracle/product/9.2.0) (service_name=ora92)(sid_name = rac2) ) ) rac1 = (description_list = (description = (address_list = (address = (protocol = tcp)(host = 10.1.3.1)(port = 1522)) ) ) ) rac2 = (description_list = (description = (address_list = (address = (protocol = tcp)(host = 10.1.3.2)(port = 1522)) ) ) ) 三、taf的设置 其实taf设置很简单,在tnsnames.ora中添加failover=on即可,有两种不同的设置方法: 1、公用一个tns name方式:================================================== myrac = (description= (load_balance=on) (failover=on) (address= (protocol=tcp)(host=10.1.3.1)(port=1522)) (address= (protocol=tcp)(host=10.1.3.2)(port=1522)) (connect_data= (service_name=ora92) (failover_mode=(type=select)(method=basic)(retries=20)(delay=20)) ) ) ========================================================================== 2、指明instance backup方式:=============================================== rac1 = (description= (load_balance=on) (failover=on) (address= (protocol=tcp)(host=10.1.3.1)(port=1522)) (connect_data= (service_name=ora92) (failover_mode=(type=select)(method=basic) (backup=rac2)(retries=20)(delay=20)) ) ) rac2 = (description= (load_balance=on) (failover=on) (address= (protocol=tcp)(host=10.1.3.2)(port=1522)) (connect_data= (service_name=ora92) (failover_mode=(type=select)(method=basic) (backup=rac1)(retries=20)(delay=20)) ) ) ========================================================================== 四、taf测试方法 一般可以将当前连接的instance down下来,client端将不会断开,并自动切换到backup节点上。相反也会自动切换回来。 当然也有人提出用post_transaction的方式来测试taf,其实这样有时是得不到预期结果的,原因在于oracle连接到一个instance上后,此后它会优先尝试对该instance的连接,当你disconnect后,client端一有新的请求就会自动尝试对最近连接的instance进行连接,如果不成功才会尝试对backup instance进行连接。

http://www.bkjia.com/phpjc/532288.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/532288.htmltecharticle如需转载,请注明出处!(刁馋在此先谢过了……) oracle taf的配置 taf为transparent application failover的缩写,一般应用taf都是在ops/rac环境中。…

Posted in 未分类