zoukankan      html  css  js  c++  java
  • ORACLE 实例及RAC

    ORACLE 实例及RAC

    一、问题

    (1)现象

       部署一个sh脚本到生产oracle服务器上,该sh脚本负责读取外系统提供的txt文件,然后用sql loader入库,由oracle服务器的crontab定时调用这个sh脚本。脚本在测试库上测试非常正常,数据能正常入库,但是,生产上不能,报错,

    错误信息为:SQL*Loader-128: unable to begin a session
                    ORA-01034: ORACLE not available
                    ORA-27101: shared memory realm does not exist

    检查oracleORACLE_HOME等参数,发现正常。相同参数部署的其他sh脚本能在生产上正常运行。

     (2)分析

       测试环境是单数据库实例环境,生产的oracle,是RAC环境。RAC环境一般包含两台物理机器,一个存储。两个物理机器上每个机器部署一个oracle,同时访问存储上的数据库文件。两个实例拥有不同的SID。其他sh脚本能正常运行,是因为运行在正确的物理机器上。例如,如果有两台机器,sid分别为A机器为resdb1B机器为resdb2。如果脚本里面定义的SID=resdb1,运行脚本的机器为B,就会报错,运行脚本机器为A,则正常。以上错误是因为在错误的机器上运行了脚本导致的。

    (3)解决

       保持两者一致!根据脚本里面配置的sid,找到对应的机器运行脚本!

    二、ORACLE实例和RAC介绍

       

         ORACLE_SID:即ORACLE System IDentifier,它是一个环境变量,oracle 用来唯一地标识一个Oracle实例。在我们使用在sqlplus工具中startup启动数据库时,OS就是利用这个环境变量来fork创建构成Oracle实例的各个进程,以及来命名一些文件的名字

          Oracle实例:实例是指操作系统中一系列的进程和进程所分配的内存块。通俗的说,实例是访问数据库文件的通道。Oracle RAC 就是多个数据库实例可以同时打开相同的数据库,进行并发的操作。多实例数据库是 Oracle高可用架构和高可扩展性架构的核心技术, 多个实例同时打开数据库进行读写,可以避免某个实例故障导致的系统不可用,同时多实例实现负载分担,也可以减轻某个实例的工作负载,从而提高整体吞吐能力。

       RAC是一种充分利用服务器资源的高可用性实现方案,RAC的并行模式实现方式与传统的双机热备实现方式截然不同,如图:

       两个节点在传统的双机热备环境中,始终有一台机器作为备用机,只有当主节点出现问题的时候才会切换到备用机上;如果主机一直没有出现问题,那么备用机始终处于空闲状态,这在资源的利用上以及成本方面都是巨大的浪费。但RAC是一种并行模式的架构,也就是说,两个节点的集群节点间是一种并行运行的关系,当一台机器出现问题,请求会自动转发到另一台机器,没有任何一台机器作为备用机一直不被使用,这样就充分利用了服务器资源。同时,传统的双机热备构架在出现问题时,常常需要数分钟的切换时间,而RAC在出现问题时,针对存在的会话只需要数十秒的时间就可以完成失败切换过程,对新会话的创建不会产生影响,在切换时间上也有比较大的优势。

  • 相关阅读:
    Java-16 常用包装类
    Java-15 String类
    flask实现web端微信登录
    Flask-excel导出数据
    Java-14 单例模式
    Java-13 接口
    Java-12 抽象类
    结对项目:一个自动生成小学四则运算题目的命令行程序(c++)
    软工作业:第一次个人项目作业
    操作系统笔记一:操作系统引论
  • 原文地址:https://www.cnblogs.com/ironyoda/p/6053417.html
Copyright © 2011-2022 走看看