没有VIP时,Oracle客户端是靠“TCP/IP协议栈超时”来判断服务器故障。而TCP/IP协议栈是作为OS Kernel的一部分来实现,不同的OS有不同的阀值,用户获悉数据库异常的时间完全取决于OS Kernel的实现,虽然有些OS允许修改这个阀值,但是会对其它程序产生未知影响。因此,oracle RAC引入了VIP,从而避开对TCP协议栈超时的依赖。
VIP和IP最主要的不同之处在于:VIP是浮动的,而IP是固定的。在所有节点都正常运行时,每个节点的VIP会被分配到public NIC上;在linux下ifconfig查看,public网卡上是2个IP地址;如果一个节点宕机,这个节点的VIP会被转移到还在运行的节点上。也就是幸存的节点的public NIC这个网卡上,会有3个IP地址。
当一个节点宕机,这个节点真实IP就连接不上了,但是这个节点的虚拟IP是可以连接的,他会自动把客户端的连接请求转接给存活的节点。
在tnsname.ora文件里,指定Address列表,客户端会随机选择一个节点来连接数据库,而不是顺序选择的。
VIP特点:
1 VIP是在clusterware安装最后阶段,通过脚本VIPCA创建的;
2 VIP作为一个Nodeapps类型的CRS Resource注册到OCR中,并由CRS维护状态;
3 VIP会绑定到节点的public 网卡上;那么public网卡就有两个地址了;
4 当某个节点发生故障时,CRS会把故障节点的VIP转移到其他节点上;
5 每个节点的Listener会同时在public网卡的public IP和VIP两个地址上监听;
6 客户端的tnsname.ora一般会配置指向节点的VIP;
从上面第6条可以引出一个问题。如果增加一个节点,那么客户端的tnsname.ora需要加入新增节点的VIP。那么想象一下:多个客户端,增加多个节点,那么维护起来特别麻烦。因此到了Oracle11gR2,引入了一个scan的概念。
scan,single client access name。简单客户端连接名,这是一个唯一的名称,在整个公司网络内部唯一,并且在DNS中可以解析为三个ip地址,客户端连接的时候只需要知道这个名称,并连接即可, 每个SCAN VIP对应一个scan listener,cluster内部的service在每个scan listener上都有注册,scan listener接受客户端的请求,并foward到不同的Local listener中去,还是由local 的listener提供服务给客户端。
注意:scan不一定要resolve到三个ip,一个也够了。只不过为了防止scan单点故障而推荐3个。
两个都是服务IP,都可以对外提供服务。关于你说的网页的说法,是正确的。不过正常来说,既然是集群,像这些网页信息应该放在共享磁盘上面,不然做集群就没有意义了。vip漂移的情况有几种仅供参考:
1、vip手动切换
2、某一个节点不可用
3、手动执行资源分配
RAC里面的IP很多,有几个节点就有几个VIP。
SCAN_IP如果没有使用dns以及dhcp服务器,一般都只有一个。
你说的问题,最好详细将步骤以及输出列出来。
1、在PLSQL里,用sys(oracle系统用户)登陆,登陆的时候一定要选择SYSDBA。普通用户登陆选择normal;
2、在左边的菜单里找到Users节点,右击选择添加功能。在打开的界面里写上用户名、密码,默认表空间如果已经创建了表空间的话,选择相应的表空间,没有的一般选择users,临时表空间一般选择temp,概要文件选择default即可;
3、对象权限无需添加;
4、角色权限选择connect和resource,也可以选择dba,这样其他权限都不用给了,不过建议不要给dba权限,数据库权限太大了,容易导致数据安全隐患角色权限选择connect和resource即可。也可以选择dba,这样其他权限都不用给了,不过建议不要给dba权限,数据库权限太大了,容易导致数据安全隐患;
5、系统权限选择create any procedure、create any view、debug connect session、unlimited tablespace。debug connect session:调试存储过程测试,根据具体的情况设定;
6、限额无需改动;
7、最后点击应用保存即可。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)