Oracle Faq(Oracle TAF的配置)
如需转载,请注明出处!(刁馋在此先谢过了……)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_SID=rac1/2
2、initsid.ora:
db_name=ora92
service_names = ora92
instance_name=rac1/2
global_names=false
db_domain=""
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进行连接。
↓相关文章:
- · Oracle Faq(如何在ORACLE中更改表的列名和顺序 )
- · Oracle Faq(Oracle的字符集问题)
- · PHP 和 HTML
- · PHP安装问题
- · PHP 和 COM
- · 提问的智慧(2)
- · apache的几个设置(目录,权限等)
- · 用PHPdig打造属于你自己的Google
- · 利用PHP和AJAX创建RSS聚合器
- · PHP5的异常处理机制之使用throw关键字
- · AJAX在PHP中的简单使用
- · web开发中PHP+MySQL分页显示示例分析
- · 使用PHP编写基于Web的文件管理系统
- · Discuz论坛2.5 升级到PHP MySQL新版遇到的问题
- · 三招针对PHP木马攻击的易行防御之道
- · PHP程序漏洞产生的原因和防范方法
- · PHP取得当前插入数据库中记录的id值
- · php中关于处理字符串时效率的讨论
- · PHP+Access设计留言版实战
- · PHP实现的文件直接输出下载
- · PHP建立动态的WML站点
- · 简单站内HTML文件搜索程序
- · 自建Blog网站完全图解
- · phpMyAdmin2.6以上版本数据乱码问题
- · 关于PHP事件驱动问题之我见
- · PHP + BAT 制作PHP自解析批处理
- · [图片 显示] 缩图循环显示(php,mysql,script)
- · mysql 自动备份----aspbiz
- · PHP日常实用小Tips
- · Php应用实例--新增资料录到MySQL资料表
- · PHP-Push技术实现刷新功能 转载
- · 四种提示框代码
- · php 分析rss代码一段
- · 如何正确理解 PHP 的错误信息
- · 身份证方面的函数
- · Win XP下全新安装Apache2,PHP5,MYSQL5
- · linux下apache+mysql+php开发环境纯源代码编译搭建
- · RedhatAS3.0上安装Apache2+PHP5+MySQL+Resin+SSL+GD+weba
- · 给图片生成缩略图和加版权的类
- · 一段防盗连的PHP代码
- · 一个FTP树状目录(PHP)
- · 一个双向加密解密法(php)
- · PHP如何调用JAVA 类库
- · 用于测试php函数的代码
- · PHP4+PWS在Windows 9x下的安装和配置

