当前位置: 首页 > news >正文

11g rac配置scan ip

如果是从10g转战11g rac就会发现很多不同之处,其中一个比较大的改变就是在11g中有了一个新特性scan,其实这是一个简称,完整的名称为:SCAN(Single Client Access Name),但是单纯根据简称理解为scan似乎也能说得通。
在10g中我们一般是这么配置tns的。
racdb =

(DESCRIPTION =

  (ADDRESS= (PROTOCOL= TCP)(HOST=192.168.3.101)(PORT= 1521))

  (ADDRESS= (PROTOCOL= TCP)(HOST=192.168.3.201)(PORT= 1521))

  (LOAD_BALANCE = yes)

  (FAILOVER = ON)

   (CONNECT_DATA =

    (SERVER= DEDICATED)

     (SERVICE_NAME = racdb)

     (FAILOVER_MODE =

       (TYPE= SELECT)

       (METHOD= BASIC)

       (RETRIES = 30)

       (DELAY = 5))))

但是到了11g中,无须我们这样配置,查看tnsnames.ora里面就只有短短几行内容。

-bash-4.1$ cat tnsnames.ora
# tnsnames.ora Network Configuration File: /u04/app/11.2.0/db/product/11.2.0/dbhome_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.

RACDB =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = rac-scan)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = RACDB)
    )
  )

整个配置一下子没有了原来的那种高达上的感觉,一下感觉和单实例的数据库配置没有什么两样。
这个时候就会在数据库层面和客户端层面之间添加了一个虚拟的转换层,即我们所说的scan ip和scan ip listener
这个时候如果你去查看listener会发现多了一个scan相关的listener
-bash-4.1$ ps -ef|grep tns
root        13     2  0 07:02 ?        00:00:00 [netns]
grid      3086     1  0 07:17 ?        00:00:00 /u04/app/11.2.0/grid/bin/tnslsnr LISTENER -inherit
grid      3090     1  0 07:17 ?        00:00:00 /u04/app/11.2.0/grid/bin/tnslsnr LISTENER_SCAN1 -inherit
grid      3624  2377  0 07:32 pts/0    00:00:00 grep tns这个时候c客户端连接数据库的过程就会是下面的方式
客户端 -> scan listener -> local listener -> 对应的数据库实例
用图形显示就是下面的形式

这个解析的过程是一个动态处理的过程,比如我们也可以在这个基础上进行扩展,我们希望配备多个scan ip,也是支持的。

首先需要查看scan的状态
-bash-4.1$ lsnrctl status rac-scan

LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 16-AUG-2015 07:32:26

Copyright (c) 1991, 2011, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=))(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.3.100)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER_SCAN1
Version                   TNSLSNR for Linux: Version 11.2.0.3.0 - Production
Start Date                16-AUG-2015 07:17:10
Uptime                    0 days 0 hr. 15 min. 17 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u04/app/11.2.0/grid/network/admin/listener.ora
Listener Log File         /u04/app/11.2.0/grid/log/diag/tnslsnr/rac1/listener_scan1/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER_SCAN1)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.3.100)(PORT=1521)))
Services Summary...
Service "RACDB" has 2 instance(s).
  Instance "RACDB1", status READY, has 1 handler(s) for this service...
  Instance "RACDB2", status READY, has 1 handler(s) for this service...
Service "RACDBXDB" has 2 instance(s).
  Instance "RACDB1", status READY, has 1 handler(s) for this service...
  Instance "RACDB2", status READY, has 1 handler(s) for this service...
The command completed successfully

如果另外一个节点上没有对应的scan进程,会有一些区别。
-bash-4.1$ lsnrctl status rac-scan

LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 16-AUG-2015 07:32:10

Copyright (c) 1991, 2011, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=))(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.3.100)(PORT=1521)))
TNS-01189: The listener could not authenticate the user
我们来配置一下scan ip,使用srvctl config scan的方式可以得到当前的scan配置信息,可以了解到scan目前的一些状态,目前漂移在哪个节点上。

node1:
-bash-4.1$ srvctl config scan
SCAN name: rac-scan, Network: 1/192.168.3.0/255.255.255.0/eth0
SCAN VIP name: scan1, IP: /rac-scan/192.168.3.100

-bash-4.1$ srvctl status scan_listener
SCAN Listener LISTENER_SCAN1 is enabled
SCAN listener LISTENER_SCAN1 is running on node rac1

然后我们把scan_listener停掉,然后查看状态
-bash-4.1$ srvctl stop scan_listener
-bash-4.1$ srvctl status scan_listener
SCAN Listener LISTENER_SCAN1 is enabled
SCAN listener LISTENER_SCAN1 is not running
接下来我们就需要在/etc/hosts里面配置多个scan ip,比如我添加了192.168.3.110喝192.168.3.120这两个ip
/etc/hosts
192.168.3.100            rac-scan
192.168.3.110            rac-scan
192.168.3.120            rac-scan

然后使用srvctl modify的方式使其生效。
-bash-4.1$ srvctl modify scan -n rac-scan
PRCS-1034 : Failed to modify Single Client Access Name rac-scan
PRCR-1071 : Failed to register or update resource type ora.scan_vip.type
CRS-0245:  User doesn't have enough privilege to perform the operation
这个时候其实还是需要root权限才能操作的,切换一下使用root
-bash-4.1$ which srvctl
/u04/app/11.2.0/db/product/11.2.0/dbhome_1/bin/srvctl
-bash-4.1$ su - root
Password:
[root@rac1 ~]# /u04/app/11.2.0/db/product/11.2.0/dbhome_1/bin/srvctl   modify scan -n rac-scan
****ORACLE_HOME environment variable is not set.
    ORACLE_HOME should be set to the main
    directory that contains Oracle products.
    Set and export ORACLE_HOME, then re-run.
不过这个时候也不是一帆风顺,还是需要根据ORACLE_HOME来做修改,而且还是需要export的方式才可以。

[root@rac1 ~]# ORACLE_HOME=/u04/app/11.2.0/db/product/11.2.0/dbhome_1
[root@rac1 ~]#  /u04/app/11.2.0/db/product/11.2.0/dbhome_1/bin/srvctl   modify scan -n rac-scan
****ORACLE_HOME environment variable is not set.
    ORACLE_HOME should be set to the main
    directory that contains Oracle products.
    Set and export ORACLE_HOME, then re-run.
[root@rac1 ~]# export ORACLE_HOME=/u04/app/11.2.0/db/product/11.2.0/dbhome_1
[root@rac1 ~]# /u04/app/11.2.0/db/product/11.2.0/dbhome_1/bin/srvctl   modify scan -n rac-scan

[root@rac1 ~]# exit
logout
修改完成,我们查看scan ip的状态,就会发现多了另外两个ip
-bash-4.1$ srvctl config scan
SCAN name: rac-scan, Network: 1/192.168.3.0/255.255.255.0/eth0
SCAN VIP name: scan1, IP: /rac-scan/192.168.3.100
SCAN VIP name: scan2, IP: /rac-scan/192.168.3.110
SCAN VIP name: scan3, IP: /rac-scan/192.168.3.120
然后尝试启动scan_listener即可。
-bash-4.1$ srvctl start scan_listener

-bash-4.1$ srvctl start scan
PRCC-1014 : scan1 was already running
PRCR-1004 : Resource ora.scan1.vip is already running
PRCR-1079 : Failed to start resource ora.scan1.vip
CRS-5702: Resource 'ora.scan1.vip' is already running on 'rac2'
当然启动之后我们也需要验证,还是使用crs_stat来验证
-bash-4.1$ crs_stat -t|grep scan
ora.scan1.vip  ora....ip.type ONLINE    ONLINE    rac2       
ora.scan2.vip  ora....ip.type ONLINE    ONLINE    rac1       
ora.scan3.vip  ora....ip.type ONLINE    ONLINE    rac1
scan ip的配置就完成了,应该比预想的要简单一些吧。

相关文章:

  • jQuery属性,方法操作
  • 深入理解Linux内核-信号
  • 1.1JVM
  • 十进制转二进制
  • Android 工作随记
  • CRB and String
  • CoCoaPods
  • Nova 操作汇总(限 libvirt 虚机) [Nova Operations Summary]
  • Hexo 个人博客搭建
  • 2.4-Apache访问控制
  • Excel文档上传
  • kvm 安装 centos7 文本模式 分辨率 太高修改
  • Android中Activity和Fragment与Fragment和Fragment之前互相传值方法
  • 浅谈sql中的in与not in,exists与not exists的区别
  • 软件工程相关问题
  • ----------
  • JS 中的深拷贝与浅拷贝
  • [Vue CLI 3] 配置解析之 css.extract
  • 《剑指offer》分解让复杂问题更简单
  • const let
  • Java反射-动态类加载和重新加载
  • Laravel 菜鸟晋级之路
  • MQ框架的比较
  • mysql常用命令汇总
  • Xmanager 远程桌面 CentOS 7
  • 案例分享〡三拾众筹持续交付开发流程支撑创新业务
  • 从重复到重用
  • 理清楚Vue的结构
  • 力扣(LeetCode)56
  • 智能网联汽车信息安全
  • 中文输入法与React文本输入框的问题与解决方案
  • 【干货分享】dos命令大全
  • #include到底该写在哪
  • (windows2012共享文件夹和防火墙设置
  • (附源码)springboot社区居家养老互助服务管理平台 毕业设计 062027
  • (淘宝无限适配)手机端rem布局详解(转载非原创)
  • (转)Google的Objective-C编码规范
  • .bashrc在哪里,alias妙用
  • .form文件_一篇文章学会文件上传
  • .NET CORE 3.1 集成JWT鉴权和授权2
  • .NET 将多个程序集合并成单一程序集的 4+3 种方法
  • .NET 同步与异步 之 原子操作和自旋锁(Interlocked、SpinLock)(九)
  • .NET/C# 使用 ConditionalWeakTable 附加字段(CLR 版本的附加属性,也可用用来当作弱引用字典 WeakDictionary)
  • .net访问oracle数据库性能问题
  • .Net中ListT 泛型转成DataTable、DataSet
  • .sh
  • /dev/VolGroup00/LogVol00:unexpected inconsistency;run fsck manually
  • @column注解_MyBatis注解开发 -MyBatis(15)
  • @LoadBalanced 和 @RefreshScope 同时使用,负载均衡失效分析
  • @Transactional类内部访问失效原因详解
  • [ element-ui:table ] 设置table中某些行数据禁止被选中,通过selectable 定义方法解决
  • [2]十道算法题【Java实现】
  • [ACL2022] Text Smoothing: 一种在文本分类任务上的数据增强方法
  • [AIGC 大数据基础]hive浅谈
  • [Android]How to use FFmpeg to decode Android f...