oracle HA 高可用性详解(之一,client、server端服务详解):http://write.blog.csdn.net/postedit
我们已经看到TAF是的Oracle的会话能够自动重新连接,需要说明的是,这个能力是基于OCI的,是OCI的一个功能,JDBC Thin Driver无效,因为这种驱动不是构建在OCI库上的。
虽然这个功能发起于RAC,但TAF并不局限于RAC,单实例、DG环境都可以享受这个好处。Oralce声称其TAF能够保证用户会话自动的转移到另一个实例上。这一点确实是真的,但是是有水分的。为了深入理解TAF的能力,我们接下来做一个更精细的实验。
1. TAF和事务
在RAC环境下,可以有三种方式把一个用户会话迁移到另一个实例上,包括altersystem disconnect from session、shutdown、dbms_service包,这三种方式的后台机制和效果其实都是一致的,这三种方法可以把一个会话透明的或者说优雅的从一个实例迁移到另一个实例,对于这个会话来说,甚至感觉不到这种感觉迁移的发生。我们这个实验就用alter system的方法进行,这个命令的语法如下:
Altersystem disconnect session [post_transaction | immediate];
这个命令有两个选项,分别含义如下:
Post_transaction:意思是在事务提交之后再断开已有连接;
Immediate: 意思是立即断开连接;
(1) Resource(资源)
资源需要由CRS管理的实体叫做Resource。一般而言是指一个火一组进程。
(2) Resource Dependency(资源依赖性)
不同资源之间会有依赖关系,比如使用ASM作为存储的数据库而言,数据库实例就依赖与ASM实例。这种依赖关系体现在ASM实例必须先于数据库实例启动,必须等到数据库实例关闭之后才能关闭。而Resource Dependency就是用来说明这种关系的,通过REQUIRED_RESOURCES参数定义。
(3) Application Profile(应用描述文件)
Application Profile是一个文件,用来告诉CRS应该如何管理应用程序的。这个文件通过“属性=值“的格式来描述应用程序的属性,比如资源脚本、资源依赖性、资源检察频率等。在使用Oraclecluster HA时,第一步就是创建这个文件,但这个文件又是一个过渡文件,文件的内容最后要注册到OCR中。
(4) Action Program
Action Program是一个可执行文件,可以使二进制文件、更多的是SHELL脚本。Oracle Cluster HA架构就是通过这个脚本来完成启动、关闭、检查、转移资源工作的。这个脚本必须要能够接受处理start、stop、check这三个参数。
(5) OCR
在配置第三方应用的HA集群时,Application Profile的内容最后要注册到OCR中。Oracle Cluster住工作时是从OCR而不是Application Profile读取配置内容的。
(1) crs_profile
配置时有两个文件需要创建的,Application Profile和ActionProfile,前者是一个配置文件,后者是一个SHELL脚本。但实际上这两个文件都不需要手工创建,通过这个命令可以自动的创建,读者只需要在其基础上进行修改即可。
[root@felix1bin]# ./crs_profile -h
Usage: crs_profile -create resource_name -t application
[-dir directory_path] [-a action_script] [-B binary_pathname]
[-d description] [-h hosting_members] [-r required_resources]
[-l optional_resources] [-p placement_policy]
[-o as=auto_start,ci=check_interval,ft=failure_threshold,
fi=failure_interval,ra=restart_attempts,fd=failover_delay,
st=script_timeout,ap=active_placement,
ut=uptime_threshold,rt=start_timeout,pt=stop_timeout] [-f] [-q]
crs_profile -create resource_name -I template_file [-dir directory_path][-f] [-q]
crs_profile -delete resource_name [-dir directory_path] [-q]
crs_profile -print [resource_name [...]] [-dir directory_path] [-q]
crs_profile -template resource_name [-dir directory_path] [-Otemplate_file]
crs_profile -template -t application [-O template_file]
crs_profile -update resource_name [-dir directory_path] [option ...] [-ooption,...] [-q]
crs_profile -validate resource_name [-dir directory_path] [-q]
[root@felix1 bin]#